Skip to main content

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) or pip

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_MODEL
  • OPENAI_BASE_URL
  • OPENAI_API_KEY

Optional:

  • OPENAI_TIMEOUT_SECONDS (default 120)
  • 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_file supports 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)

One-time PyPI setup

  1. Create the project on PyPI (name: caigode if available).
  2. In PyPI, configure Trusted Publisher for this GitHub repo and workflow.
  3. 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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

caigode-0.1.0.tar.gz (45.8 kB view details)

Uploaded Source

Built Distribution

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

caigode-0.1.0-py3-none-any.whl (26.9 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: caigode-0.1.0.tar.gz
  • Upload date:
  • Size: 45.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for caigode-0.1.0.tar.gz
Algorithm Hash digest
SHA256 d60f75f68d40e33b5f5a12c268756c46a0bb78694e1edf38ccb80f226fc73b14
MD5 da9da77c1593ec6e054d2d59b6ce875f
BLAKE2b-256 9daeddb69e3c820e37f40d365da0288b22f218879a089c82fca0f25eb667d9cc

See more details on using hashes here.

Provenance

The following attestation bundles were made for caigode-0.1.0.tar.gz:

Publisher: release.yml on xvlincaigou/caigode

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

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

File metadata

  • Download URL: caigode-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 26.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for caigode-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 003f22364424bf023c189c1963cfdbcc87262b549cc99455d88d24e46970ca54
MD5 9e815df1fce5d95c0fdb62c160012ac2
BLAKE2b-256 554b1feac7a2915a490ca719a58969922a85c9b5afaaa0093604af0fb2ca0e65

See more details on using hashes here.

Provenance

The following attestation bundles were made for caigode-0.1.0-py3-none-any.whl:

Publisher: release.yml on xvlincaigou/caigode

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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