Skip to main content

agent7

The simplest coding agent. ~1200 lines of Python, four tools, one loop.

No orchestration: no plan mode, no subagents, no parallel tasks, no background jobs. You give it one sentence; it reads files, edits files, runs commands, then stops. Built for people who work on one thing at a time — you hold one task in your head, and so does it.

agent7/        1252 lines
  __main__.py   355   CLI + REPL + @path completion
  agent.py      398   tools + agent loop + compaction
  commands.py   236   slash commands + model switching
  providers.py  161   API key auth
  session.py    101   session state

Install

pip install agent7
# or: uv tool install agent7
# or from source: uv sync && uv run agent7

Auth

Paste an API key; there is no OAuth. Keys are stored in ~/.config/agent7/auth.json.

export DEEPSEEK_API_KEY=sk-...
# export KIMI_API_KEY=...
# export MOONSHOT_API_KEY=sk-...
# export AGENT7_MODEL=deepseek-flash

You can also log in from inside the REPL:

/login deepseek
/login kimi              # optional: /login kimi global
/login moonshot
/model                   # list models for every logged-in provider
/model deepseek-flash

Usage

uv run agent7 "create hello.py that prints hi"   # one-shot
uv run agent7                                    # REPL

REPL commands: /help /model /status /login /logout /compact. Exit with an empty line or Ctrl-D.

Type @ in the REPL to recursively complete files and directories from the cwd: fix @agent7/agent.py. Tab accepts, directories keep going (@agent7/ → @agent7/session.py), and spaces are escaped (@my\ file.txt), so the path the model sees is the path it can read.

--cwd sets the working directory, --max-turns caps the loop (default 30 turns; when it runs out you get # (stopped after N turns)). A run that ends with no visible text never ends silently: you get either # (stopped after N turns), # no text in the reply … or # … hit the output token limit ….

Only four tools

Tool What it does Output budget
read Read a file with line numbers 200 lines per call by default; page with offset=
write Write a file; with old_string= replace one unique span path +N -M diff stats
bash Run a shell command in the cwd ~12k chars
grep rg/grep search 100 lines / ~12k chars

That's it. No edit, no list_dir, no todo, no task. Need more capability? Let the agent use bash.

Tools run serially, one after another — so the log always reads in order and you never get three outputs interleaved. Edits are applied without a confirmation prompt; you just get a one-line diff stat.

Context

At 75% context usage, old tool/assistant text is compacted automatically: the last 3 user turns are kept, or for one-shot tasks the last 4 tool results. /compact triggers the same compaction manually.

AGENT7_CONTEXT_LIMIT overrides the context limit.

What it is not

  • Not an orchestrator: no branching, no subagents
  • Not a parallel framework: single-threaded, one thing at a time
  • Not a background service: a foreground process, stopped with Ctrl-C
  • No sandbox: tools run as you, and bash can do anything your account can do

If that kind of "small" is exactly what you want, this is enough. If it's missing the abstraction you had in mind, that omission is probably the point — not an oversight.

Metadata

Release files for agent7 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for agent7 0.1.0
File Size Uploaded Provenance Actions
agent7-0.1.0.tar.gz 17.8 kB Without provenance Details for agent7-0.1.0.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for agent7 0.1.0
File Interpreter ABI Platform Actions
agent7-0.1.0-py3-none-any.whl Python 3 none any Details for agent7-0.1.0-py3-none-any.whl

Total release size: 38.9 kB

Release files / agent7-0.1.0.tar.gz

Download URL agent7-0.1.0.tar.gz
Size 17.8 kB
Tags Source
SHA-256 checksum
How to use checksums
3d0a2e7e7be94197a1affe917a2484e35411beda1ad3ee872fad20b1810d2e5f
BLAKE2b-256 checksum
How to use checksums
b45f613b3f72a7190d46cab150878dd520706d993a66ef4c183b590ab68e9f71
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.8.9

Release files / agent7-0.1.0-py3-none-any.whl

Download URL agent7-0.1.0-py3-none-any.whl
Size 21.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
042d7f0aff5233de7e67129ed6853534d4cfbd87c6b6ac81e38911fd90dea0bb
BLAKE2b-256 checksum
How to use checksums
8221ef467b665284370b21e9a95b7ff7561cf14c3201587fc91786d5c4b99f8a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.8.9

Security for agent7 0.1.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page