moto is Floom's terminal IDE for AI agents: Claude as the control plane, Codex for backend/infra/debugging, opencode as an optional worker, subagent workflows, Docker-first runtime, CLAUDE.md / AGENTS.md-style context, safety hooks, 60+ skills, Gmail/WhatsApp integrations, memory, browser automation, and cost tracking.
Formerly buildingopen/moto. Old GitHub URLs redirect.
A safety hook firing on a destructive command.
- Founders/operators turning repeated work into software with agents
- Claude Code / Codex users who want a real operating environment instead of one-off prompts
- Terminal-first builders running multiple agents on a Mac + remote Linux box
- Teams standardizing agent rules, hooks, skills, memory, and remote runtime
- Anyone burned by agents running destructive commands, leaking secrets, or claiming success without fresh evidence
Most AI coding setups are a prompt file plus a pile of tools. moto is the full operating environment: context, hooks, skills, memory, terminal sessions, remote server runtime, browser automation, Docker sandboxes, and launcher commands for Claude, Codex, and opencode.
The philosophy is simple:
- context before prompting
- wireframes before UI code
- Docker before SaaS integrations
- subagents before monolithic chats
- cheap models for mechanical checks
- expensive models for judgment
- complexity only after real usage earns it
git clone https://github.com/floomhq/moto.git
cd moto
./install.sh # Symlinks configs into ~/.claude/That's it. The installer detects existing configs, backs them up, resolves $HOME paths in hook commands, and installs 17 hooks + 7 scripts + 60+ skills + memory template. Run ./install.sh --copy for standalone files instead of symlinks.
For the full remote workstation from the same repo:
cp .env.example .env
$EDITOR .env
./install.sh mac
./install.sh server-remoteAfter install:
- Edit
~/.claude/CLAUDE.mdto match your workflow (search for<!-- Customize -->comments) - Copy
claude/CLAUDE-project.mdinto your project roots - Optionally copy
.env.exampleto.envfor API keys used by some hooks/scripts
| bare Claude Code | Claude Code + dotfiles | moto | |
|---|---|---|---|
| Context | manual per session | static files | CLAUDE.md + AGENTS.md + MEMORY.md |
| Safety | none | none | 17 hooks blocking destructive commands, secret leaks, config tampering |
| Remote workflow | DIY SSH | DIY SSH | moto up + SSHFS + systemd + tmux |
| Skills | none | none | 60+ slash commands (/cost, /qa, /ship, /debug, etc.) |
| Sidecars | none | none | Groq / Gemini / NVIDIA routing for cheap stateless work |
| Memory | none | none | MEMORY.md auto-updated across sessions |
| Cost tracking | none | none | Per-model, per-session token costs |
| Browser | none | none | Chrome CDP automation via skills |
| Messaging | none | none | WhatsApp + Gmail integrations |
moto splits agent work between a Mac control plane and a remote Linux runtime. The Mac stays where the human works, while the server owns long-running sessions, containers, cheap sidecar calls, browser automation, and messaging integrations.
flowchart LR
subgraph Mac["Mac control plane"]
IDE["IDE + terminal"]
Claude["Claude Code"]
Codex["Codex backend/debug"]
Browser["Local browser"]
end
subgraph Link["Connection layer"]
SSHFS["SSHFS"]
Systemd["systemd"]
Tunnels["SSH tunnels"]
end
subgraph Linux["Remote Linux runtime"]
Tmux["tmux sessions"]
Docker["Docker containers"]
CDP["Chrome CDP"]
Messaging["WhatsApp + Gmail"]
end
subgraph Surfaces["Agent surfaces"]
Skills["60+ skills"]
Hooks["17 safety hooks"]
Memory["MEMORY.md"]
Slash["slash commands"]
end
subgraph Sidecars["Stateless sidecars"]
Groq["Groq"]
Nvidia["NVIDIA"]
Gemini["Gemini"]
end
IDE --> Claude
Claude --> Codex
Browser --> Claude
Claude --> SSHFS
Claude --> Systemd
Claude --> Tunnels
SSHFS --> Tmux
Systemd --> Tmux
Tunnels --> Tmux
Tmux --> Docker
Tmux --> CDP
Tmux --> Messaging
Claude --> Skills
Hooks --> Claude
Memory --> Claude
Slash --> Claude
Skills --> Tmux
Tmux --> Groq
Tmux --> Nvidia
Tmux --> Gemini
Read the deep dive: docs/architecture.md
| Directory | Contents | Learn more |
|---|---|---|
claude/ |
CLAUDE.md, hooks, scripts, skills, memory | claude/skills/README.md · claude/hooks/README.md · claude/memory/README.md |
mac/ |
moto CLI, iTerm automation, shell aliases, launchd + SSH templates |
mac/README.md |
server/ |
Systemd services, Docker stack, safety utils, browser automation, tmux | docs/bootstrap.md |
whatsapp/ |
OpenClaw gateway, verified send, SQLite contact lookup | whatsapp/README.md |
gmail/ |
IMAP checker, multi-account support | gmail/ |
cron/ |
Job templates, health checks, safe-pipeline patterns | cron/ |
Do I need a remote server?
No. ./install.sh works locally. Add ./install.sh mac + ./install.sh server-remote only when you want the integrated remote workflow.
Does this replace Claude Code? No. It's the operating environment around Claude Code (and Codex, and opencode). You still use Anthropic's CLI; moto just makes it reliable, safe, and reproducible.
Is this safe?
17 hooks run on every tool call blocking rm -rf /, secret leaks, wrong package managers, unverified WhatsApp sends, and more. See claude/hooks/README.md.
How much does it cost?
The repo is free. Hooks track your Claude/Codex token spend to costs.jsonl. Sidecars route bounded work to free/cheap models so you burn premium tokens on judgment, not mechanical tasks.
Can I use only the hooks? Or only the skills? Yes. The installer is modular. Pick what you need.
| Requirement | Required? | Used by |
|---|---|---|
| Claude Code CLI | Yes | Everything |
jq |
Yes | All hooks (JSON parsing) |
python3 |
Optional | Gemini audit hook, email checker |
gitleaks |
Optional | Secret scanning hook |
After running install.sh:
- Edit CLAUDE.md — Search for
<!-- Customize -->comments and replace placeholders with your setup - Add project configs — Copy
claude/CLAUDE-project.mdto each project root - API keys (optional) — Copy
.env.exampleto.envfor hooks/scripts that need external APIs
The settings.json file has $HOME paths pre-resolved by the installer. Re-run ./install.sh to pick up changes.
Other open-source tools from BuildingOpen:
| Project | Description |
|---|---|
| bouncer | Independent Gemini quality gate that audits Claude Code's output before it can stop |
| claude-code-stats | Spotify Wrapped for Claude Code. Visualize your AI coding stats, token usage, and costs |
| claude-wrapped | Visualize your Claude Code stats with npx claude-entropy |
| hook-stats | Analyze your Claude Code bash command log |
| session-recall | Search and recover context after Claude's automatic compaction |
| browse | Browser automation CLI with autonomous agent mode via CDP |
| openbrowser | Give AI your browser. Check email, track orders, download receipts. MCP server + CLI |
| openqueen | Autonomous coding agent controlled by WhatsApp/Telegram. Gemini orchestrates Claude/Codex |
| blast-radius | Find all files affected by your changes. One bash script, zero dependencies |
| dep-check | Find dead imports in your project. One bash script |
See CHANGELOG.md.