Catalog PyPI
PACKAGE EXPLORERView in registry

acoder

PyPI

Interactive agentic coding CLI backed by your own open-source model endpoint

agentaiclicoding-agentllmopenai-compatibleqwen
Versions collected1
Direct dependencies8From release 0.1.0
Last observed20 Oct, 18:20 UTC

README

Version 0.1.0 documentation

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:

  1. Ingest — map the repo: every file, class, function, signature, docstring, import, and cross-file call edge → .acoder/repomap.json
  2. 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/
  3. Plan — short step plan + edge-case list, grounded in the map + docs
  4. Code — generate the full solution with that assembled context
  5. 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)

BenchmarkBaselineAgenticNotes
HumanEval92.7—greedy, FP8, 48GB serverless worker
HumanEval+89.087.2 (naive v1)v1 regression is what motivated anchored verify
BigCodeBench-Hardpendingpendingresearch 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.

Downloads & popularity

Awaiting observations

No metric observations yet

Download counts and popularity will appear here as the collector receives them.

Versions 1

Collected releases
VersionPublishedDirect dependenciesOpen version
0.1.08 Jul 20268

Package advisories

0
No matching advisories collected

This describes our collected data; it is not a security assessment.

Repository

PENDING
amogh/acoder

Shared repository data · GitHub

License detected in repository
Not collected

Metadata history

Meaningful changes
Current collected state Current

Observed since 20 Oct, 18:20 UTC

No superseded metadata states collected. Unchanged observations do not create new revisions.

Record identity

package:e5fefddec9a4f278a5084c4a96b330160f2f3ae6e7d69cc5eb3368fcc033ac81