Skip to main content

simt-dev

simt-dev, the intelligence amplifier for coding agents, and its four claims. One: say less, always — a kernel under 2 KB whose bytes stay stable so the prompt cache survives. Two: answers over exploration — a local code graph and a short task brief. Three: enforce, don't instruct — dual gates, before a tool call and at git time. Four: close the loop — benches and memory. Beneath them, the harnesses it works across and its three channels.

simt adopts a repository for the agents that work in it.

It reads what the repository actually runs, projects the rules that are not already obvious into the files those agents read, and installs only the gates that repository can run. Around that projection it keeps the bytes stable, replaces an instruction with a check where a check can decide, answers questions about the tree from a local index, and records whether a run still applies to the tree on disk.

The aim of the whole design is a higher share of tasks resolved, at a lower cost per resolved task. Those targets are hypotheses. A change that touches what an agent reads ships with a measurement, or its record says the measurement was not run. simt rules why ADR-NNN prints the record, including whether it is still in force.

The default path is deterministic: no model, no network, no runtime dependencies. Anything that needs a parser grammar, a local model, or another server is a separate package, off until the repository names it, and it proposes rows or text for a person to merge. It does not write the projection.

Today

simt init                 # adopt or scaffold; prints a plan; --yes writes
simt doctor               # what this repo is, and whether its config is healthy
simt check                # projection drift, the manifest, and declared checkers
simt sync --yes           # regenerate the projection
simt upgrade --yes        # move every pin of this tool to this version

simt rules why ADR-042    # the decision behind a rule, and what was rejected
simt skills brief --task  # a short brief for one task
simt tokens               # bytes a reader loads at session start
simt shared plan          # rules a workspace repeats, and what carrying them once saves
simt harness loaders      # what each harness loads, and what its cap drops

simt hooks install --yes  # the git dispatcher, for gates this repo can run
simt agent-hooks install --yes   # the same policy before a tool call
simt evidence             # runs recorded against this tree
simt index                # files, exports and imports, from git blob hashes
simt plan next            # the next tracker row that is ready

simt bench report         # resolved rate, quality, cost, across arms
simt compare              # every sibling checkout that has adopted
simt mcp                  # the read-only surface, over stdio

init, sync, upgrade, hooks install, agent-hooks install, shared install and plan done print a plan and write nothing without --yes. None of them commit or push. simt index writes its cache without asking: the file is gitignored and git ls-files can rebuild it.

check runs the checkers a rule names. A marked line leaves the projection as Enforced: and the checker's name. The file-length line warns past 400 lines and fails past 1000. simt evidence check warns when a commit message claims a passing run this tree does not have, and the commit fails when gates.evidence is block. The commit-msg hook is installed only when that setting is warn or block.

Where the plan finishes

The work above is the part that runs. The plan still adds the rest of the loop, in this order of purpose:

  • Gates on the change. A check selects the tests that cover the diff, and the tool's own gate output is shortened without dropping a failure line.
  • Answers instead of exploration. A ranked map of the repository, the impact of a file or a symbol, the tests that cover a change, and the decisions, rules and skills that govern a path. An external code graph can answer for a language it covers, and the answer names that source.
  • A brief for the task in front of the agent. At most 2 KB, pulled at submit or pushed by a hook, built from the map, the tests and the governing records.
  • A memory that has to earn its place. A lesson is a candidate when a failing run is followed by a fix. It is recalled on a later task that looks like it, and it expires. Variant wording of a rule ships only when the bench says it won.
  • Local models, off unless asked. Distillation and a critic propose. They do not write projected text. With no model configured, nothing opens a socket.
  • The small doors. One finding code explained, a safe doctor fix, a one-line status, an undo journal, a diff of every planned write, shell completions, one ignore list for every harness plus a secret scan, a worktree per slice, a file lease when two agents would edit the same path, and a pull-request body taken from the evidence.

Install

Requires Node >= 22.20.0. The current published release is 0.4.0. Pin it. The tool writes a content digest into the files it generates, and an unpinned upgrade changes them under you.

npm i -D simt-dev@0.4.0

# or globally
npm i -g simt-dev@0.4.0

# or once, with no install
npx -y simt-dev@0.4.0 check

From PyPI

The wheel carries the same bytes as the npm tarball. It does not fetch them from npm at install time.

