You describe
the thing.
It does
the thing.
An autonomous AI agent that runs locally, thinks for itself, and gets stuff done. Give it a task, walk away, come back to results.
curl -fsSL dotheth.ing/dtt.sh | bash -s -- --install
SYS.REQ: Python 3, Git, OpenRouter API key. // ENV: macOS / Linux / WSL. // DIR: /tmp/dothething/
NOT just a coding agent. DTT operates across functional domains autonomously.
- Research & Analysis Synthesizes data and writes comprehensive reports.
- Data Extraction Processes documents and outputs structured formats.
- System Administration Automates local configuration and maintenance tasks.
- Web Investigation Conducts competitive analysis via real browser instances.
- Email Automation Sends and receives email through AgentMail.
- Workflow Architecture Describe task in plain language → agent drafts numbered plan → executes autonomously → searches web, reads/writes files, runs shell commands → delivers final output.
- Result Mode
Every tool call includes a
result_mode. "raw" delivers exact output; "goal" string pipes output through a cheaper worker model (Gemini Flash) for focused summary, preserving context window. - Stacked Tool Calls
Many tool calls per reply, all parallel by default. An optional
exec_orderfield sequences them into stages: calls sharing a number run together, and the next stage waits for the previous one to finish. "Make a directory, write three files into it, list it" is one round-trip instead of three. If a whole stage fails, everything after it is skipped. - Browser Automation
Notte + Camoufox (stealth Firefox) under the hood.
fetch_pagepulls clean markdown, no LLM cost. Captchas get solved in the background. For login flows or multi-step SPAs,browser_agenthands the session off to a Sonnet-powered browser agent. - Orchestrator Mode
--orchestratoropens a Textual terminal UI for running multiple agents in parallel. One line per session showing status, phase, elapsed time, and cost. Expand any session to watch its log, send input, terminate, or copy output. A smart launcher takes your prompt, has Fable split the work, and spins up to 16 concurrent agents. Shows a cost estimate before launch. - Live Input Press any key while the agent runs to open an input bar. Enter injects your message immediately, Ctrl-Q queues it for after the current step, Esc cancels. The agent can also ask you questions: OTP codes, preferences, confirmation before destructive actions.
- Email Send and receive email through AgentMail. First time: the agent signs up, you confirm a one-time OTP from your personal email, and the API key is saved. After that, email works on its own across sessions.
- Three Modes
Normal is the default: cheap, fast models at high reasoning, full toolset.
--advancedswaps in the strongest models (Claude Fable 5, a GPT-5.6 Sol oracle) at max reasoning for hard tasks.dtt q "..."is quick mode: a one-shot on a fast frontier model, no oracle, trimmed toolset, done in about two turns. - Model Defaults, Live
The model for each role is read from
dotheth.ing/models.txt, fetched once a day. Defaults change without a new release. Override any role per run with--model role=slugor theDTT_MODEL_*env vars. - Thread Persistence
Sessions save to
~/.dtt/threads/with timestamped IDs. Pick up where you left off with--resume <id>. Full cost breakdown prints on exit: tokens, cache hits, dollars. - Prompt Caching OpenRouter sticky routing plus Anthropic block-level cache controls. Long tasks hit the cache on subsequent turns and input costs drop sharply.
- Skills & MCP
Drop any Claude Code
SKILL.mdinto~/.dtt/skills/<name>/. Skills withallowed-toolsinject into the system prompt; others run as isolated worker-model sub-tasks. MCP servers plug in via~/.dtt/mcp.json(same format as Claude Code). - Clipboard Copies text or images to and pastes from the system clipboard. macOS, Linux (X11 and Wayland), and Windows.
- Self-Management
The agent manages its own configuration at runtime. Tell it to add an API key, install a skill, or connect an MCP server and it handles the file edits and reloads itself. Three tools:
manage_config,manage_skill,manage_mcp. - Auto-Update
The script checks
dotheth.ing/VERSIONevery 6 hours and self-updates if there's a newer version.--updateforces an immediate check.
file_ops
read_file, write_file, edit_file, batch_read, diff_files
search
glob, list_dir, search_file
shell
run_command, run_code (Python/Bash/TS), wait, request_user_input
web
search_web (SearXNG via Notte), fetch_page (Notte), browser_agent, http_request
vision
analyze_image
oracle
oracle, think. A stronger model for a second opinion, plus a free reasoning scratchpad.
notes
notes_add, notes_read, notes_clear
planning
plan_create, plan_remaining, plan_update, plan_completed
delegate
Farm sub-tasks to the cheaper worker model.
skills
use_skill. Loads ~/.dtt/skills/<name>/SKILL.md (Claude Code format).
mcp
Any Claude Code MCP server via ~/.dtt/mcp.json.
batch
batch_process, analyze_data. Parallel worker-model calls for bulk jobs.
clipboard
clipboard_copy, clipboard_paste. macOS, Linux, Windows.
computer_use
Drive the macOS GUI via Peekaboo: screenshot, click, type. macOS only; needs Screen Recording + Accessibility.
config
manage_config, manage_skill, manage_mcp. Runtime self-configuration.
email
email_auth, email_list_inboxes, email_create_inbox, email_list, email_read, email_send, email_delete
browsermcp
--browsermcp serves dtt_search, dtt_fetch, dtt_browser, dtt_browser_agent to other agents over stdio MCP.
| --prompt | Initial task description. |
| q / --quick | Quick mode: one-shot on a fast frontier model, stacked tool calls, no oracle. |
| --advanced | Advanced mode: strongest models at max reasoning, for hard tasks. |
| --model ROLE=SLUG | Override any model role: main, worker, oracle, browser. Repeatable; also via DTT_MODEL_* env vars. |
| --cwd DIR | Set working directory. |
| --resume ID | Load thread from ~/.dtt/threads/ |
| --max-loops N | Limit iteration cycles. |
| --verbose | Stream raw thought process. |
| --headed | Show the browser window for visual debug. |
| --debug | Log raw API payloads and cache metrics. |
| --orchestrator | Launch orchestrator mode (multiple parallel agents). |
| --pipe | Final report to stdout; suppress everything else. |
| --tui | Full-screen TUI for single-agent mode. |
| --notify-desktop | Desktop notification when the task finishes. |
| --notify-email EMAIL | Email a notification when the task finishes. |
| --install | Install to ~/.local/bin/dtt, adding it to PATH if needed. |
| --max-cost USD | Stop and checkpoint at this cumulative cost. |
| --version / -V | Print version and exit. |
| --update | Force an update check (bypasses 6-hour rate limit). |
| --browsermcp | Serve dtt's search + browser tools to another agent over stdio MCP. |
| --keep-temp | Keep /tmp/dothething on exit. |