Skip to content
Discord
Platform

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.

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.

~/.config/zed/settings.json
{
"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.

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:

~/.jetbrains/acp.json
{
"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.

LETTA_ACP_BACKEND controls where agent state is stored and where built-in tools such as Read and Bash execute.

BackendAgent stateBuilt-in tools runAuth
cloud-oauthLetta Platformyour machineletta login
cloudLetta Platformcloud sandboxLETTA_API_KEY
local (default)your machineyour machinelocal model setup
remoteconfigured by your App ServerApp Server machinecapability 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.

  • 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, and unrestricted behavior.
  • Editor buffers: When the editor provides filesystem capabilities, the agent can read unsaved buffers with read_editor_buffer and write through the editor with write_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 /resume or /login.
VariableEffect
LETTA_ACP_BACKENDlocal (default), remote, cloud, or cloud-oauth
LETTA_AGENT_IDreuse an existing agent instead of creating one
LETTA_ACP_MODELmodel override as a provider/model handle; run /model to list available handles
LETTA_ACP_PERMISSION_MODEinitial mode: standard (default), acceptEdits, or unrestricted
LETTA_API_KEYrequired by cloud; not needed for cloud-oauth
LETTA_APP_SERVER_URLremote backend URL; defaults to ws://127.0.0.1:4500
LETTA_APP_SERVER_TOKENremote 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.