Use Letta in your editor
Connect Letta to Zed, JetBrains, and other ACP-compatible editors
letta-acp connects Letta to editors through the Agent Client Protocol (ACP). Each editor thread becomes a conversation on a Letta agent. Set LETTA_AGENT_ID to reuse an existing agent—and its memory—across editor sessions and other Letta clients.
Connect Zed
Section titled “Connect Zed”Run letta login, then add the adapter to Zed’s settings. Replace agent-... with an existing agent ID, or remove LETTA_AGENT_ID to create an agent on first use.
{ "agent_servers": { "Letta": { "type": "custom", "command": "npx", "args": ["-y", "@letta-ai/letta-acp"], "env": { "LETTA_ACP_BACKEND": "cloud-oauth", "LETTA_AGENT_ID": "agent-..." } } }}Restart Zed, open the Agent Panel, select +, and choose Letta. External agents appear in this menu, not the model dropdown. The "type": "custom" field is required.
If Zed cannot find npx, replace it with the absolute path returned by which npx. Apps launched from the macOS Dock may not inherit your shell’s PATH.
If you let the adapter create an agent, copy its agent-* ID from Zed’s ACP logs into LETTA_AGENT_ID to keep using it after adapter restarts. Open the logs from the command palette with dev: open acp logs.
Connect JetBrains IDEs
Section titled “Connect JetBrains IDEs”JetBrains IDEs that support custom ACP agents—including WebStorm—can run the same adapter. Run letta login, open the AI Chat tool window, and select Add Custom Agent. JetBrains creates ~/.jetbrains/acp.json; add the following configuration:
{ "default_mcp_settings": {}, "agent_servers": { "Letta": { "command": "npx", "args": ["-y", "@letta-ai/letta-acp"], "env": { "LETTA_ACP_BACKEND": "cloud-oauth", "LETTA_AGENT_ID": "agent-..." } } }}Select Letta from the agent picker in AI Chat. ACP agents do not require a JetBrains AI subscription. If Letta does not appear or npx cannot be started, use the absolute path returned by which npx and restart the IDE. This flow has been tested with WebStorm.
Choose where tools run
Section titled “Choose where tools run”LETTA_ACP_BACKEND controls where agent state is stored and where built-in tools such as Read and Bash execute.
| Backend | Agent state | Built-in tools run | Auth |
|---|---|---|---|
cloud-oauth | Letta Platform | your machine | letta login |
cloud | Letta Platform | cloud sandbox | LETTA_API_KEY |
local (default) | your machine | your machine | local model setup |
remote | configured by your App Server | App Server machine | capability token, if enabled |
For work in a local repository, cloud-oauth is usually the best fit: the agent and its memory stay on the Letta Platform while tools run against the working tree on your machine. It also uses your existing letta login session instead of storing an API key in editor settings.
Use cloud for execution in an isolated cloud sandbox, local to keep agent state on your machine, or remote to connect to an App Server you operate.
Editor behavior
Section titled “Editor behavior”- Threads: Each editor thread maps to a Letta conversation and can be resumed after the adapter restarts.
- Approvals: Tool approvals use the editor’s native permission prompts. Zed’s mode selector switches between
standard,acceptEdits, andunrestrictedbehavior. - Editor buffers: When the editor provides filesystem capabilities, the agent can read unsaved buffers with
read_editor_bufferand write through the editor withwrite_via_editor. Built-in tools still run in the location shown above. - Slash commands: The editor’s
/menu includes supported Letta commands such as/model,/compact,/init, and/remember, along with discovered skills. Use the editor UI instead of TUI-only commands such as/resumeor/login.
Configuration
Section titled “Configuration”| Variable | Effect |
|---|---|
LETTA_ACP_BACKEND | local (default), remote, cloud, or cloud-oauth |
LETTA_AGENT_ID | reuse an existing agent instead of creating one |
LETTA_ACP_MODEL | model override as a provider/model handle; run /model to list available handles |
LETTA_ACP_PERMISSION_MODE | initial mode: standard (default), acceptEdits, or unrestricted |
LETTA_API_KEY | required by cloud; not needed for cloud-oauth |
LETTA_APP_SERVER_URL | remote backend URL; defaults to ws://127.0.0.1:4500 |
LETTA_APP_SERVER_TOKEN | remote capability token, when authentication is enabled |
See the letta-acp repository for implementation details and release notes, or read the App Server documentation to build your own controller or editor integration.