Metadata-Version: 2.5
Name: otto-cli-agent
Version: 0.1.2
Summary: Otto: a terminal AI agent built around measured results -- one agent loop, a rubric-first evaluator, tiered memory, multi-vendor routing, and six benchmark harnesses.
Project-URL: Repository, https://github.com/siddharth23P/otto_agent
Project-URL: Issues, https://github.com/siddharth23P/otto_agent/issues
Author-email: Siddharth Priyadarshi <sid23p@gmail.com>
License: MIT License
        
        Copyright (c) 2026 Siddharth Priyadarshi
        
        Permission is hereby granted, free of charge, to any person obtaining a copy
        of this software and associated documentation files (the "Software"), to deal
        in the Software without restriction, including without limitation the rights
        to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
        copies of the Software, and to permit persons to whom the Software is
        furnished to do so, subject to the following conditions:
        
        The above copyright notice and this permission notice shall be included in all
        copies or substantial portions of the Software.
        
        THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
        IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
        FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
        AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
        LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
        OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
        SOFTWARE.
License-File: LICENSE
Keywords: agent,claw-eval,evaluation,langgraph,llm,memory,swe-bench,tui
Classifier: Development Status :: 4 - Beta
Classifier: Environment :: Console
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Programming Language :: Python :: 3.12
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
Classifier: Topic :: Software Development
Requires-Python: >=3.12
Requires-Dist: emoji>=2.15.0
Requires-Dist: inceptionai>=0.1.3
Requires-Dist: langchain-anthropic>=1.7.1
Requires-Dist: langchain-google-genai>=4.4.0
Requires-Dist: langchain-openai>=1.6.0
Requires-Dist: langchain>=1.4.0
Requires-Dist: langfuse>=4.15.1
Requires-Dist: langgraph>=1.2.11
Requires-Dist: numpy>=1.26.2
Requires-Dist: openpyxl>=3.1.5; sys_platform != 'android'
Requires-Dist: prompt-toolkit>=3.0.53
Requires-Dist: python-docx>=1.1.2; sys_platform != 'android'
Requires-Dist: python-dotenv>=1.2.3
Requires-Dist: reportlab>=4.2; sys_platform != 'android'
Requires-Dist: textual>=8.2.8
Requires-Dist: tiktoken>=0.14.0
Requires-Dist: typer>=0.27.2
Provides-Extra: dev-server
Requires-Dist: langgraph-cli[inmem]>=0.4.31; extra == 'dev-server'
Provides-Extra: local-embeddings
Requires-Dist: fastembed>=0.8.0; extra == 'local-embeddings'
Provides-Extra: serve
Requires-Dist: websockets>=13; extra == 'serve'
Description-Content-Type: text/markdown

# 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,685
tests that need no API key. It embeds: `agent.embed` is the surface an app
with Otto's Python inside it depends on.

![One minute of otto tui](https://raw.githubusercontent.com/siddharth23P/otto_agent/main/docs/media/otto-demo.gif)

## Install

```bash
pip install "otto-cli-agent[local-embeddings]"
otto doctor
otto tui
```

The `local-embeddings` extra is the on-device embedding model; without it
recall uses a Gemini key when there is one, and recency otherwise. `[serve]`
adds `otto serve`, the agent behind a WebSocket for the phone app.

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.
