Sage — a local-first AI coding CLI (like Claude Code, using free/open models)
Project description
Sage AI CLI
A free, local-first AI coding agent for your terminal. Like Claude Code, but using free and open models — no API key required.
pip install sage-ai-cli
sage install # auto-pulls models, sets best coder, builds RAG, prewarms
sage run # start coding with the full Tier 1-3 safety harness
What Sage Does
Sage is an autonomous coding agent that runs in your terminal. It:
- Plans your task and breaks it into concrete steps
- Reads your codebase (with project-aware RAG) to ground itself in real symbols
- Writes code using TDD — tests first, then implementation
- Runs tests automatically and fixes failures
- Iterates until the task is complete
- Routes to the best-fit model per request (small for trivial, strong for hard)
- Searches the web for docs when its training data is too old
- Fine-tunes local LoRA adapters on your codebase
- Refuses to run with a model too small to follow the protocol (T1)
- Stages all writes through a tmpdir so broken output never reaches your repo (T5)
- Blocks
npm installafter rejecting a poisonpackage.json(T6)
All using free AI models — no API keys, no subscriptions, no cloud dependency.
Quick Start
# Install everything (Ollama, models, RAG, optional deps) — disk-aware
pip install sage-ai-cli
sage install
# Coding agent with full safety harness
sage run
# Try the new features:
sage rag index # build per-project semantic index
sage ext search "react hooks" # web search (no API key)
sage ext route "design a new system" # see which model the router picks
sage ext detect # see auto-detected project context
sage ext bootstrap --finetune # kick off project-aware fine-tune
Documentation:
docs/SAGE_FEATURES.md— full feature catalogdocs/SAGE_COMMANDS.md— every CLI + slash commanddocs/SAGE_ARCHITECTURE.md— module map + data flow
What's New
Waves 1–5 + Tiers A–C (Capability)
| Capability | Command |
|---|---|
| Auto-pick strongest installed coder | sage ext auto-pick |
| Project context detection | sage ext detect |
| Local RAG over your codebase | sage rag index / sage rag query "..." |
| Web search (DuckDuckGo, no key) | sage ext search "..." |
| Hybrid difficulty-based routing | sage ext route "..." |
| LoRA fine-tune with adapter cache | sage ext finetune <model> |
| GCS-mirrored public datasets | sage ext datasets mirror --name all |
| One-shot disk-aware bootstrap | sage ext bootstrap [--finetune] [--full-datasets] |
Tiers 1–3 Hardening (Safety + Quality)
These prevent the "silent quality collapse" failure mode where a small
fallback model produces broken output. Wired into every sage run session.
| Tier | Feature | Impact |
|---|---|---|
| T1 | Hard model-capability floor | Refuses agentic tasks below 7B params |
| T2 | Diff-preview before batch FILE: writes | User confirms before disk hit |
| T3 | Bounded regenerate context | Stops feedback bombs in retry loops |
| T4+T12 | GBNF on tool turns + project-aware imports | Hallucinated imports impossible |
| T5 | Tmpdir staging | All writes pass through isolated workspace |
| T6 | Run guard | npm install blocked after rejected package.json |
| T7+T9 | Project-skeleton bootstrapper | React+Vite, Node+Express, FastAPI, fullstack |
| T8 | RAG before first turn | Project context ready on turn 1 |
| T10 | Telemetry with secret redaction | Per-session JSONL log |
| T11 | Two-model planner/coder default | Cheap planner + strong coder, automatic |
| T13 | Readiness self-test | 30s "write hello.js" probe at session start |
| T14 | Disk-aware install + safe pip | Picks model tier that fits free disk |
Architecture
core/run_hooks.py is the single orchestrator. sage run calls:
on_session_start— capability check (T1), readiness probe (T13), skeleton match (T7+T9), RAG indexing (T8)on_pre_turn— grammar selection (T4+T12), planner/coder pair (T11), top-K RAG retrieval (T8)on_post_turn— telemetry log (T10) with secret redaction
Every FileWriteTool.write() is wrapped by content_validator and arms
the run_guard on rejection. Every RUN: shell call is gated by
run_guard.allow().
See docs/SAGE_ARCHITECTURE.md for the full data-flow diagram.
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 sage_ai_cli-1.19.53.tar.gz.
File metadata
- Download URL: sage_ai_cli-1.19.53.tar.gz
- Upload date:
- Size: 1.7 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ec27520e8f8a923e276f41bf1064297f164e9428bc4ad820d470d00d11c52f71
|
|
| MD5 |
0b52e0967e187ef9f8fbf7705fbbe53b
|
|
| BLAKE2b-256 |
ba0bdc9914c3a2cdbdbef404bfa09d28eb1d6f30fe558306b61c914d432d03ea
|
File details
Details for the file sage_ai_cli-1.19.53-py3-none-any.whl.
File metadata
- Download URL: sage_ai_cli-1.19.53-py3-none-any.whl
- Upload date:
- Size: 1.9 MB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
66360a77b0ec8814e03e8eec2311ea68e78bfeae7adba51ac53f0730e5fba47b
|
|
| MD5 |
102886c02e9aa23822f963520ad9dd83
|
|
| BLAKE2b-256 |
cc15c04e0ef76bc332856c3e8db1d004e050ec86bd31a99e0217fc39a8345b6a
|