Autonomous AI sprint orchestration — agents that ship real code via Git. (Import as `caloron`.)
Project description
Caloron-Noether
Caloron reimplemented as Noether composition graphs. Same orchestration capabilities, ~6x less code.
Architecture
noether-scheduler (cron: sprint_tick.json every 60s)
│
▼
Noether Engine (runs composition graphs)
├── DAG stages (Pure Python) — evaluate, is_complete, validate
├── GitHub stages (Network Python) — poll, create_issue, comment, merge
├── Supervisor stages (Pure Python) — health check, intervention, messaging
├── Retro stages (Pure/Network Python) — feedback, KPIs, report
└── Kickoff stages (Network/LLM Python) — repo context, DAG generation
│
▼
caloron-shell (~200 lines Rust, axum)
├── POST /heartbeat — record agent heartbeats
├── POST /spawn — create worktree + start harness
└── GET /status — list live agents
All business logic is in Noether stages (Python). The shell only manages processes and HTTP.
Setup
# 1. Build Noether CLI
cd ../noether # https://github.com/alpibrusl/noether && cargo build -p noether-cli
export PATH="$PWD/target/debug:$PATH"
# 2. Register custom stages
cd ../caloron-noether
./register_stages.sh
# 3. Build the shell
cargo build -p caloron-shell
# 4. Start the shell (heartbeat + spawn server)
CALORON_SHELL_PORT=7710 ./target/debug/caloron-shell
# 5. Start the scheduler (drives sprint ticks)
noether-scheduler --config scheduler.json
Documentation
Full docs: docs/ — build locally with mkdocs serve.
- Getting Started
- Architecture
- Stage Catalog
- Composition Graphs
- Shell API
- KV Conventions
- vs Original Caloron
- Deployment (Docker + K8s)
Stage Promotion Path
All stages start as Python. When a stage meets all four criteria (generality, hot path, stable schema, worth the lines), it can be promoted to Rust via InlineRegistry — zero graph changes needed. See context/inline-stages.md.
Quick Sprint
# Run a full autonomous sprint
cd orchestrator
python3 orchestrator.py "Build a hotel rate anomaly detector with tests"
Supports 6 frameworks: claude-code, cursor-cli, gemini-cli, codex-cli, open-code, aider
Project Structure
orchestrator/ Sprint runtime (Python)
orchestrator.py Main loop: PO → agents → PRs → reviews → retro
skill_store.py Registry of skills/MCPs (18 built-in, user-extensible)
hr_agent.py Assigns skills + model + framework per task
agent_configurator.py Writes CLAUDE.md/.cursorrules/GEMINI.md + MCP configs
agent_versioning.py Tracks agent evolution across sprints
template_store.py Project scaffolds (YAML templates + LLM generation)
templates/ Project templates (user-extensible YAML)
fastapi.yaml FastAPI + ruff + pytest + Dockerfile
fastapi-postgres.yaml + SQLAlchemy + Alembic + docker-compose
python-data.yaml pandas + data dir + fixtures
nextjs.yaml Next.js 14 + TypeScript + Tailwind
rust-cli.yaml clap + clippy + fmt CI
stages/ Noether Python stages (stdin JSON → stdout JSON)
dag/ DAG evaluation, completion, validation
github/ GitHub/Gitea API operations
supervisor/ Health checks, interventions, messaging
retro/ Feedback, KPIs, report generation
kickoff/ Repo context, DAG generation
compositions/ Noether composition graphs (JSON)
shell/ Thin Rust binary (axum HTTP server)
scripts/ Sandbox (bubblewrap)
deploy/ Docker Compose + Kubernetes Helm chart
demo/ Asciinema recording script
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 caloron_alpibru-0.1.0.tar.gz.
File metadata
- Download URL: caloron_alpibru-0.1.0.tar.gz
- Upload date:
- Size: 82.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d69fa59f072992c81d13c5bab3dc3969e3b474035b99c453c898080f75eb372e
|
|
| MD5 |
a054574f451fac7d88ae59b03501557d
|
|
| BLAKE2b-256 |
84c3d70f8982327813ee838329afc6b0ceb57a00a44861d26e37f1cdf3e683b6
|
Provenance
The following attestation bundles were made for caloron_alpibru-0.1.0.tar.gz:
Publisher:
release.yml on alpibrusl/caloron-noether
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
caloron_alpibru-0.1.0.tar.gz -
Subject digest:
d69fa59f072992c81d13c5bab3dc3969e3b474035b99c453c898080f75eb372e - Sigstore transparency entry: 1280893007
- Sigstore integration time:
-
Permalink:
alpibrusl/caloron-noether@a9274717d7530001df8b0ea072bf6044aaeca5ed -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/alpibrusl
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@a9274717d7530001df8b0ea072bf6044aaeca5ed -
Trigger Event:
push
-
Statement type:
File details
Details for the file caloron_alpibru-0.1.0-py3-none-any.whl.
File metadata
- Download URL: caloron_alpibru-0.1.0-py3-none-any.whl
- Upload date:
- Size: 69.2 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 |
ab1ff81eb4640c44e55b31ea0f69c394c4a2b8c8f90b9c057b2548847724e8bb
|
|
| MD5 |
337d19fa76103ed315134a269c378723
|
|
| BLAKE2b-256 |
47004e667d8589718695e96145be4e33ae8760f564478b676ba61ceb6b3b9cd9
|
Provenance
The following attestation bundles were made for caloron_alpibru-0.1.0-py3-none-any.whl:
Publisher:
release.yml on alpibrusl/caloron-noether
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
caloron_alpibru-0.1.0-py3-none-any.whl -
Subject digest:
ab1ff81eb4640c44e55b31ea0f69c394c4a2b8c8f90b9c057b2548847724e8bb - Sigstore transparency entry: 1280893011
- Sigstore integration time:
-
Permalink:
alpibrusl/caloron-noether@a9274717d7530001df8b0ea072bf6044aaeca5ed -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/alpibrusl
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@a9274717d7530001df8b0ea072bf6044aaeca5ed -
Trigger Event:
push
-
Statement type: