Skip to main content

An interactive terminal AI agent you can fully undo — any model, acts on your real files, every action reversible.

Project description

opendot

An interactive terminal AI agent you can fully undo.

CI PyPI Downloads License: MIT

opendot works directly on your real files and shell — but unlike other terminal agents, every action it takes is snapshotted first, so you can see exactly what it did and cleanly walk it back. Files and shell commands, not just in-repo edits. Commands whose effects escape your workspace (network, sudo, git push, deleting outside the working dir) are flagged and confirmed before they run, with an honest note about what can't be undone.

That's the point of opendot: an agent you can let loose because nothing it does is a surprise, and (almost) nothing is irreversible.

Install

# try it instantly, no install
uvx opendot

# recommended (isolated global CLI)
uv tool install opendot        # or: pipx install opendot

# also works
pip install opendot

Use

opendot                              # open an interactive chat
opendot -p "summarize this project"  # one-shot, for scripts / CI
opendot --model claude-sonnet-4-5    # any model (see below)

opendot log                          # audit: what has the agent done here?
opendot undo                         # revert the last action
opendot undo 000004                  # restore the workspace to before action #4

Inside the chat, slash-commands: /log, /undo, /clear, /compact, /model, /help.

Any model

opendot uses LiteLLM, so any model works — cloud, local, or Hugging Face. Set the provider's API key in your environment and pass --model:

Provider Env var Example --model
OpenAI OPENAI_API_KEY gpt-4o
Anthropic ANTHROPIC_API_KEY claude-sonnet-4-5
Google GEMINI_API_KEY gemini/gemini-2.0-flash
Ollama (local) ollama/qwen2.5

Reasoning models stream their thinking live.

Connect MCP servers

opendot is an MCP client: connect any MCP server and its tools become available to the agent alongside the built-in ones.

# a stdio server — put its launch command after `--`
opendot mcp add <name> --env KEY=VALUE -- <command> [args...]

# a remote server (http/sse)
opendot mcp add <name> --url <https url>

opendot mcp list           # show configured servers
opendot mcp remove <name>  # remove one

Servers are stored in ~/.opendot/mcp.json and connect automatically on the next launch; connected servers appear in the sidebar.

Because opendot can't know what an external tool does, every MCP tool call is treated as irreversible — it's confirmed before running and marked ✗ in the ledger. Your built-in file/shell actions stay snapshotted and undoable as usual.

Project rules — OPENDOT.md

Drop an OPENDOT.md in your project. Its prose is given to the agent as context. You can also control what gets snapshotted with an opendot block:

```opendot
# snapshot these even though they'd normally be skipped:
snapshot: dist
# never snapshot these:
skip: data, *.log
```

By default opendot skips .git, node_modules, virtualenvs, and build caches when snapshotting — your rules override those in either direction.

How the reversibility works

  • Before every file write or shell command, opendot snapshots the working directory into a content-addressed store in ~/.opendot (each unique file stored once, so snapshots are cheap).
  • Every action is recorded in an append-only ledger you can inspect with opendot log.
  • opendot undo restores the workspace to a chosen point, exactly.
  • A conservative classifier decides which shell commands are workspace- contained (auto-run, undoable) vs. escaping (confirmed first, marked irreversible). When unsure, it asks.

Honest boundary: opendot cannot undo effects that leave your machine (a sent email, a dropped remote database, a git push). It tells you before running those, rather than pretending otherwise.

Status

Early (alpha). The interactive agent, local tools, and the full reversibility engine work and are tested. Streaming, slash-commands, and OPENDOT.md rules are in. A richer TUI and more tools are coming.

MIT licensed.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

opendot-0.0.2.tar.gz (224.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

opendot-0.0.2-py3-none-any.whl (43.5 kB view details)

Uploaded Python 3

File details

Details for the file opendot-0.0.2.tar.gz.

File metadata

  • Download URL: opendot-0.0.2.tar.gz
  • Upload date:
  • Size: 224.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.14

File hashes

Hashes for opendot-0.0.2.tar.gz
Algorithm Hash digest
SHA256 e0b5e3d4a631b8e047574e479f81849c98f0f22fc7ac9c3af4bb6f7e69b12ccc
MD5 8bd621a1d87300065c7cbcf31baed332
BLAKE2b-256 a1d02a2eaaccf896c40abde018ccd6bba288c2965ed6eb83fb8f8395a1731855

See more details on using hashes here.

Provenance

The following attestation bundles were made for opendot-0.0.2.tar.gz:

Publisher: release.yml on vedaant00/opendot

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file opendot-0.0.2-py3-none-any.whl.

File metadata

  • Download URL: opendot-0.0.2-py3-none-any.whl
  • Upload date:
  • Size: 43.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.14

File hashes

Hashes for opendot-0.0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 8fc01d5bc2b0a775945e899cfa0c92a2e485eef31c9d1e0b271ad2958ae40408
MD5 ddf08465545f831afa20b0bfe290e8d8
BLAKE2b-256 58675482dba9c96b16be4172ecdbc5784ac212bf4df261fbc345ecc2fba3e920

See more details on using hashes here.

Provenance

The following attestation bundles were made for opendot-0.0.2-py3-none-any.whl:

Publisher: release.yml on vedaant00/opendot

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page