Minimal contract-driven coding-agent runtime + CLI
Project description
Hexi v0.1.0
Hexi is a minimal, contract-driven (hexagonal) coding-agent runtime and CLI. It runs exactly one agent step per invocation against a local git repository.
Test Drive (5 Minutes)
Run this in any local git repo you can safely modify.
- Install Hexi:
pip install -e .
Optional OpenRouter support:
pip install -e ".[openrouter]"
- Initialize Hexi files:
hexi init
- Onboard provider/model and key:
hexi onboard
When prompted, pick any provider. For OpenRouter providers, install the optional extra and provide OPENROUTER_API_KEY.
- Verify setup:
hexi doctor
Expected: provider/model printed and Doctor check passed.
- Run one agent step:
hexi run "Add one tiny test for an existing function and run pytest"
- Inspect what changed:
hexi diff
tail -n 20 .hexi/runlog.jsonl
- If you want to switch providers later:
hexi onboard
Re-run onboarding to update .hexi/local.toml.
What it is
- Python package (PyPI distribution):
hexicodes - Core contracts in
hexi.core - Side-effect adapters in
hexi.adapters - One-step execution with structured event logging to
.hexi/runlog.jsonl
What it is not
- No daemon, no background workers, no web UI
- No MCP server and no SQLite in v0.1.0
- No multi-agent orchestration
Install
pip install -e .
OpenRouter support (optional)
- HTTP adapter only (
openrouter_httpprovider):
pip install -e ".[openrouter-http]"
- SDK adapter only (
openrouter_sdkprovider):
pip install -e ".[openrouter-sdk]"
- Both OpenRouter adapters:
pip install -e ".[openrouter]"
Dev/test dependencies:
pip install -e ".[dev]"
CLI
hexi --helporhexi help: show command helphexi --versionorhexi version: print installed versionhexi init: create.hexi/config.toml,.hexi/local.toml,.hexi/runlog.jsonlhexi onboard: interactive setup for provider/model and optional local key pastehexi new: scaffold a project from built-in Hexi templates (non-interactive by default)hexi demo: fancy interactive flow with random/model-generated ideas and template scaffoldinghexi run "<task>": execute one agent step and emit structured eventshexi diff: show current git diffhexi doctor: verbose diagnostics; use--probe-modelfor live “What model are you?” checkhexi plan-check --file plan.json: validate/troubleshoot ActionPlan JSON directly
Documentation (MkDocs + Read the Docs)
Build docs locally:
pip install -e ".[docs]"
mkdocs serve
Read the Docs config is in .readthedocs.yml.
Configuration design choices
Hexi uses layered TOML configuration:
.hexi/config.toml(repo defaults).hexi/local.toml(local machine overrides)- Environment variables (recommended for secrets)
For secrets, env vars are preferred. hexi onboard can write keys to .hexi/local.toml for local/testing convenience.
Config shape (.hexi/config.toml)
[model]
provider = "openai_compat" # openrouter_http | openrouter_sdk | openai_compat | anthropic_compat
model = "gpt-4o-mini"
[providers.openrouter_http]
base_url = "https://openrouter.ai/api/v1"
api_style = "openai" # openai | anthropic
[providers.openrouter_sdk]
base_url = "https://openrouter.ai/api/v1"
[providers.openai_compat]
base_url = "https://api.openai.com/v1"
[providers.anthropic_compat]
base_url = "https://api.anthropic.com"
[policy]
allow_commands = ["git status", "git diff", "pytest", "python -m pytest"]
max_diff_chars = 4000
max_file_read_chars = 4000
Local override example (.hexi/local.toml)
[model]
provider = "openrouter_http"
model = "anthropic/claude-sonnet-4-6"
[providers.openrouter_http]
api_style = "anthropic"
[secrets]
openrouter_api_key = "..."
Env vars
OPENROUTER_API_KEYforopenrouter_httpandopenrouter_sdkOPENAI_API_KEYforopenai_compatANTHROPIC_API_KEYforanthropic_compat
Packaging
- Distribution name:
hexicodes - Console script:
hexi - Optional extras:
openrouter-httpopenrouter-sdkopenrouterdocsdev
Included example projects
examples/todo_refiner: minimal CLI-wrapper agent integrationexamples/embedded_step: direct embeddedRunStepServiceusageexamples/policy_loop: multi-step user-gated loop using repeatedhexi run
Included Hexi-native templates
templates/hexi-python-lib: tested library starter with Hexi wiringtemplates/hexi-fastapi-service: FastAPI service starter with Hexi wiringtemplates/hexi-typer-cli: Typer CLI starter with Hexi wiringtemplates/hexi-data-job: data job starter with dry-run and Hexi wiringtemplates/hexi-agent-worker: embedded Hexi runtime starter
Provenance
Made with ❤️ from 🇵🇪. El Perú es clave 🔑.
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
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 hexicodes-0.1.0.tar.gz.
File metadata
- Download URL: hexicodes-0.1.0.tar.gz
- Upload date:
- Size: 29.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4dec5adaca8877c341f8d334af76281d3333c0556c293efabd20464e32f9ff59
|
|
| MD5 |
aa8acb7be9acccd8b9ad61123f7a9427
|
|
| BLAKE2b-256 |
dd5a65ec269b169fb13e6d508c4998640865844d5d0c097bd03fec81b7f2bdef
|
File details
Details for the file hexicodes-0.1.0-py3-none-any.whl.
File metadata
- Download URL: hexicodes-0.1.0-py3-none-any.whl
- Upload date:
- Size: 27.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6623d44587670e8d6b45bd46816c96850c1ab57a1e1aa71f0342c466bb60ad38
|
|
| MD5 |
5084b7f004b8fc986cc00eb926b9d6c4
|
|
| BLAKE2b-256 |
41f9f447ac91d3e742a35772ba31717ae0a7b401c355884d7311057c9194fe8b
|