pip install simt-dev

# when this machine has no node
pip install "simt-dev[node]"

simt is the command on both channels. Node is resolved in this order, and the first one that answers wins: SIMT_DEV_NODE, the node bundled with the node extra, then node on PATH.

From Homebrew

brew install QuazarMedia/homebrew-tap/simt-dev

The formula depends on node, so the command works on a machine that has never had Node installed.

What it writes

Path What
AGENTS.md the projection, between <!-- simt:begin --> and <!-- simt:end -->. The old simt-dev: markers are still read, and a region migrates on its next write
simt.json the manifest: gates, substitutions, budget, shared rules, surfaces
simt-dev.lock.json the digest of the inputs and the digest of the projection
.cursor/rules/*.mdc, .claude/rules/*.md, .agents/rules/*.md, .github/instructions/*.instructions.md one file per rule, and only for a harness that reads that directory
.editorconfig, .gitattributes baseline regions, placed first so a later setting still wins
.simt-hooks/ and core.hooksPath the shared dispatcher. It fails closed

Text outside the markers is left alone. A regeneration does not revert it.

simt.json also carries a federation block when the repository names external code-graph servers, each with the command that starts it. A brief may then ask one of them one structural question for a task and cite the answer's source, and the MCP federation_query tool asks one on demand, naming the server it asked. The question goes to the tool and argument the manifest declared, so no foreign tool is reachable that the repository did not name. Nothing is started unless the manifest declared it, and a server that does not answer costs the packet a sentence, never the packet.

These are caches, gitignored, and rebuildable. They are not repository content:

Path What
.simt-dev/index.sqlite files, symbols, import edges. JSON-lines at .simt-dev/index.jsonl when this Node cannot open node:sqlite with FTS5
.simt-dev/ledger.jsonl one line per gate the dispatcher actually ran, against one git tree
.simt-dev/bench/runs/ benchmark runs

simt shared install --yes writes a user-level copy of the rules a workspace repeats, into the file that harness documents, and records the ids on each repository's manifest. The next sync drops those rules from the region and names them.

How a rule is chosen

Detection reads dependency manifests, build files and CI workflows, and ranks rules by path, keyword, name, capability and stack. The ranking is a score. A pull request can diff it.

A repository whose ecosystem has no profile yet is still adopted: it gets the core rules and no gates, until gate templates exist for it. A hook that would run nothing is not installed.

Every behaviour that is a choice has a numbered record. simt rules why <id> is the path from a rule you did not expect to the reason it is there.

Platform

macOS and Linux. The hooks are POSIX sh. There is no Windows build. npm i on Windows fails with npm's EBADPLATFORM, which npm will not let a package explain, so the answer is here: use WSL2, and the gate works inside it.

A Windows checkout without WSL2 can still read the projection. It is plain text. The hooks and the CI gate need the POSIX host.

Licence

Apache-2.0. See LICENSE. Report a vulnerability through SECURITY.md.

Metadata

Release files for simt-dev 0.4.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for simt-dev 0.4.0
File Size Uploaded Provenance
simt_dev-0.4.0.tar.gz 766.8 kB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for simt-dev 0.4.0
File Interpreter ABI Platform
simt_dev-0.4.0-py3-none-any.whl Python 3 none any Details

Total release size: 1.7 MB

Release files / simt_dev-0.4.0.tar.gz

Download URL simt_dev-0.4.0.tar.gz
Size 766.8 kB
Tags Source
SHA-256 checksum
How to use checksums
4cc26e40a4acbd2d27c7fd4b5eca5f3eea46391830706324e48a82dcc2d79b5c
BLAKE2b-256 checksum
How to use checksums
69bea28ab1b00c0ff28a4dc6a3a3f4414357038ec85d6b26709ac0190b7b4a1a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.9.6

Release files / simt_dev-0.4.0-py3-none-any.whl

Download URL simt_dev-0.4.0-py3-none-any.whl
Size 958.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
e2ee8d6a815e195989409dbd303ab969e0719391b4d45af2321c2f02fe021cd7
BLAKE2b-256 checksum
How to use checksums
534bc03694349e805597eff9d2e2478a3a8f6fc9ef738e3574cb35d6794f7620
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.9.6

Security for simt-dev 0.4.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.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page