Lemon Persistent Coding Agent
Keep coding work running in a self-hosted Elixir/OTP daemon, and resume it from a terminal, browser, or phone.
- Source repo
- z80dev/lemon
- Stars
- ★ 132
- Last updated
- 2d ago
- License
- NOASSERTION
- Primary language
- Elixir
- FA score
- 58/100 · Major gaps
At a glance
- How it runs
- Works with
- Universal · cross-platformOpenAI API · Claude APIChatGPT · Codex · Claude.ai (Partial support)
- Cost
- Free software; you pay for model usage
- Setup effort
- Medium · a few setup steps
- You'll need
- Typical use
- An independent developer who wants coding work to continue after closing a terminal can run the Lemon daemon locally and resume from a phone later.
- Not a fit if
- Teams that require a stable 1.0 release
- Teams that cannot send request data to their configured model provider
- Source review
- 58/100 · Major gaps
What does this agent do, and when should you use it?
Lemon is a self-hosted coding agent built around an Elixir/OTP daemon. Each session, run, and tool call is a separate supervised BEAM process, while the TUI, web workspace, CLI, Telegram, and Discord connect to the same runtime. It reads and edits code, runs shell commands, searches the web, and checks diagnostics, with planning, approvals, checkpoints, and diff review. It can use OpenAI, Anthropic, and other listed model services or compatible endpoints, as well as local models. The project is pre-1.0: the TUI, web UI, CLI, control plane, and text-first Telegram/Discord features are listed as stable, while some automation and advanced capabilities remain previews.
Run lemon in a repository to start or reuse the daemon and open the TUI. Lemon can read files, search code including with ast_grep, edit and patch files, run shells, search the web, and check diagnostics. /plan supports read-only planning before approval; /rewind and checkpoints help review or restore changes. Continue sessions through lemon web, lemon -p, Telegram, or Discord; task dispatches child sessions, and Kanban tasks can run in separate git worktrees. Outputs include code diffs, tool results, machine-readable one-shot results, and persistent session, memory, and automation records.
- An independent developer who wants coding work to continue after closing a terminal can run the Lemon daemon locally and resume from a phone later.
- An engineer who reviews changes across terminal and browser can start in the TUI and inspect diffs and tool cards in the web workspace.
- A maintainer handling exploration and edge-case review in parallel can use
taskto dispatch the built-in scout and reviewer child sessions. - A team that needs one-shot coding jobs from CI or scripts can run
lemon -pand request JSON output. - A user who wants recurring CI checks or autonomous goal progress can configure heartbeats, cron, or goals; these features are currently previews.
How do you install or deploy this agent?
On macOS (Apple Silicon) or Linux, install a prebuilt release; it bundles the runtime and TUI, so you do not need to install Elixir yourself. Add Lemon to PATH and run setup. Choose ChatGPT or Claude Pro/Max sign-in, import an existing Codex CLI login, or provide a model-provider API key. Building from source requires Erlang/OTP 28.5+ and Elixir 1.19.5+; TUI development requires Bun 1.3.14+, and docs and the browser client use Node.js 24+.
curl -fsSL https://raw.githubusercontent.com/z80dev/lemon/main/install.sh | sh -s -- --skip-setup
export PATH="$HOME/.lemon/bin:$PATH"
lemon setupHow do you use this agent?
Start Lemon from the target repository. On first run, choose a model, then submit a task; use -p for a one-shot run with JSON output. Configure the Telegram or Discord gateway to continue the same session from chat.
cd /path/to/repository
lemonlemon -p "Summarize the failing tests" --output jsonDuring setup, choose a supported sign-in option or enter the relevant provider API key. The README also lists Gemini/Vertex, Bedrock, Azure, Mistral, OpenRouter, Groq, DeepSeek, xAI, Kimi, Qwen, and OpenAI-compatible endpoints.
What are this agent's strengths and limitations?
- The OTP daemon keeps sessions running after the TUI closes and lets multiple interfaces use the same state.
- Support for multiple model providers, compatible endpoints, and local models reduces dependence on one model vendor.
- Approvals, planning, checkpoints, diff review, and
/rewindfile restoration provide concrete controls over code changes. - Child agents, worktree-based tasks, persistent memory, and automation support long-running work.
- The project is pre-1.0, and Goals, Kanban dispatch, and cron are preview features.
- Source development requires recent Erlang/OTP and Elixir; TUI and browser-related development also need Bun or Node.js.
- Actual model calls require a supported sign-in or API key, and the README does not state provider prices.
- Local-first does not mean fully offline: configured model providers receive the data needed for their requests.
How does this agent compare with similar options?
The README names pi, oh-my-pi, takopi, OpenClaw, and Ironclaw as inspirations, and links a Hermes Agent migration guide; it does not provide feature comparisons.
Key facts side by side with the most closely related agents.
| Agent | Source review | Form / cost | Stars | Updated | Language | Full support on |
|---|---|---|---|---|---|---|
| Lemon Persistent Coding Agent This agent | 58 · Major gaps | CLIFree + model costs | ★ 132 | 2d ago | Elixir | OpenAI API · Claude API |
| Pi Dynamic Workflows | 88 · Good | Agent plugin / skillFree + model costs | ★ 555 | 12d ago | TypeScript | — |
| MetaHarness | 86 · Good | CLIFree + model costs | ★ 706 | 9d ago | TypeScript | Codex · Claude Code |
| Pi Jev Semantic Router | 80 · Good | Agent plugin / skillFree + model costs | ★ 66 | 16d ago | TypeScript | — |
How does FollowAgents rate this agent?
Why each dimension lost points
The documentation describes approval gates, path restrictions, encrypted secrets, untrusted-content handling, backups, and rollback; helper tests also claim coverage for path escape, cancellation, and bounded output. The full policy implementation is absent, and configured external providers receive request data, limiting evidence for least privilege and external-effect controls.
The README describes supervised processes, circuit breakers, and idempotent retries. CI configuration lists formatting, tests, static analysis, installation, and simulation benchmark jobs, while helper tests cover several failure cases. Static materials cannot establish that those jobs passed, and the required runtime versions are recent and specific.
The documentation names terminal coding, browser, scripts, messaging, parallel work, and automation scenarios, and marks preview features and support boundaries. The capability range is broad, but trigger conditions and environment details are not complete for every channel.
The README provides installation, quickstart, command-reference links, and examples; separate files cover licensing, security policy, support boundaries, and a changelog. Pre-1.0 status, maintainer, and vulnerability-reporting path are stated. The prebuilt install uses a remote script, and some operational details require following the linked documentation.
The product description covers persistent sessions, multiple surfaces, approvals, recovery, and parallel tasks; JSON output and diff review support downstream use. Operating a persistent runtime and configuring providers or channels add overhead, and the materials do not quantify the cost-benefit.
Major README claims receive supporting descriptions in the security policy, CI workflow, and helper tests. CI configuration and test code are static evidence, not proof of execution or success. The docs identify preview features, external-provider data transfer, and support status, which helps separate claims from inference.
- This static review did not run code, tests, or installation; CI configuration does not establish that this revision passed.
- When using external model providers, account for request data being sent to configured services. Check the documented support boundaries before relying on preview automation unattended.