Skip to main content

Deterministic agent-management framework that implements FRAME governance for AI-assisted software development.

Project description

Haxaml

PyPI version

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.md and CLAUDE.md are 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_starthaxaml_session_planhaxaml_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_recordhaxaml_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_init
  • haxaml_validate

Optional fallback: run haxaml init / haxaml validate directly when MCP is unavailable.

MCP Config

Official docs:

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

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

haxaml-0.6.1.tar.gz (123.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

haxaml-0.6.1-py3-none-any.whl (125.2 kB view details)

Uploaded Python 3

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

Hashes for haxaml-0.6.1.tar.gz
Algorithm Hash digest
SHA256 901eb9d8f2b542d8f7fa8f5d57a53b90c10c4cd94b24dd6cee268f1994257995
MD5 c2e5ee7f36837c8a334bcbae64e7971f
BLAKE2b-256 49a375bee415ed441707a4057505dcc85f8c20fc2021f0428ead20dbb163aca0

See more details on using hashes here.

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

Hashes for haxaml-0.6.1-py3-none-any.whl
Algorithm Hash digest
SHA256 0e730118ad6c3320883dea102db7ec6df45b76a437dc40e006428b01f40b0782
MD5 64b88c59b6ed84d8d5cbd7f30ab79a4e
BLAKE2b-256 557a0c8b97a911403a0b8a8533d7422c998de76e1b525263ac26009fbdfa4409

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page