# Letta Code [![npm](https://img.shields.io/npm/v/@letta-ai/letta-code.svg?style=flat-square)](https://www.npmjs.com/package/@letta-ai/letta-code) [![Discord](https://img.shields.io/badge/discord-join-blue?style=flat-square&logo=discord)](https://discord.gg/letta) Letta Code is a stateful agent harness for creating agents that are more like people than tools. Letta Code agents have memory, identity, and a sense of experience over time. They learn and evolve over long horizons through rewriting their own memory, skills, prompts, and even the harness itself (through mods). Letta Code can be used interactively, or to power always-on agents that work proactively. Interact with agents through: * A local [**CLI**](https://docs.letta.com/letta-code/cli) * The [**desktop app**](https://docs.letta.com/letta-code/desktop-app) for macOS, Windows, and Linux * Your browser, including [mobile](https://docs.letta.com/letta-code/remote-mobile), at [chat.letta.com](https://chat.letta.com) * Messaging integrations, including [Telegram](https://docs.letta.com/letta-code/channels#telegram-cli), [Slack](https://docs.letta.com/letta-code/channels#slack-cli), [Discord](https://docs.letta.com/letta-code/channels#discord-cli), and [custom channels](https://github.com/letta-ai/letta-code/blob/main/src/channels/README.md) ![](https://github.com/letta-ai/letta-code/blob/main/assets/letta-code-demo.gif) ## Feature Overview > [!TIP] > Letta Code agents are designed to be self-configuring. If you want to configure something (e.g. skills, behavior, hooks, permissions), try asking your agent to do it for you. | Feature | Description | |---|---| | [Self-improvement & Learning](https://docs.letta.com/letta-code/memory) | Agents programmatically rewrite their context to improve and adapt over time, including system prompt learning (through [memory blocks](https://www.letta.com/blog/memory-blocks)) and [skill learning](https://www.letta.com/blog/skill-learning). Configure periodic dreaming with `/sleeptime`, investigate agent behavior with `/doctor [symptom]`, and view memory with `/palace` | | [Message search](https://docs.letta.com/letta-code/slash-commands) | Search across all messages and agents with `/search`. Agent can also search their own conversations or the conversations of other agents | | [MemFS](https://docs.letta.com/letta-code/memfs) | All context (including memory blocks) is tracked via git. Sync context to a custom GitHub repository by setting `/memory-repository set git@github.com:...` | | [Skills](https://docs.letta.com/letta-code/skills) | Loads global skills (`~/.letta`), project-scoped skills (`.agents/skills`), and agent-scoped skills (stored in MemFS). View skills with `/skills` and create with `/skill-creator` | | [Subagents & Multi-agent](https://docs.letta.com/letta-code/subagents) | Call built-in subagents (general-purpose, forked, recall) in the background. Agents can call any other agent (including themselves) as subagents | | [Messaging Integrations](https://docs.letta.com/letta-code/channels) | Chat with the same agent from Slack, Telegram, your browser (chat.letta.com) including mobile, and through [custom channels](https://github.com/letta-ai/skills/blob/main/letta/creating-letta-code-channels/SKILL.md) | | [Hooks](https://docs.letta.com/letta-code/hooks) | Run custom scripts at key points of agent execution to automate workflows | | [Permissions](https://docs.letta.com/letta-code/permissions) | Set permission modes and customize what actions are auto-approved or auto-denied | | [Crons & Schedules](https://docs.letta.com/letta-code/scheduling) | Configure heartbeats and crons, and let agents work across time with self-managed schedules | | [Remote computers](https://docs.letta.com/platform/computers/byom) (requires signing in with Letta) | Agents work across multiple computers. Connect any machine by running `letta server --computer-name "..."` | | [Secrets](https://docs.letta.com/letta-code/secrets) (requires signing in with Letta) | Make secrets available as environment variables (across machines) while obfuscating their values from context | Automatic client-side dreaming is disabled by default on native Windows, including when saved `/sleeptime` settings enable it. Manual `/dream` and `/reflect` commands remain available. To opt in, set `LETTA_ENABLE_WINDOWS_AUTO_REFLECTION=1` in the environment of the Letta Code process. This does not affect macOS, Linux (including WSL), or server-side dreaming. See the full list of slash commands in our [documentation](https://docs.letta.com/letta-code/slash-commands). ## Get started Install the package via [npm](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm): ```bash npm install -g @letta-ai/letta-code ``` Navigate to your project directory and run `letta` (see command-line options [in the docs](https://docs.letta.com/letta-code/commands)). You can also run the tutorial agent with: ``` letta --new-agent --personality tutorial ``` Letta Cloud is the default. On first launch, choose to sign in with Letta or proceed locally; your choice is saved for future runs. Run `letta setup` to choose again, or `letta backend cloud` / `letta backend local` to change the default. Use `--backend cloud` or `--backend local` for a one-off override without changing the saved default. Run `/connect` to configure your own LLM API keys (OpenAI / ChatGPT, Anthropic, Z.ai coding plan, etc.), and use `/model` to swap models. You can also download the [**desktop app**](https://docs.letta.com/letta-code/desktop-app) for macOS, Windows, and Linux. Agents created in the CLI are available via the desktop app, and vice versa. ## Letta Cloud Letta Cloud stores agents' memory, identity, and conversations while Letta Code runs on a laptop, [GitHub Actions](https://github.com/letta-ai/letta-code-action), a Cloud sandbox, or a remote computer. Chat with them through [chat.letta.com](https://chat.letta.com/) or Desktop. On resume, bundled default system prompts (including older versions) become Cloud-managed. Custom prompts stay explicit. Set `LETTA_CODE_PRESERVE_CLOUD_SYSTEM_PROMPT=1` to disable automatic prompt updates on Cloud. ```mermaid graph TD LettaCloud["Letta Cloud
Agent state"] LettaCloud --> A["💻 Your Laptop"] LettaCloud --> B["☁️ Cloud VM"] LettaCloud --> C["🖥️ Mac Mini"] LettaCloud --> D["📦 Managed Sandbox"] ``` Run `/login` from the CLI or sign in through the desktop app to access agents in your Letta account. ### Remote computers Agents stored in Letta Cloud can run across multiple machines. Connect any machine by running: ```bash letta server letta server --computer-name "work-laptop" ``` List discoverable computers from the CLI: ```bash letta computers list --online-only ``` Get the current computer connection for routing another agent onto this same machine: ```bash letta computers current ``` Route a headless message through a specific computer: ```bash letta -p --agent --computer "work-laptop" "hello from that machine" ``` Use `--computer cloud` to start or reuse the target agent's cloud sandbox. Agent-to-agent headless messages without `--computer` run on the same computer. See our guides for using [Railway](https://docs.letta.com/letta-code/remote#railway), [DigitalOcean](https://docs.letta.com/letta-code/remote#digitalocean), and [Fly.io](https://docs.letta.com/letta-code/remote#flyio) as remote computers. The previous `environments`/`envs`, `--environment`/`--env`, and `--env-name` spellings remain available for backwards compatibility. ## AgentFile deprecation AgentFile (`.af`) export and import are deprecated and have been removed from Letta Code. The `/export` and `/download` slash commands and the `--import` and `--from-af` CLI flags are no longer supported, including imports from the agent registry. This does not affect memory import/export or conversation transcript export. ## Installing external skills Install skills into a specific agent's memory with `letta skills install `: | Source | Example | |---|---| | GitHub | `letta skills install https://github.com/owner/repo`
`letta skills install https://github.com/owner/repo/tree/main/path/to/skill`
`letta skills install https://github.com/owner/repo/blob/main/path/to/skill/SKILL.md` | | [ClawHub](https://clawhub.ai/) | `openclaw skills install ` → `letta skills install ` | | [Hermes Skills Hub](https://hermes-agent.nousresearch.com/docs/skills/) | `hermes skills install ` → `letta skills install ` | To view skills run `letta skills list --agent `, and delete skills with `letta skills delete --agent `. ## Research Letta Code is developed by the creators of [MemGPT](https://arxiv.org/abs/2310.08560) and [sleep-time compute](https://arxiv.org/abs/2504.13171) (now called "dreaming"), and driven by our [research](https://www.letta.com/research) in AI memory and continual learning. ## Other Community maintained packages are available for Arch Linux users on the [AUR](https://aur.archlinux.org/packages/letta-code): ```bash yay -S letta-code # release yay -S letta-code-git # nightly ``` Nix users can run or install Letta Code through the repository flake: ```bash nix run github:letta-ai/letta-code nix profile install github:letta-ai/letta-code ``` See [docs/nix.md](docs/nix.md) for Home Manager and NixOS service examples. --- Made with 💜 in San Francisco