acoder
Interactive agentic coding CLI backed by your own open-source model endpoint (any OpenAI-compatible URL — e.g. Qwen3-Coder on RunPod serverless). A terminal coding agent like Claude Code / Codex, but pointed at a model you host.
Install & run (no install needed)
uvx acoder setup # one-time: enter your endpoint URL + API key
uvx acoder chat # interactive agent session
uvx (from uv) runs acoder without installing it and
provisions Python for you — nothing to set up but your endpoint. Prefer a permanent
install? uv tool install acoder or pipx install acoder, then just acoder chat.
Config is read from env vars, ./.env, or ~/.config/acoder/config.env
(written by acoder setup): ACODER_ENDPOINT, ACODER_API_KEY, ACODER_MODEL.
Optional extras: acoder[research] (Firecrawl library docs), acoder[bench]
(benchmark harness), acoder[all].
Interactive agent
acoder chat --mode approve # default: approve each write/command (y/n/a)
acoder chat --mode auto # full autonomy
acoder chat --mode plan # read-only: investigates, proposes, never edits
acoder do "fix the failing test in parser.py and run pytest" # one-shot
The agent reads/searches freely and gates every file write and shell command by
your chosen mode. Slash commands in the REPL: /mode, /ingest, /cost,
/reset, /help, /exit.
Batch workflow (the original staged pipeline)
Works like a careful human dev, in strict stages:
- Ingest — map the repo: every file, class, function, signature,
docstring, import, and cross-file call edge →
.acoder/repomap.json - Research — detect the libraries the task touches; fetch official docs
via Firecrawl (free search fallback without a key); cache condensed API
notes per package in
.acoder/libdocs/ - Plan — short step plan + edge-case list, grounded in the map + docs
- Code — generate the full solution with that assembled context
- Verify — run tests in a sandbox; repair loop with anchored acceptance
Verification design (measured, not vibes)
Naive self-repair (model writes tests, repairs until they pass) lowered HumanEval+ from 89.0 → 87.2 in our runs: bad model-written tests break good code. acoder therefore treats task-statement examples as ground truth anchors; model-written tests are advisory, and a repair is only accepted if it strictly improves the score.
Usage
cp .env.example .env # RUNPOD_API_KEY, ACODER_ENDPOINT, FIRECRAWL_API_KEY
pip install -e ".[bench]"
acoder ingest . # build the repo map
acoder research pandas # cache API notes for a library
acoder solve "add a retry decorator to http_get in client.py" --path .
acoder bench humaneval --mode baseline
acoder bench bigcodebench --mode agent
acoder report # scorecard vs frontier reference numbers
Benchmarks (this deployment, pass@1)
| Benchmark | Baseline | Agentic | Notes |
|---|---|---|---|
| HumanEval | 92.7 | — | greedy, FP8, 48GB serverless worker |
| HumanEval+ | 89.0 | 87.2 (naive v1) | v1 regression is what motivated anchored verify |
| BigCodeBench-Hard | pending | pending | research stage on |
macOS note: EvalPlus's sandbox calls resource.setrlimit(RLIMIT_AS, ...),
which macOS rejects — wrap it in try/except ValueError in
evalplus/eval/utils.py or every task scores 0.
Metadata
Release files for acoder 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| acoder-0.1.0.tar.gz | 39.8 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| acoder-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 87.4 kB
Release files / acoder-0.1.0.tar.gz
| Download URL | acoder-0.1.0.tar.gz |
|---|---|
| Size | 39.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
eaea239068fad5ceb9887e74a40331dcf8e5839b0a6e1ccea30dc93bbabfef8c
|
|
BLAKE2b-256 checksum How to use checksums |
a959125cf0fc962f2a0bc49efdbef9091f105f4900d3b250810f94606be96b24
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.11.7 {"installer":{"name":"uv","version":"0.11.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Release files / acoder-0.1.0-py3-none-any.whl
| Download URL | acoder-0.1.0-py3-none-any.whl |
|---|---|
| Size | 47.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
f193131ef31d656aff8b347c0604f8e7c55eab12d18fe7b9caffa2b6b24d9839
|
|
BLAKE2b-256 checksum How to use checksums |
117fae0c1fc0b4ac451bb76c5741c98f8ed1750df19267db1e59f968c5452f4a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.11.7 {"installer":{"name":"uv","version":"0.11.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|