Build apps for Chataway
Put your product inside the chats where people already work with coding agents — with its own tools, panel, approval cards and connected account.
Chataway is a desktop app (with a phone companion) where people run coding agents — Claude Code, Codex, Grok, Cursor and Chataway's own chat — against their projects. A Chataway app puts your product inside those chats. The agent can call your tools, your panel sits in the app's dock, and your approval cards show up right where the user is already talking to the agent.
Users install your app from the Chataway store in one click. They never create an API key, paste a secret, or edit a config file: they connect their account with you through a normal "Sign in with …" screen, and that's it.
plugin.json, every grant and every validation error.#What users see
An app shows up in four places. You decide which ones you use.
Tools in the chat. Your app declares tools, and every chat in a project where the app is enabled can call them. The user asks "upload these three sprites to my Acme inventory" and the agent picks your upload_images tool, hands it the files, and gets your result back.
Cards. When a tool needs the user — to approve an upload, fill in a title, connect an account, or allow a file to leave their Mac — Chataway shows a card with your app's icon and name on it. In Chataway's own chat, the card appears inline, on the tool call. In Claude Code, Codex, Grok and Cursor chats it appears in a strip above the composer. Nothing that costs money or leaves the machine happens without a tap on a card.
A panel. Your web UI, in a tab of the dock next to the chat: a library browser, a dashboard, an editor. It's a sandboxed page that talks to Chataway through a small bridge and to your servers directly.
A connected account. "Connect Acme" runs a standard OAuth flow with your identity provider. Chataway keeps the token on the user's Mac and attaches it to your tool calls. You identify the user with your own account system — Chataway never sends you who they are on Chataway.
#Why apps are cloud apps
Chataway runs on the user's own computer, next to their source code. That's a lot of trust to hand to third-party code, so the store only accepts one kind of app: a cloud app.
- Your code runs on your servers. Your tools live behind an MCP endpoint you host. What ships to the user's Mac is a manifest, some static UI files and your artwork — no executables, no background processes, no scripts that run outside a sandbox.
- Chataway hands you only what the user chooses. You never see file paths or the project folder. When the user (or the agent, with the user's consent) passes a file to your tool, Chataway sends you that file's bytes and nothing else.
- Heavy lifting on the Mac is done by Chataway. Need an image resized to 512×512 or a clip trimmed before upload? Ask for it declaratively and Chataway's own media code does it. Apps never pass command lines to anything. See Host services.
- Every host is declared. Your manifest lists the domains your app talks to. The panel's Content Security Policy allows exactly those, and Chataway will only download results from them.
That's the whole trust model: the user reviews a short, honest list of permissions once, and the platform enforces it. Security & privacy has the details.
#Beyond the store
Not every app is a product for strangers. There are more ways in, each labelled honestly for what it is:
| What it is | Read | |
|---|---|---|
| Build it in Chataway | Describe an app; your agent builds, reloads and tests it in an app project. Cloud apps publish to the store from there in one click. | Build in Chataway |
| Local apps | Your code runs on the Mac (server.ts + the kernel API) — for you, your team, or tools that need the Mac. Shared on GitHub, never in the store. | Local apps · Isolation |
| Install from GitHub | Anyone's app, Claude Code plugin or MCP server, pinned to a commit, labelled Unverified, run isolated, checked by your own agent if you like. | Sharing via GitHub |
| Connectors | A hosted MCP server (Canva, Notion, Linear…) added by URL, with the user's own sign-in. No code on the Mac. | Connectors |
Whatever you build, what you tell the agent reaches every provider — see Instructions for every agent.
#What you can build
A few shapes that fit the platform well:
| App | How it uses the platform |
|---|---|
| Game asset uploader (say, sprites and audio to a game platform) | A tool with a files param and prepare: resize 512×512, a confirm card, and an OAuth account. The agent generates art in the Media library; your tool uploads it. |
| Stock library | A search tool that returns thumbnails as a gallery, a panel for browsing, files:return to drop licensed downloads into the user's Media library. |
| CRM | Tools to look up and update contacts, deals and notes; a panel showing the current account; confirm cards before anything is written back. |
| Design tool | Return exported frames as files the user can save into the project with one tap, or accept screenshots from the chat to start a new design. |
| Deploy / hosting | A deploy_preview tool that takes a zip the user hands over and returns a URL, with a notice card linking to the preview. |
#How it fits together
- You host an MCP server. Your manifest points at it (
remote.mcpUrl) and declares which of its tools Chataway may offer. - When the agent calls one of your tools, the call goes through Chataway's kernel. It shows any approval card you asked for, moves files, applies media preparation, attaches the user's token — then calls your server.
- Your result comes back through the kernel: text goes to the agent, files land in your app's storage and are shown to the user.
- Your panel talks to your servers directly (within your declared domains) and to Chataway through the bridge.
#The toolkit
create-chataway-appscaffolds a working app: manifest, a panel wired to the bridge and theme tokens, and an example MCP server.@chataway/apps— typed manifest + validator, the panel bridge client, the theme stylesheet, and helpers for your MCP server.chatawayCLI —devlinks your folder into your local Chataway with live reload and an App inspector;validateruns the store's checks locally;publishuploads a version for review.
Ready? Start with the quickstart.