Skip to main content

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

Project description

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)

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.

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

acoder-0.1.0.tar.gz (39.8 kB view details)

Uploaded Source

Built Distribution

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

acoder-0.1.0-py3-none-any.whl (47.6 kB view details)

Uploaded Python 3

File details

Details for the file acoder-0.1.0.tar.gz.

File metadata

  • Download URL: acoder-0.1.0.tar.gz
  • Upload date:
  • Size: 39.8 kB
  • Tags: Source
  • Uploaded using 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}

File hashes

Hashes for acoder-0.1.0.tar.gz
Algorithm Hash digest
SHA256 eaea239068fad5ceb9887e74a40331dcf8e5839b0a6e1ccea30dc93bbabfef8c
MD5 988b986e0863902712aa576839d90582
BLAKE2b-256 a959125cf0fc962f2a0bc49efdbef9091f105f4900d3b250810f94606be96b24

See more details on using hashes here.

File details

Details for the file acoder-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: acoder-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 47.6 kB
  • Tags: Python 3
  • Uploaded using 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}

File hashes

Hashes for acoder-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 f193131ef31d656aff8b347c0604f8e7c55eab12d18fe7b9caffa2b6b24d9839
MD5 2d5342133d48514648519a29c00eb3c8
BLAKE2b-256 117fae0c1fc0b4ac451bb76c5741c98f8ed1750df19267db1e59f968c5452f4a

See more details on using hashes here.

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