Deterministic agent-management framework that implements FRAME governance for AI-assisted software development.
Project description
Haxaml
Git-style project memory and governance for AI coding agents.
Latest release: 0.5.2.
Most AI coding problems do not start when the agent writes bad code. They start earlier, when the agent jumps from a vague request straight into implementation — without understanding the job, without asking what is missing, without knowing what "done" means.
Haxaml gives AI coding agents a governed workflow they have to follow before they touch your code. It keeps project memory in versioned files, enforces a preparation phase before any build, requires verification evidence before success can be recorded, and works across Claude Code, Codex CLI, Cursor, Copilot, Windsurf, and any MCP-compatible agent.
What Haxaml Is Not
- Not another AI memory backpack. Haxaml is not about storing and recalling facts. It is about making agents prepare, plan, and govern their work at runtime.
- Not a prompt file.
AGENTS.mdandCLAUDE.mdare adapters. Haxaml is the governed workflow underneath them. - Not a replacement for your agent. Haxaml supervises the agent lifecycle. The agent still does the work.
How It Works
Haxaml exposes six lifecycle phases through MCP tools. The agent follows them in order:
| Phase | Tool(s) | What happens |
|---|---|---|
| about | haxaml_about |
Agent learns what Haxaml is and how to operate |
| guidance | haxaml_guidance |
Haxaml classifies the request, determines governed vs utility mode |
| prebuild | haxaml_session_start → haxaml_session_plan → haxaml_context_pack |
Agent prepares before coding: opens session, plans, gathers task-specific project signals |
| build | (no Haxaml tool) | Agent edits files, writes code, runs commands |
| verify | haxaml_session_verify |
Agent proves what it inspected, changed, and what risks remain |
| record | haxaml_session_record → haxaml_expect_sync |
Agent writes outcome into project history and syncs expectations |
about → guidance → prebuild → build → verify → record
Project memory lives in .haxaml/ — versioned files your agent uses at runtime, not a static wall of text.
Install
uvx haxaml-mcp
For persistent local installs:
uv tool install haxaml-mcp
MCP Start
Configure your MCP client to launch haxaml-mcp with HAXAML_PROJECT_DIR set to the project root. See learn/haxaml-mcp.md for the full MCP/architecture guide.
Once connected, agents can initialize and validate through MCP tools:
haxaml_inithaxaml_validate
Optional fallback: run haxaml init / haxaml validate directly when MCP is unavailable.
MCP Config
Official docs:
- Claude Code MCP docs: https://docs.claude.com/en/docs/claude-code/mcp
- OpenAI Codex MCP docs: https://developers.openai.com/docs/mcp
- MCP architecture: https://modelcontextprotocol.io/docs/learn/architecture
Project-scoped (recommended)
Place config in the project root. The server uses cwd as the project directory — no env var needed.
Claude Code — .mcp.json in project root:
{
"mcpServers": {
"haxaml": {
"command": "uvx",
"args": ["haxaml-mcp"]
}
}
}
Codex CLI — .codex/config.toml in project root:
[mcp_servers.haxaml]
command = "haxaml-mcp"
Generic MCP JSON (Windsurf, Cursor, etc.):
{
"mcpServers": {
"haxaml": {
"type": "stdio",
"command": "uvx",
"args": ["haxaml-mcp"]
}
}
}
User-wide
Set HAXAML_PROJECT_DIR to pin the server to a specific project regardless of cwd. Useful for global configs that live outside the project.
Claude Code — ~/.claude.json:
{
"mcpServers": {
"haxaml": {
"command": "uvx",
"args": ["haxaml-mcp"],
"env": {
"HAXAML_PROJECT_DIR": "/absolute/path/to/project"
}
}
}
}
Codex CLI — ~/.codex/config.toml:
[mcp_servers.haxaml]
command = "haxaml-mcp"
env = { HAXAML_PROJECT_DIR = "/absolute/path/to/project" }
Generic MCP JSON:
{
"mcpServers": {
"haxaml": {
"type": "stdio",
"command": "uvx",
"args": ["haxaml-mcp"],
"env": {
"HAXAML_PROJECT_DIR": "/absolute/path/to/project"
}
}
}
}
Bootstrap Prompt
Paste this into your native agent instruction file (AGENTS.md, CLAUDE.md, GEMINI.md, .github/copilot-instructions.md, etc.):
This repository uses Haxaml for agent governance.
Use the Haxaml MCP server for governed project work.
Before governed project work, call haxaml_about(project_dir='.') once in the active MCP session.
Follow the workflow returned by that tool.
If a governed step is skipped or out of order, treat Haxaml contract errors as hard blockers and fix the lifecycle step before continuing.
Do not edit .haxaml/* for utility or side tasks that are not governed project work.
FRAME Files
.haxaml/facts.yaml- project truth.haxaml/rules.yaml- agent operating rules.haxaml/acts.yaml- execution diary and decisions.haxaml/expect.yaml- run plan and milestones.haxaml/map.yaml- optional module ownership and impact map
Docs
- learn/FRAME.md - FRAME memory model
- learn/haxaml.md - how Haxaml makes FRAME operational
- learn/haxaml-mcp.md - MCP setup, architecture mapping, and lifecycle contract
- v1.0_Roadmap.md - roadmap from
0.6.0to1.0 - docs/architecture.md - module layout and MCP split overview
- docs/mcp-tool-reference.md - compact MCP tool and resource index
- CONTRIBUTING.md - contributor workflow and expectations
- examples/minimal-governed-flow - minimal FRAME project for governed-flow smoke tests
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 haxaml-0.6.1.tar.gz.
File metadata
- Download URL: haxaml-0.6.1.tar.gz
- Upload date:
- Size: 123.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.8 {"installer":{"name":"uv","version":"0.11.8","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
901eb9d8f2b542d8f7fa8f5d57a53b90c10c4cd94b24dd6cee268f1994257995
|
|
| MD5 |
c2e5ee7f36837c8a334bcbae64e7971f
|
|
| BLAKE2b-256 |
49a375bee415ed441707a4057505dcc85f8c20fc2021f0428ead20dbb163aca0
|
File details
Details for the file haxaml-0.6.1-py3-none-any.whl.
File metadata
- Download URL: haxaml-0.6.1-py3-none-any.whl
- Upload date:
- Size: 125.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.8 {"installer":{"name":"uv","version":"0.11.8","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0e730118ad6c3320883dea102db7ec6df45b76a437dc40e006428b01f40b0782
|
|
| MD5 |
64b88c59b6ed84d8d5cbd7f30ab79a4e
|
|
| BLAKE2b-256 |
557a0c8b97a911403a0b8a8533d7422c998de76e1b525263ac26009fbdfa4409
|