code-it
A terminal-based, OpenAI-compatible coding agent that reads, edits, and runs code in your project through a ReAct-style tool-calling loop with approvals, hooks, MCP, and session persistence.
Install
Prerequisites: Python 3.13+ and uv.
Install dependencies into the project-managed environment:
uv sync
Build distributable artifacts:
uv build
This creates:
dist/code_it-<version>-py3-none-any.whldist/code_it-<version>.tar.gz
First Run
After syncing the project environment, configure credentials:
uv run code-it --configure
This prompts for:
- your API key
- an optional base URL for any OpenAI-compatible provider
The values are saved in your user config file at:
- Windows:
%APPDATA%\code-it\config.toml - macOS:
~/Library/Application Support/code-it/config.toml - Linux:
~/.config/code-it/config.toml
You can still use a project-local .env file or API_KEY and BASE_URL environment variables, but they are no longer required for packaged installs.
Usage
Run interactively:
uv run code-it
Run a single prompt:
uv run code-it "Summarize what this repo does"
Target a specific working directory:
uv run code-it --cwd /path/to/project "Find and fix the failing test"
Update saved credentials later:
uv run code-it --configure
Inside an interactive session:
[user]> /setup # update saved API credentials
[user]> /tools # list available tools
[user]> /mcp # list connected MCP servers
[user]> /approval auto-edit # change the approval policy
[user]> /save # save the current session
[user]> /sessions # list saved sessions
[user]> /resume <session_id> # resume a saved session
[user]> /checkpoint # snapshot the current session
[user]> /stats # show token/turn usage stats
[user]> /exit # quit
Project Config
Project-level overrides still live in .ai-agent/config.toml.
You can also add:
AGENT.MDfor project-specific developer instructions.ai-agent/skills/<skill-name>/SKILL.mdfor reusable skills.ai-agent/tools/*.pyfor custom tools
Publish Checklist
- Bump
versioninpyproject.toml. - Run tests.
- Build the wheel and sdist with
uv build --no-sources. - Test the CLI with
uv run code-it --configure. - Upload to TestPyPI.
- Verify both
uv run code-it --configureanduv run code-itwork. - Publish to PyPI.
Publish With uv
Recommended local release flow:
uv sync --frozen
uv run python -m unittest tests.test_config_loader tests.test_skills
uv build --no-sources
uv run --isolated --no-project --with dist/*.whl tests/smoke_test.py
uv run --isolated --no-project --with dist/*.tar.gz tests/smoke_test.py
TestPyPI publish:
$env:UV_PUBLISH_TOKEN="pypi-***"
uv publish --publish-url https://test.pypi.org/legacy/
PyPI publish:
$env:UV_PUBLISH_TOKEN="pypi-***"
uv publish
For the first release, verify the package name on PyPI before publishing. If code-it is already taken, rename project.name in pyproject.toml before uploading.
Trusted Publishing
A GitHub Actions release workflow is included at .github/workflows/publish.yml.
To use it:
- Create the project on PyPI.
- In the PyPI project settings, add a Trusted Publisher for this GitHub repository.
- In GitHub, create an environment named
pypi. - Push a version tag like
v0.1.0.
That workflow will:
- sync with
uv - run the unit tests
- build the wheel and source distribution
- smoke-test both artifacts
- publish with
uv publish
Why uv Instead of pip install -e .
This repository already carries a uv.lock, so uv sync is the safer default for development. It avoids polluting a shared Python installation and reduces resolver conflicts with unrelated packages already installed on your machine.
License
Distributed under the MIT License.
Metadata
Release files for codenaut 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| codenaut-0.1.0.tar.gz | 73.0 kB | Without provenance | Details for codenaut-0.1.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| codenaut-0.1.0-py3-none-any.whl | Python 3 | none | any | Details for codenaut-0.1.0-py3-none-any.whl |
Total release size: 153.0 kB
Release files / codenaut-0.1.0.tar.gz
| Download URL | codenaut-0.1.0.tar.gz |
|---|---|
| Size | 73.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
3620fb7158170347b78d57f0aa3a555965e0f1b3dbc0c11514a92bea823614ac
|
|
BLAKE2b-256 checksum How to use checksums |
b0a40960abd57a0c7017570c2324477799df2f3fddc34c103e01b917e0b98d79
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.8.11
|
Release files / codenaut-0.1.0-py3-none-any.whl
| Download URL | codenaut-0.1.0-py3-none-any.whl |
|---|---|
| Size | 80.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
c9248c5d740e0c423f87e6147cd2f68be526277dd29d78f91cb7c42e5b98e682
|
|
BLAKE2b-256 checksum How to use checksums |
409d37e4c7bb086865e8a17c1e9bb8cd0cddb7c5dfd0c6b382b9aa68beb2ae2a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.8.11
|
Security for codenaut 0.1.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.