macaly.app.
Nothing is generated on your computer, and Macaly’s own agent never runs. The app lives in your Macaly workspace from the first file, so you can open it in the Macaly editor at any time and keep building there.
What you need
You need an MCP client that supports remote servers over Streamable HTTP - Claude (claude.ai, Desktop, Cowork), Claude Code, ChatGPT, Cursor, Grok Bot, or Codex.Connect your client
Claude, ChatGPT, Cursor, and Grok Bot install Macaly Cloud from their official directories. In Macaly, Settings → Connections has a card for each of them with the same steps and a link to the listing. Other clients add the server at:- Claude
- Claude Code
- ChatGPT
- Cursor
- Grok Bot
- Codex
- Open the Macaly Cloud listing in the Claude connectors directory. It works in claude.ai, the desktop app, and on mobile.
- Click Connect.
- Sign in to Macaly and approve access in the window that opens.
Using an API key instead
You can authenticate with a Macaly API key instead of OAuth - useful for headless agents and automation. Pass the key as a bearer token:teamId figure it out automatically.
Build an app end to end
1
Create the app
Your agent calls
create_app with a name. It gets back a chatId and the project briefing. The app is created empty - no starter prompt, no AI build.2
Write the code
write_file writes a whole file, and edit_file replaces exact text in an existing file, so a small change to a large file does not send the whole file again. Each write_file, edit_file and delete_file call is one atomic git commit with its own entry in the app’s history. The first write on a cold workspace takes ~20-30 seconds longer while the sandbox finishes booting.3
Add platform capabilities
For a database, payments, AI, media, or search, the agent reads the guide with
skill_info and runs its commands with bash - the sandbox already holds the credentials the guides need.4
Typecheck
After the last write, the agent runs
bash ".sandbox/check-errors --strict" - it catches type, style, and server errors in one pass, ends with a result summary, and exits with an error when TypeScript or CSS fails. On failure, get_logs returns the real output.5
Preview
The preview rebuilds automatically a few seconds after the last write. Once it succeeds,
preview_app returns the live URL to open or share. With path, the link opens a subpage directly, for example /pricing. The agent calls preview_app at the end of every turn that changed the app, also when an earlier link is still valid - that call tells Macaly that the turn is finished.6
Publish
When you explicitly ask to go live, the agent calls
publish_app and polls get_deployment with the returned deploymentId until the status is READY. Then it gives you liveUrl, the address of the version that is live. connect_domain attaches a custom domain or renames the Macaly subdomain.Available tools
Macaly Cloud exposes 20 tools.Workspaces & apps
Code
Media
No tool accepts raw file bytes. For a file on your computer,
upload_file returns a curl command that your agent runs in your own shell. For a file that the agent made in the sandbox, it runs the command in the sandbox. If your agent has no shell, drop the file into the media library with the link from list_media.
Capabilities & diagnostics
Publishing
Working alongside the Macaly editor
An app built through Macaly Cloud is an ordinary Macaly app. You can open it in the editor, look at the version history, roll back, or continue with Macaly’s own agent.- Every change is recorded. Each write carries a short explanation from your agent, which appears in the app’s chat history as a card naming the client that made it - so Macaly’s agent has the context if you continue there later. When a run with several changes finishes, its card sums up what changed.
- You can go back. Click Restore previous version on a card to return the app to how it was after that run. This removes everything after it from the chat. Duplicate copies that version into a new project.
- One card for each turn. Macaly does not see your messages to your agent, only its tool calls. A run ends when your agent hands back the app with
preview_apporpublish_app. If it skips that call, several of your requests can end up in one card. - Only one agent at a time. While your external agent is working, the chat is locked: Macaly’s agent won’t start a turn, and the composer tells you who has the app. The lock clears itself a few minutes after the last write, or as soon as your agent shows you the preview.
- The preview waits for the finished app. Mid-build rebuilds are held back, so the preview panel keeps showing the app you already had until the run ends.
Example prompts
Troubleshooting
The sign-in window doesn't appear
The sign-in window doesn't appear
Make sure your client supports remote MCP servers with OAuth, and that you entered the full URL including the
/api/cloud/mcp path.A write returns CHAT_CLAIMED_BY_AGENT or CHAT_CLAIMED_BY_EDITOR
A write returns CHAT_CLAIMED_BY_AGENT or CHAT_CLAIMED_BY_EDITOR
Someone else has the app: Macaly’s own agent is mid-turn, or another external editor wrote to it recently. Wait and retry - the lock frees itself a few minutes after the last activity.
The preview build fails with an upload timeout
The preview build fails with an upload timeout
The build output is too large or has too many files, usually media in
public/. get_logs with log_type: "build" shows the file count and size. Move the media out of public/ with upload_file, use the returned URLs, and let the preview build again.The preview URL shows nothing yet
The preview URL shows nothing yet
Previews serve from a completed build. Check
previewBuildStatus with get_project, and read get_logs with log_type: "build" if it failed.A tool returns FORBIDDEN
A tool returns FORBIDDEN
Either the workspace you’re acting on has Macaly Cloud disabled, or the action needs a plan feature you don’t have - publishing to a custom domain, for example.