Otto
A terminal AI agent that works on a codebase, a container, a browser or a desktop, uses what it built, and judges its own work against criteria it wrote before it started. One agent loop with modes over four model vendors, a rubric-first evaluator, tiered memory, six benchmark harnesses, and 1,552 tests that need no API key.
Install
pip install otto-cli-agent
otto doctor
otto tui
Put keys in a .env in the directory you run it from. INCEPTION_API_KEY
is required (it alone serves the fill-in-the-middle and edit endpoints);
OPENAI_API_KEY, ANTHROPIC_API_KEY and GEMINI_API_KEY are optional and
each unlocks the seats routed to that vendor. otto tui opens its setup
screen on first start when nothing is configured. Python 3.12 or newer.
What it does
- One agent loop with four modes that swap the model underneath without losing the conversation; routing that learns from outcomes, per-model cooldowns and a per-provider circuit breaker.
- A rubric written from the task before any attempt, shared by the loop and the judge, so the judge never grades against the actor's own output.
- Once-only holds before an irreversible action, before finishing on unrun code, and before finishing without using what was built.
- 18 tools: shell and Python, files,
code_map, a browser,exercise(walk through a page, a served app, a CLI, an API, a terminal program or a device app and report each step as the machine saw it), a desktop, web search, workspace search and memory recall. - Tiered memory with type-aware compaction and two-stage semantic recall (96% on LoCoMo), a lesson bank, and sessions that survive the process.
- A Textual TUI with a setup screen, live progress, a token and dollar ledger; a REPL with the same pipeline.
- Six benchmark harnesses: a golden set, SWE-bench Verified, Claw-Eval, LoCoMo, a compaction bench and Humanity's Last Exam.
Links
- Source, folder-by-folder READMEs and screenshots: https://github.com/siddharth23P/otto_agent
- Website: https://siddharth23p.github.io/otto_agent/
- How it was built, commit by commit, with the measurement behind each change: https://github.com/siddharth23P/otto_agent/blob/main/docs/HISTORY.md
- The research each design decision draws on: https://github.com/siddharth23P/otto_agent/blob/main/docs/RESEARCH.md
MIT licensed.
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file otto_cli_agent-0.1.1.tar.gz.
File metadata
- Download URL: otto_cli_agent-0.1.1.tar.gz
- Upload date:
- Size: 5.9 MB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
88471e799811e85c7218ae6857057acde67ac7515a24bbf9c2b51b69980f18ee
|
|
| MD5 |
ae1b35b49089da2a679b0af990530de2
|
|
| BLAKE2b-256 |
4ca680ba182e967a3b5c162de28cd755c1da64a3ecdef56b2b18551939ec58f0
|
Provenance
The following attestation bundles were made for otto_cli_agent-0.1.1.tar.gz:
Publisher:
publish.yml on siddharth23P/otto_agent
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
otto_cli_agent-0.1.1.tar.gz -
Subject digest:
88471e799811e85c7218ae6857057acde67ac7515a24bbf9c2b51b69980f18ee - Sigstore transparency entry: 2820340951
- Sigstore integration time:
-
Permalink:
siddharth23P/otto_agent@f334761a5bf6a724973b978ffa8d1b6fc4c3a59f -
Branch / Tag:
refs/tags/v0.1.1 - Owner: https://github.com/siddharth23P
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@f334761a5bf6a724973b978ffa8d1b6fc4c3a59f -
Trigger Event:
release
-
Statement type:
File details
Details for the file otto_cli_agent-0.1.1-py3-none-any.whl.
File metadata
- Download URL: otto_cli_agent-0.1.1-py3-none-any.whl
- Upload date:
- Size: 531.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0cbaeffc11d8787a0356941626c7f1a96d29c8f486e9b3d0ed7238943edc0598
|
|
| MD5 |
c656ed68e113c441a4808e3e5bc08bd5
|
|
| BLAKE2b-256 |
c92df1e237f341063b26c768767f629527ee029d3d5bd0002e4a16a5b2c2ed8d
|
Provenance
The following attestation bundles were made for otto_cli_agent-0.1.1-py3-none-any.whl:
Publisher:
publish.yml on siddharth23P/otto_agent
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
otto_cli_agent-0.1.1-py3-none-any.whl -
Subject digest:
0cbaeffc11d8787a0356941626c7f1a96d29c8f486e9b3d0ed7238943edc0598 - Sigstore transparency entry: 2820341021
- Sigstore integration time:
-
Permalink:
siddharth23P/otto_agent@f334761a5bf6a724973b978ffa8d1b6fc4c3a59f -
Branch / Tag:
refs/tags/v0.1.1 - Owner: https://github.com/siddharth23P
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@f334761a5bf6a724973b978ffa8d1b6fc4c3a59f -
Trigger Event:
release
-
Statement type: