Align CLI

Your AI agents know the code. They don't know the company.
The decisions behind the code live in commits, tickets, chat and meetings. Months later nobody
can tell what still stands, what conflicts, or why. Align pulls them into one graph your agents
check before they build.
curl -fsSL https://align.tech/install.sh | sh
align
That is the whole thing. align sets itself up the first time you run it and asks whether you
want it local-only or synced; after that it shows your graph and what to do next.
A standalone binary. No Node, no npm, nothing else to install, and local-only mode works
fully - on-device embeddings included, running on a WASM backend bundled inside the binary.
Linux, macOS and Windows, x64 and arm64, glibc and musl. It checks the download against the
release's own checksums and says so out loud when it cannot, and you can read
install.sh before you pipe it anywhere.
Prefer npm, or already have Node? npm install -g @aligndottech/cli (Node 22.16+).
Binaries for every platform are on the releases page.
On Windows, start with npm. In PowerShell:
npm install -g @aligndottech/cli
align
The curl ... | sh line above needs a POSIX shell, so it runs under Git Bash or WSL and not in
PowerShell itself. Installing covers the rest, including the manual
binary download for a Windows machine with no Node on it.
MIT. No account needed. Beta, pre-1.0.
Run it inside a git repository. --local seeds the graph from your commit history, so you have
something to ask about straight away, and your decisions stay in a SQLite file on your machine.
Your decisions and code never go to Align. It sends two anonymous counts by default (install,
setup completed); usage only with your consent; align telemetry off or DO_NOT_TRACK=1 stops
all of it. What touches the network, and every field.
Want sync across machines and cross-tool relationship detection? Drop the flag. align setup
logs you in - a work email lands you in your company's graph (first person in is the admin,
the next colleague on that domain joins it automatically); a personal email gets you a graph
of your own, joinable to a company graph later by invite. It also connects your tools via
read-only OAuth and wires up your editors.
How it works
Your tools Align Your agents & you
ββββββββββ βββββββββββ βββββββββββββββββββ
Git, GitHub, GitLab ββ ββ align ask "whyβ¦"
Jira, Confluence βββΆ import ββΆ decision graph ββ ββ MCP server (inline)
Linear, Notion β (read-only) (what/why/who) βββ€ edit hooks (any agent)
Slack, Teams, Zoom ββ + relationshipsβ ββ align check (CI)
- Import pulls decisions out of the tools you already use. Read-only, nothing is modified.
- Align links them into a decision graph: what was decided, why, who decided it, and how
decisions relate (supersedes, conflicts with, depends on).
- Your agents query and check against it, over MCP, an edit hook, CI, or
align ask.
Your agent checks before it writes
align setup wires Align in four ways, so context fires whether or not the model thinks to ask.
| What you get |
|---|
| MCP server | Claude Code, Cursor, Claude Desktop, VS Code, Windsurf, Zed, Codex, Copilot CLI, Gemini CLI and pi query the graph inline |
| Edit hooks | Prior decisions reach the model before it writes. Claude Code, pi, Gemini CLI, OpenCode |
| Editor rules | A managed block in CLAUDE.md, AGENTS.md and .cursor/rules/align.md |
Shared .mcp.json | One committed file wires up the whole team |
The hook is non-blocking and fail-open. It never denies an edit by default, and if Align is
missing, slow or unreachable the edit proceeds untouched. It needs no AI provider key.
Cursor and Codex CLI can't do the pre-edit hook, and that's a limit of those hosts. They get the
other three. Full per-host matrix: docs/agent-hooks.md.
The first time Claude Code loads a project with a committed hook, it shows a one-time "approve
hooks" prompt. Accept it to enable automatic alignment.
Everyday commands
align
align ask "how does our auth work"
align ask src/auth/session.ts
align connect
align connect jira --token ...
align check
align mcp --setup
That is the whole of align --help. Every other command (search, decisions, export,
ratify, push, context, local, ...) still works and is listed in
docs/commands.md.
align ask needs an AI provider to write prose. Without one it returns the matching decisions
as a ranked list, which needs no key. align setup offers a free Groq key (no card, ever) as
the guided default, with Gemini as a backup for when Groq's daily limit is hit - or bring your
own: Anthropic, OpenAI, Gemini, Groq, Mistral, Grok, any OpenAI-compatible endpoint, or a local
Ollama. Setting one up.
Docs
| |
|---|
| Installing | npm, the binary, Windows and PowerShell |
| Importing | Every source, tokens, flags |
| Alignment check | Modes, exit codes, CI, the GitHub Action |
| Cloud or local-only | What runs where, what touches the network |
| Telemetry | Every event and field, and how to stop it |
| MCP server | Editor config, the tools your assistant gets |
| Configuration | AI providers, env vars, auth, self-hosting |
| Agent hooks | Per-host capability matrix |
| Choosing an access path | API vs CLI JSON vs MCP, and why |
| All commands | Full reference |
Why bother
In a published benchmark, giving a coding agent recorded product decisions took decision
compliance from 46% to 95%
(Dillon & Varanasi, arXiv:2605.08112 - a small vendor study,
8 tasks and 41 decision points, and it isn't our data).
Wiring context into an agent is the easy part, and this repo is the open-source version of it.
The hard part is the record underneath: what your team actually decided, across every tool, kept
current.
Want a hand setting it up? I do free 30 minute setup calls:
https://calendly.com/tom-align/setup
License
MIT, see LICENSE. The CLI and MCP server are open source, along with the
connector SDK. The hosted gateway is a
separate commercial service.