Local coding agent CLI.
Project description
caigode
caigode is a local coding-agent CLI with:
- stateful chat sessions
- file and command tools (
list_dir,read_file,write_file,run_command) - local state/review artifacts under
.caigode/ - CI + tag-based GitHub Release + PyPI publish workflow
Requirements
- Python
>=3.11 uv(recommended) orpip
Install
Option A: uv sync
uv sync --dev
Option B: editable install
uv pip install -e .
Then run with either:
uv run caigode --help
or after activating virtualenv:
caigode --help
Configuration
Required environment variables:
OPENAI_MODELOPENAI_BASE_URLOPENAI_API_KEY
Optional:
OPENAI_TIMEOUT_SECONDS(default120)CAIGODE_WORKSPACE(default current directory)CAIGODE_STATE_DIR(default.caigode)
Example:
export OPENAI_MODEL="gpt-5.4"
export OPENAI_BASE_URL="https://api.openai.com/v1"
export OPENAI_API_KEY="sk-..."
export OPENAI_TIMEOUT_SECONDS="120"
You can also pass these by CLI arguments:
--model--base-url--api-key--timeout-seconds
Usage
Chat (stateful)
caigode chat
Chat keeps appending messages in-memory for the current process.
Each turn is persisted to .caigode/sessions/<session_id>.jsonl.
Run one-shot task
caigode run "update README based on current project"
Status
caigode status
Review artifact
caigode review
Tooling Behavior
Available tools:
list_dir(path=".", recursive=false, max_entries=200)read_file(path, offset?, limit?, start_line?, end_line?)write_file(path, content)run_command(command)
Notes:
read_filesupports both byte-like slicing (offset/limit) and line-window slicing (start_line/end_line).- tool outputs are trimmed before returning to the model to reduce context growth.
Persistence Model
Session files are append-only JSONL:
.caigode/sessions/<session_id>.jsonl
Each line stores the latest session snapshot (result/error/messages/etc).
status and review read the latest entry per session.
Tests
uv run pytest -q
CI / Release / PyPI
This repo includes:
.github/workflows/ci.yml- runs tests on push/PR (Python 3.11/3.12)
.github/workflows/release.yml- triggers on
v*tags - builds
sdist+wheel - publishes GitHub Release
- publishes to PyPI via Trusted Publisher (
id-token: write)
- triggers on
One-time PyPI setup
- Create the project on PyPI (name:
caigodeif available). - In PyPI, configure Trusted Publisher for this GitHub repo and workflow.
- Push a version tag:
git tag v0.1.0
git push origin v0.1.0
That tag will trigger both GitHub Release and PyPI publish.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file caigode-0.1.2.tar.gz.
File metadata
- Download URL: caigode-0.1.2.tar.gz
- Upload date:
- Size: 48.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8608bc7be3028db968a4862d15829b163507d68cf9bda31024338c2a30d6fef8
|
|
| MD5 |
5581cd56ee27333620c1ff5c7a2d1444
|
|
| BLAKE2b-256 |
22c7568fa0f4df2e8c08803f037f4a4344ed536edc0a355f5c3c44ad50afc6c1
|
Provenance
The following attestation bundles were made for caigode-0.1.2.tar.gz:
Publisher:
release.yml on xvlincaigou/caigode
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
caigode-0.1.2.tar.gz -
Subject digest:
8608bc7be3028db968a4862d15829b163507d68cf9bda31024338c2a30d6fef8 - Sigstore transparency entry: 1689128018
- Sigstore integration time:
-
Permalink:
xvlincaigou/caigode@8b577751c3386c24450c7e6481aba577f487e9b0 -
Branch / Tag:
refs/tags/v0.1.2 - Owner: https://github.com/xvlincaigou
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@8b577751c3386c24450c7e6481aba577f487e9b0 -
Trigger Event:
push
-
Statement type:
File details
Details for the file caigode-0.1.2-py3-none-any.whl.
File metadata
- Download URL: caigode-0.1.2-py3-none-any.whl
- Upload date:
- Size: 28.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c64330507e721846b6f213021c0a96d8db7f50edeca6a4588357739813ceb49c
|
|
| MD5 |
de9df6b5d1499073c4f1eefc35091aa4
|
|
| BLAKE2b-256 |
998db8ddfab6f257ba8c23be9496bef6c2cb03be8b591e67cb14d08c32b159df
|
Provenance
The following attestation bundles were made for caigode-0.1.2-py3-none-any.whl:
Publisher:
release.yml on xvlincaigou/caigode
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
caigode-0.1.2-py3-none-any.whl -
Subject digest:
c64330507e721846b6f213021c0a96d8db7f50edeca6a4588357739813ceb49c - Sigstore transparency entry: 1689128034
- Sigstore integration time:
-
Permalink:
xvlincaigou/caigode@8b577751c3386c24450c7e6481aba577f487e9b0 -
Branch / Tag:
refs/tags/v0.1.2 - Owner: https://github.com/xvlincaigou
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@8b577751c3386c24450c7e6481aba577f487e9b0 -
Trigger Event:
push
-
Statement type: