Coding agent on your phone.
SuperTurtle is an autonomous coding agent you control from Telegram. Send a voice message or text from your phone, and SuperTurtle gets to work on your machine using Codex and Claude Code. Whether you're on the couch, out for a walk, or on a different machine entirely, SuperTurtle keeps the work moving. For bigger tasks it spins up parallel workers called SubTurtles and supervises them to completion. You get milestone updates as things land, not a wall of logs.
npm install -g superturtle
superturtle init
superturtle startFor normal local use, superturtle start is the command that makes the bot run continuously. Use superturtle stop to stop it.
For agents and CI, init runs non-interactively with flags:
superturtle init --token <BOT_TOKEN> --user <TELEGRAM_USER_ID> --openai-key <KEY>superturtle init seeds both .superturtle/.env for live config and .superturtle/.env.example as the local reference template.
- Bun β₯ 1.0
- tmux β
brew install tmux - Codex CLI and Claude Code CLI β both recommended; Codex is currently the stronger default
- Codex + Claude Code in one runtime β one Telegram-native workflow across both.
- Phone-first remote coding β text or voice from Telegram.
- Parallel SubTurtles β long-running work split into autonomous workers.
- Spec-driven loops β enforced
CLAUDE.mdbacklog structure with auto-stop to avoid drift. - Progress, not log spam β milestone updates instead of a wall of output.
- Meta Agent β the bot itself. Plans, delegates, supervises.
- SubTurtles β autonomous workers running in ralph loops (yolo, slow, yolo-codex, yolo-codex-spark).
- Conductor state β durable worker lifecycle/event state in
.superturtle/state/with wakeup/inbox delivery. - MCP servers β stickers, bot-control, ask-user (inline buttons).
- Drivers β Codex and Claude Code, combined in one runtime.
| Feature | SuperTurtle | OpenClaw |
|---|---|---|
| Telegram control | β | β |
| More chat apps: WhatsApp, iMessage, Discord | β | β |
| Self-hosted | β | β |
| Runs coding agents on your own machine | β | β |
| Custom skills, connectors, and MCPs | β | β |
| Persistent remote VM in one command | π | β |
| Plugin / channel ecosystem | β | β |
| Positioning | SuperTurtle | OpenClaw |
|---|---|---|
| Setup | Minimal - 3 commands | More setup surface because the platform covers more channels, plugins, and agent modes |
| Product focus | Coding-first | More general-purpose agent platform |
| Runtime model | Moving the agent between your machine, sandboxes, and VMs with one command is part of the product direction | Runs on one machine at a time: local machine or VM |
| Main agent runtime | Wraps the Codex and Claude Code CLIs | Embedded pi-agent-core / pi-mono runtime |
SuperTurtle uses the headless CLI pattern for everything.
Under the hood, that looks like:
claude -p "fix the failing test" --output-format stream-json
codex exec --full-auto "fix the failing test"SubTurtles are autonomous worker agents that run in isolated loops. The Meta Agent spawns them for bounded tasks, while the conductor owns durable worker lifecycle state and recovery. Each SubTurtle gets its own working directory under .subturtles/ with a task file, CLAUDE.md, and logs, while canonical orchestration state lives under .superturtle/state/.
SubTurtles are spec-driven through an enforced CLAUDE.md backlog structure, and they auto-stop when the work is done to avoid drift.
Loop types:
- yolo β single Claude Code call per iteration. Fast, autonomous ralph loop.
- slow β plan, groom, execute, review. Four agent calls per iteration. More careful, better for complex or risky work.
- yolo-codex β same as yolo but runs Codex instead of Claude. The default for straightforward coding tasks.
- yolo-codex-spark β same as yolo-codex but with Codex Spark for faster iterations.
yolo-codex is the closest SubTurtle loop to the ralph loop pattern:
while not finished:
codex.execute()slow is the more structured loop type:
while not finished:
plan = claude.plan()
claude.groom(plan)
codex.execute(plan)
claude.review(plan)SuperTurtle includes a local-only dashboard for operational visibility. It is enabled by default when you run superturtle start. On startup, the bot prints the exact local dashboard URL (including the active port).
Open the dashboard using the startup URL the bot prints. For normal local use, you do not need any extra dashboard settings. If you want to disable the dashboard entirely, set DASHBOARD_ENABLED=false.
The dashboard shows active sessions, SubTurtle lanes, cron/current jobs, deferred queue pressure, and conductor views (workers, wakeups, inbox) in one place.
| Platform | Status |
|---|---|
| macOS | Fully supported |
| Linux | Supported |
| Windows | Supported via WSL |
macOS note: Enable System Settings β Battery β Options β Prevent automatic sleeping when the display is off when on power adapter.
Super Turtle runs the local coding CLIs as child processes in their headless or non-interactive modes. In practice that means commands such as claude -p --output-format stream-json and codex exec.
What Super Turtle does:
- Spawns the local
codexandclaudeCLIs with standard headless or non-interactive entrypoints - Uses your existing CLI authentication (your logged-in session)
- Reads structured output or events from the CLIs
What Super Turtle does NOT do:
- Extract or reuse OAuth tokens from your keychain for model inference
- Proxy your subscription credentials to other users or services
- Use provider APIs as the default path instead of the installed CLI
- Circumvent product rate limiting or usage caps
The /usage bot command reads local CLI usage/auth state only for usage reporting. For Claude Code, it can call Anthropic's own usage-reporting endpoint (api.anthropic.com/api/oauth/usage) β the same endpoint Claude Code's built-in /usage displays. It is read-only and never used for model inference.
See the full TOS compliance page for details.
Super Turtle runs these coding CLIs in automation-oriented modes. Every file read, file write, and shell command happens without a confirmation prompt. This is by design β confirming each action from your phone would make the tool unusable.
You should run Super Turtle in a sandboxed or dedicated environment (VM, container, separate user account) β it has full access to read, write, and execute within configured paths. Multiple defense layers (user allowlist, rate limiting, path validation, command blocking, audit logging) reduce risk, but the permission model is inherently open. Read the full security model for threat model, incident response, and deployment checklist.
- Docs site: superturtle.dev/docs
- Quickstart: superturtle.dev/docs/quickstart
git clone https://github.com/Rigos0/superturtle.git
cd superturtle
npx superturtle init # installs deps, creates .superturtle/.env, prompts for tokens
node super_turtle/bin/superturtle.js start
# stop later:
node super_turtle/bin/superturtle.js stopIf you have the npm package installed globally, use the explicit node super_turtle/bin/superturtle.js ... form while developing this repo so you run the source version, not the global install.






