gunjangrunge/sia
Self-Improving Agents: evidence-gated workflow and cost-aware multi-agent orchestration with durable state, file-ownership safety, and independent review.
Changelog
All notable changes to the SIA package itself are recorded here.
[sia-dashboard 0.1.0] - 2026-10-03
Added
- Live SIA dashboard for Claude Code, a new
sia-dashboardplugin in the same marketplace, built as a Claude Code mod (needs 2.1.287 or later). A line above the prompt shows the stage, agents running, the estimated saving, skills and rules./sia-dashboardopens a pane with Overview, Agents, Skills and Calls tabs.- Token figures are measured from every model request, tagged by agent. The saving is an estimate: subagent requests priced at the main model's rates minus their price on the model they ran on, using SIA's configured tier prices or Anthropic list prices.
- Skill use counts Skill tool calls in the main loop and inside subagents, with a per-project total.
- The Calls tab lists every SIA tool live and starts a prompt for the chosen one.
- README: a table of every call you can make with SIA.
The main sia plugin is unchanged, so hosts without mods are unaffected.
Verified
14 tests under claude plugin test. Each guard was checked by breaking it on
purpose and watching a test fail. Live in an interactive Claude Code 2.1.288
session in tmux: the band went from 0 agents running to 1 agent running
and back while a Haiku subagent worked, then showed the saving, and every tab
rendered real data. That run found a bug, now fixed with a test: Claude Code's
agent list drops a finished subagent, so the dashboard keeps its own record.
[0.7.0] - 2026-09-28
Added
- SIA writes the skills your project needs. At the
skillsstage, new toolssia_skill_contextandsia_skill_write(CLI:sia skill context | write | list | retire) turn the project's requirements into skills, installed where hosts discover them:.claude/skills/for Claude Code and.agents/skills/for Codex. The main agent, every subagent and collaborating plugins can all use them.- Grounded, not guessed: every skill must cite, verbatim, the requirement it serves from the recorded intake, spec, project-instructions or plan evidence, or from AGENTS.md / CLAUDE.md. SIA refuses a skill it cannot trace. There is no built-in catalog of domains; dependencies inform how, never what.
- Complements what is installed: context lists existing project skills and installed frameworks, so skills point to Superpowers instead of repeating it.
- Keeps improving: each skill carries the learned rules whose scope overlaps its paths, re-rendered whenever a rule is learned or retired.
- Safe: never overwrites a skill SIA did not write, stops updating one
edited by hand, refuses text that looks like a credential, and regenerates
sdd/skill-manifest.mdas the stage's evidence.
- Subagents are told at spawn which project skills exist, as a required first step.
Verified
Live in Claude Code on a churn-model project whose spec asks for data
profiling, loss logging with early stopping, and F1-gated evaluation, and fixes
the hyperparameters, while requirements.txt includes optuna. From a neutral
"complete the current stage" prompt the agent wrote exactly three skills, one
per spec section, and no hyperparameter skill, citing the spec. A learned
rule appeared in every skill immediately. A Haiku subagent invoked the project
skill after the directive was made a required first step (with softer wording
it saw the list and skipped it). The first run also surfaced a manifest bug
with multi-line quotes, now fixed with a regression test.
[0.6.0] - 2026-09-26
Added
- Every subagent gets the project's learned rules. A
SubagentStarthook injects active rules into each subagent at spawn, whoever spawns it (SIA's controller, Superpowers, or the user). Previously rules reached only the main session, so a subagent could repeat a mistake the user had already corrected. - SIA composes with installed skill frameworks.
sia_doctornow detects frameworks installed as plugins (Superpowers, BMAD) in Claude Code and Codex, not only ones vendored in the repository. When Superpowers is present: its skills author the spec and plan, SIA stays the single dispatcher, andsia-implementer/sia-reviewersubagents are told at spawn to use its practice skills (test-driven development, systematic debugging, verification). Both agents now have theSkilltool. - Tier routing reaches the spawn. The orchestrate skill tells the
controller to pass each operation's
requested_model_idas the subagent'smodel, and offerscheap: haiku, current: sonnet, strong: opusas the Claude Code default. Without this the plan routed to cheap models but every subagent still ran on the expensive default.
Fixed
sia_orchestrate_receiptrefuses a receipt file inside.sia/. In a live run the controller wrote its own receipts there, and integration rejected the whole run because it validates every file in that directory. The refusal names a safe location (sdd/receipts/<operation>.json).
Verified
Two live end-to-end orchestrated runs in Claude Code: status complete,
integration recorded, tests passing, the implementer ran on Haiku and the
reviewer on Sonnet as routed, rules were present in every subagent transcript,
and the implementer invoked Superpowers' TDD and verification skills.
[0.5.0] - 2026-09-26
Added
- SIA learns from corrections. Any correction or lasting preference the
user states becomes a standing rule for the project, with their exact words
kept as evidence:
- Capture: new
sia_rule_learnMCP tool (andsia rule learn), which records the correction and creates the rule in one step. Rules could previously only be added from the CLI, so agents in Codex or Kiro could not create them at all. Alsosia_rule_listandsia_rule_retire. - Recall: a
SessionStarthook loads every active rule into each new session, and after/compact, so rules no longer depend on the agent remembering to run preflight. - Enforcement: rules may carry a
forbidregex. APostToolUsehook checks only the text the agent just wrote (never pre-existing content), and aStophook checks replies against rules that apply everywhere. Violations are pushed back to the agent. The Stop hook honoursstop_hook_active, so an unsatisfiable rule cannot loop.
- Capture: new
- Kiro:
mcp.json(Kiro reads it; SIA shipped only.mcp.json), and the launcher searches Kiro's powers directory. Both MCP configs are generated fromtools/gen_mcp_config.py, and a test fails if they drift.
Fixed
- Windows: piped stdin was decoded with the legacy code page, so a project
at
...\José_日本was reported missing, and every protocol line ended in\r\n. Found by running under real Windows Python; both streams are now UTF-8 with\n. sia_preflightreported an unacknowledged medium or high rule as a tool error, so an agent could read "SIA broke" and skip the rules it returned.- Guidance to make one rule per preference lives in the
sia_rule_learntool description itself: a live test showed agents call the tool without loading the skill, and merged three preferences into one rule.
Security
- The MCP launcher never considers its working directory. Codex starts the
server with the working directory set to the user's project, so trusting it
would have executed any file named
sia_mcp.pyin an untrusted repository.
Verified live in Claude Code
- A casual "never use em dashes, never say 'leverage', keep replies to three sentences" became three separate rules, each with the right check.
- A fresh session answered a CDN question in two sentences with no em dashes. The same question without the rules produced 2,488 characters and 15 em dashes.
- Asked to put banned text in a reply and in a file, the Stop and PostToolUse hooks each pushed back (confirmed in Claude Code's debug log) and the agent rewrote them.
Known issues
- Recall and enforcement hooks ship for Codex, which supports hooks, but are untested there. Kiro uses its own hook system, so it gets capture (the MCP tool) but not automatic recall or enforcement yet.
- Kiro's agent path remains untested: the Kiro account hit its monthly usage limit before a session could run.
[0.4.0] - 2026-09-24
Added
- SIA runs as an MCP server, so every host can install it as a plugin with
no
pip install.src/sia/mcp_server.pyspeaks MCP over stdio using only the standard library — the official Python SDK is itself a pip dependency. Every tool delegates to the CLI, so behaviour and refusals are identical. - Manifests for Claude Code, Codex, Gemini CLI, Kiro and Antigravity:
.mcp.json, rootplugin.json(Agent Plugins schema),gemini-extension.json, and.agents/plugins/marketplace.jsonfor Codex. - Verified tool annotations. Read-only labels were checked against a
fingerprinted
.sia/, and a test enforces them.
Fixed — found by installing into Codex, none of it in Codex's docs
- Codex silently drops a plugin at its marketplace root (
"./", the layout Claude Code's marketplace uses) and lists zero plugins, with no error. The Codex marketplace now uses aurlsource. - Codex gives an MCP server no way to find its plugin. Probed directly: no
expansion of
${PLUGIN_ROOT},${CLAUDE_PLUGIN_ROOT}or$PLUGIN_ROOTin arguments, noPLUGIN_*environment, and the working directory is the user's project..mcp.jsonnow runs a self-locating launcher: the root the host substituted, then the environment, then Codex's plugin cache, highest version first. - Tools with no annotations default to destructive and open-world under the MCP spec, so Codex required approval even for a read-only status check, and per-server "approve" settings were ignored.
sia_doctorreported "not initialized yet" as a tool failure, which made an agent stop at its first step. A diagnosis that runs is a result.- Skill examples for
record,capture,rule addandpreflightwere missing required flags or used flags that do not exist. All documented shapes now run in the test suite.
Changed
- Skills call the MCP tools first, with the bundled CLI as a fallback.
allowed-toolswas removed: MCP tool names differ per host, so a restriction list cannot be portable and would block the very tools the skills need. orchestrate runis not exposed as a tool. Its--approve-commandsflag is a human gate, and over MCP an agent could pass it to itself.
Known issues
- Gemini CLI, Kiro and Antigravity are built to their documentation but untested; Gemini and Antigravity were not available to test against.
- Hosts launch
python3. On Windows, where often onlypythonorpyexists, the plugin cannot start SIA. - The review's High findings (see 0.3.1) are still not re-verified.
[0.3.1] - 2026-09-24
Added
- Claude Code plugin.
.claude-plugin/plugin.jsonandmarketplace.json, installable with/plugin marketplace add GunjanGrunge/SIA_packagethen/plugin install sia@sia. - Skills
sia-start,sia-orchestrateandsia-workflow; agentssia-implementerandsia-reviewer. - The CLI ships inside the plugin — no
pip install.cli.pyis now the plugin entry point and putssrc/onsys.pathitself, so Python 3 is the only prerequisite. - Behavioural tests in
tests/test_runtime_behaviour.py. Until nowtests/held only a string-pattern validator and three tests of that validator; nothing drove the runtime. The new suite runs the real CLI end to end and covers the budget ceiling, independent review, stage-gate refusals and placeholder rejection. Each budget test was mutation-checked against a deliberately reintroduced bypass.
Fixed
- Execution-stage refusals name the current stage, the remaining stages and the exact next command. They previously stated the constraint alone, which made a working install read as a dead end: the quickstart completed without error and then every useful command refused.
orchestrate configurerejects thereplace-with-*placeholders emitted byorchestrate example. It previously accepted them and reported"configured": true, so the failure surfaced far from its cause.- Framework detection widened beyond bmad/superpowers to
.claude,.agents,.kiro,.geminiand.antigravity. On a real brownfield project it had detected one of five. guides/orchestration.mddocuments the cheap/current/strong tiers.- Non-Claude install instructions were broken. PyPI only carries 0.2.0.
Docs pinning
pip install sia-package==0.3.0failed outright with "No matching distribution found", and docs saying plainpip install sia-packagesilently installed 0.2.0, which has no orchestration runtime at all. Codex, Kiro, Gemini CLI and Antigravity users now install from GitHub, which works today, until a release reaches PyPI.
Changed
- README and the published user guide lead with the plugin install and explain
the five evidence gates between
initandexecution. - The
cli.pycontract check asserts the file documentsCLAUDE_PLUGIN_ROOTand insertssrc/onsys.path, instead of pinning a docstring describing it as a legacy shim.
Removed
- Two stale
sia-vscode-extension-0.2.0.vsixartifacts (repository root andextension/);*.vsixis now gitignored. The extension is built from source rather than shipped prebuilt.
Known issues
docs/reviews/2026-09-18-sia-0.3-review.mdis a NEEDS_CHANGES review of an earlier state of this runtime.- Its Critical hard-budget bypass is fixed and now has regression tests. Verified by driving a run over its ceiling on the first receipt and on the final one: the overrun is terminal, later receipts are rejected, and integration is blocked. A previous version of this changelog listed it as open without having tested it; that was wrong.
- Its High findings have not been re-verified against this code. Treat them as open until each is checked: mutable hashed briefs, stale integration receipts, ownership-transfer bypass, unbounded or cancellation-unsafe subprocesses, inline prompt disclosure, silent strong-to-current routing.
- 0.3.x is not yet on PyPI; see the install fix above.
- No orchestration run has yet dispatched a live worker. Verification so far stops at plan creation and recorded receipts.
[0.3.0] - 2026-09-18
Added
- Real multi-agent orchestration with shared native-host and standalone backends.
- Deterministic cheap/current/strong model routing by task role, risk, and complexity.
- Immutable dispatch plans, concurrent implementers, independent routed reviewers, receipts, timeout/output controls, and shell-free command arrays.
- Atomic token/USD reservations, warning/hard budget gates, configured pricing, and actual/calculated/estimated/unknown telemetry quality.
- First-class Gemini CLI adapter and v2 managed protocols for Claude Code, Codex, Kiro, and Antigravity.
- Receipt-bound integration evidence manifests and safe adapter upgrades.
Changed
- Multi-agent cost optimization is now SIA's primary orchestration workflow; evidence-only task commands remain backward compatible.
- Native host plans request exact configured model IDs without guessing the active IDE model; unknown model/run/usage data remains explicitly unknown.
[0.2.0] - 2026-09-18
Added
- Installable
sia/sia-agentPython CLI and packaged workflow policy. - Durable
.sia/state for stages, task evidence, feedback events, rules, preflight checks, and convergence metrics. - Explicit
advisory,planning, andorchestratorruntime modes. - Opt-in adapters for Claude Code, Codex, Kiro, and Antigravity.
- Configurable stage ownership for BMAD, Superpowers, and other frameworks.
- Evidence-limited modular project-skill synthesis and
sdd/skill-manifest.mdguidance. - Existing-project repository-informed, goal-first, and conversational intake approaches.
- Public attribution policy that preserves the human Git author.
- Complete usage and extension-publishing documentation.
- Optional VS Code-compatible control-center extension.
Changed
- SIA resumes from
sia next --jsoninstead of relying on conversational context to retain the active stage. - Active state mutations serialize across host-agent processes.
- Parallel tasks require canonical, non-overlapping file ownership, including parent/child and Windows case-insensitive path protection.
- Controllers may not silently substitute direct implementation for a dispatched subagent task.
- Feedback uses reusable error classes and provenance-bearing active/retired rules.
- Host adapters are manual and namespaced so other plugins remain available.
- Heavy root assets were removed; extension branding lives under
extension/. - Token/cost savings are estimates unless backed by host telemetry.
Security
- Adapter installation rejects collisions and redirected paths outside the project root; removal requires exact managed content.
- Integration requires independent reviews and is invalidated when execution evidence changes.
- Extension initialization/status delegates to the canonical persistent CLI instead of overwriting host instruction files.
[0.1.0] - 2026-09-13
Added
- Markdown bootstrap and authority order in
AGENT.md. - Intake, approval, specification, planning, subagent, and security guides,
including
guides/security-gate.md. - Feedback capture in
capture-interface.md, PASS/DEVIATION classification, convergence signals, rule provenance, and rule expiry guidance. - Terminal launch banner and plain-text fallback.
- Claude Code discovery shim.
- Structural package validator and manual dogfood scenarios.