For developers
You’re building an app that runs inside someone else’s Linkworld tenant — a per-tenant container that wakes on demand, exposes tools to the tenant’s agents, and talks to other apps via grants and wires.
Pick a starting point:
New here
Section titled “New here”- Quickstart — scaffold, run locally, deploy to the platform. Five minutes.
- Concepts — the mental model: manifest, scopes, lifecycle, trust boundaries.
- Install the CLI —
pip install linkworld, verify, configure.
Building
Section titled “Building”- Manifest reference — every field your
linkworld.app.yamlcan set. - Python SDK · TypeScript SDK ·
Browser bridge — handler signatures,
the
ctxAPI surface, error types. - lw-ui + components catalog — the CSS framework for in-app UIs.
- CLI reference —
init,dev,eval,chat,mcp.
Collaboration surfaces
Section titled “Collaboration surfaces”- Heartbeats — recurring agent routines with cheap pre-filters.
- Cross-app calls —
ctx.team.delegate(intra-app),ctx.apps.invoke(cross-app),ctx.events.emit(pub/sub). - Group rooms — humans + agents in one shared thread.
- Commitments — due-dated promises that surface in the inbox.
- Tutorial — cross-app lead handoff — two apps, the full collaboration stack end to end.
How-to guides
Section titled “How-to guides”- Capabilities — server-side surfaces, in-app UI, storage, identity, third-party APIs.
- Building app UIs · Right-side panel · Install settings — surfacing your app to the tenant.
- Workflow hooks · Lifecycle hooks · Recurring work — when your code runs.
- Secrets — the vault, dev defaults vs tenant overrides, rotation.
- MCP setup — connect Claude, ChatGPT, Cursor or Codex to your account: your company and its departments, your integrations, and in-editor scaffolding and validation.
- Best practices · Troubleshooting · FAQ.
Two SDKs, one contract
Section titled “Two SDKs, one contract”One CLI scaffolds both — it ships on PyPI and writes a Python or a TypeScript app depending on the flag.
pip install linkworld
linkworld init my-app --lang pythonlinkworld init my-app --lang typescriptSame manifest schema, same handler signatures, same ctx API
(ctx.tools, ctx.secrets, ctx.team, ctx.apps, ctx.events,
ctx.rooms, ctx.commitments, ctx.kv). Cross-SDK CI tests assert
they stay in lockstep.
What you can build
Section titled “What you can build”Inbound triage bots — Subscribe to a tenant’s email channel, classify with an LLM, drop a record into their ERP, ack the sender — all from one on_inbound handler.
Cron-driven assistants — Run a daily 07:30 prep digest, a weekly summary, an hourly poll — declarative cron in the manifest, one handler per schedule.
Tool extensions for the agent — Expose a custom tool the tenant’s chat agent can call. Your code runs in a per-tenant container, secrets stay in the platform vault.
Per-tenant integrations — Pull from the tenant’s connected services (M365, Odoo, Slack…) via ctx.tools.call(...) — scope checks, audit logs, and rate limits are handled for you.
Multi-agent collaborations — Ship a multi-department app — CMO + Researcher + Replier — that delegates internally and meets humans in group rooms.
Cross-app workflows — Marketing emits lead_qualified, Sales subscribes — bilateral grants + pub/sub wires you wire up in the workspace UI.
Which call goes where
Section titled “Which call goes where” Your code Linkworld platform ───────── ────────────────── linkworld.app.yaml ─────► Manifest v2 (validated) app.tool('classify') Tenant agent's tool registry app.onInbound(...) Inbound channel events app.onSchedule('daily', …) Cron dispatcher (1-min precision)
ctx.tools.call('email_send', {...}) ──► /api/mcp/app-tools ctx.secrets.get('OPENAI_KEY') ──► /api/mcp/app-secrets ctx.team.delegate('researcher', ...) ──► /api/mcp/agent-invoke (intra-app) ctx.apps.invoke('sales', 'bdr', ...) ──► /api/mcp/cross-app-invoke ctx.events.emit('lead_qualified', ...) ──► /api/mcp/events-emit ctx.rooms.post(room_id, ...) ──► /api/mcp/rooms-post ctx.commitments.add(...) ──► /api/mcp/commitments-addYour app runs in a per-(tenant, app, version) container that wakes on demand and sleeps after 15 minutes idle. The SDK handles the HTTP shape; you write handlers.
Working code
Section titled “Working code”Eight complete apps — manifests, handlers, in-app UI, eval suites —
are in the example apps repository. Start with
tax-classifier-py for the
smallest complete app, or
office-assistant to see every
surface at once.
Status
Section titled “Status”The Open App Platform is in alpha. The wire format is stable and the cross-app collaboration stack is live in production, but 0.x SDK APIs may break until the first external partner ships. Pin your SDK version and watch the release history.