AsDecided
Engineering decisions your agents can follow. Build, as decided.
AsDecided keeps requirements, decisions, designs, roadmaps, and prompts as
typed Markdown in your repository. Its native Rust engine validates that
knowledge, retrieves relevant decisions deterministically, and serves it
read-only to agents over MCP.
No embeddings, model call, hosted index, or Python runtime is required. The
same repository state produces the same answer.
Install
Install the native engine and MCP server through Homebrew:
brew install asdecided/tap/asdecided-core
Rust users can install the decided CLI directly from crates.io:
cargo install decided
cargo install decided-mcp
Windows users can install both native executables through Scoop:
scoop bucket add asdecided https://github.com/asdecided/scoop-bucket
scoop install asdecided
Native decided and decided-mcp archives are also published on
GitHub Releases.
rac-core is no longer distributed through PyPI. Python API consumers should
use asdecided/sdk, which is a
client SDK rather than a second engine implementation.
Start a repository
decided quickstart
decided validate decisions/
decided gate decisions/
decided gate decisions/ --code --base origin/main
New repositories use:
.decided/config.yaml
decisions/
Existing artifact IDs such as RAC-ABC123DEF456 are durable identities and do
not change with the product name.
Migrate an existing repository
Migration is explicit and never runs during an ordinary command:
decided migrate layout . --dry-run
decided migrate layout .
The migration moves .rac/ to .decided/ and rac/ to decisions/. It
refuses to overwrite either destination.
MCP
The official MCP Registry identity is io.github.asdecided/core.
{
"mcpServers": {
"asdecided": {
"command": "decided-mcp",
"args": ["--root", "."]
}
}
}
Architecture
Rust is the product engine and the only CLI/MCP runtime in this repository.
The authoritative language-neutral compatibility fixtures live in
asdecided-spec. Live-corpus validation is
based on validity, determinism, freshness, and cache/no-cache equality.
Document ingestion remains an ancillary Python connector rather than part of
the core engine. The retired Python engine is preserved for historical review
at the immutable
python-engine-final
tag; it is not maintained or run in normal CI.
License
Apache-2.0. See LICENSE and NOTICE.