mq-agent is a terminal-native workflow orchestration runtime for the mq ecosystem.
It connects safe local execution, repo intelligence, MCP tools, mqlaunch workflows, and semantic repository memory into one controlled, operator-driven orchestration surface.
Current project phase:
Released: v1.23.0 — Cross-repo release automation
Current: Post-release hardening tracked under Unreleased
Completed foundation:
- Terminal-native CLI
- Planner / Executor / Verifier architecture
- Safety modes
- Tool registry
- repo-signal integration (v0.7.0+ with version guard)
- mq-mcp bridge (mq-mcp v1.3.0, 66 tools, safety classes A–D)
- mqlaunch integration (menu + direct commands + demo-flow entry)
- mq-image-analyze perception tool integration
- Command surface documentation
- Semantic repository memory
- GitHub Pages documentation
- Release hygiene and docs consistency checks
- Protected
mainworkflow - Browser-assisted verification workflows (read-only, operator-approved)
- Declarative task runner with
{{step:name}}templates - Controlled specialist orchestration
run_tasktool — task chaining- End-to-end demo flow: signal → review → release-check → brain
- mqobsidian second brain integration (brain record-review, brain decide, learn promote)
- Stack contract gate across active MQ repos
- CI-enforced stack gate on PRs and pushes to
main
| Version | Theme | Status |
|---|---|---|
| v0.1.0 | Project foundation | Done |
| v0.2.0 | Repo productization | Done |
| v0.3.0 | Local tool orchestration via mq-mcp | Done |
| v0.4.0 | mqlaunch integration | Done |
| v0.4.1 | Consistency, readability and release hygiene | Done |
| v0.5.0 | Semantic repository memory | Done |
| v0.5.1 | Semantic memory hardening | Done |
| v0.5.2 | mcp start/stop process management | Done |
| v0.6.0 | Controlled agent loops (task runner) | Done |
| v0.6.1 | Orchestration stabilization | Done |
| v0.7.0 | Browser-assisted verification workflows | Done |
| v0.8.0 | Controlled specialist orchestration | Done |
| v0.9.0 | Orchestration kernel consolidation | Done |
| v1.0.0 | Stable orchestration platform | Done |
| v1.1.0 | mq-mcp review runtime integration | Done |
| v1.2.0 | mq-mcp semantic memory + risk review routing | Done |
| v1.3.0 | Architecture memory, model-selection, learn | Done |
| v1.4.0 | mq-image-analyze perception tool integration | Done |
| v1.5.0 | End-to-end demo flow | Done |
| v1.6.0 | Stack-wide health | Done |
| v1.7.0 | Repo health history | Done |
| v1.8.0 | Stack alert | Done |
| v1.9.0 | Stack report + release gate | Done |
| v1.10.0 | Stack release notes | Done |
| v1.11.0 | Stack contract gate | Done |
| v1.12.0 | CI integration for stack gates | Done |
| v1.13.0 | mqobsidian stack truth export | Done |
| v1.14.0 | Stack release orchestration | Done |
| v1.15.0 | Brain-integrated stack workflow | Done |
| v1.16.0 | Runtime consolidation | Done |
| v1.17.0 | Ollama runtime | Done |
| v1.18.0 | Memory engine | Done |
| v1.19.0 | Operator dashboard | Done |
| v1.20.0 | Autonomous stack | Done |
| v1.21.0 | mq-hal operator layer readiness | Done |
| v1.22.0 | Inbox ranking and promotion orchestration | Done |
| v1.23.0 | Cross-repo release automation | Done |
Goal: keep mq-agent focused as the orchestrator while reducing parallel paths.
The runtime boundary remains:
mqlaunch → starts
mq-agent → orchestrates
mq-mcp → runs
repo-signal → measures
mqobsidian → remembers
ollama → reasons
mq-hal → presents
- Consolidate overlapping entrypoints by making
mq-agent run --stackthe canonical root runtime while keepingsignal,review,learn, andtruth-exportas focused escape hatches. - Define one canonical orchestration pipeline in runtime output: discover → repo-signal → review → learn → truth-export → release → dashboard.
- Add
mq-agent stack runas the first stack runtime surface with--dry-run,--json,--markdown,--brain,--ci, and--approve; expose it from the canonical root surface asmq-agent run --stack. - Add
docs/MQ_CONTROL_PLANE.md— one system map for signal, review, learn, memory and release.
Goal: make mqobsidian usable as a local long-term memory engine from mq-agent, not just a write target for exports.
-
mq-agent memory ingest— read-only Markdown index across truth, reviews, learn, releases, architecture, decisions and stack runs -
mq-agent memory query/memory search-vault— local vault search without mq-mcp or vector-store dependencies -
mq-agent memory summarize— section-level note, word and tag summary -
mq-agent memory link— read-only link candidates between notes -
memory_engine.v1registered in.mq/repo-contract.json -
docs/MEMORY_ENGINE.md - Keep write-backed links out of v1.18.0 and defer them to a later explicit approval flow
Goal: make Ollama a first-class runtime dependency with explicit model profiles and operator-visible status.
-
mq-agent models— first-class command group for local model runtime -
mq-agent models list— list local Ollama models -
mq-agent models current— show active profile and model -
mq-agent models doctor— read-only runtime, profile, Modelfile, and JSON diagnostics -
mq-agent models switch— switch active profile or assign model to a profile, with--approverequired for writes -
mq-agent models bench— measurable Ollama API benchmark with timing, token throughput, structured-output validation, and explicit keep-alive -
~/.mq-agent/models.json— profile config forfast,review,planner, andmemory -
mq-agent stack run— shows active model profile in the Ollama check - v1.17.0 release docs/status sync
- Full test suite and stack gates before PR
Goal: move from dashboards to controlled stack loops without allowing unsupervised writes.
-
mq-agent stack loop— controlled loop plan from the operator dashboard next action -
mq-agent stack loop --json— machine-readable plan for orchestration - Non-approved loop execution is blocked until explicit approval is passed
-
mq_stack_loop_plan.v1schema documents the controlled loop contract - Command-specific rollback behaviour is documented and tested
- mqlaunch menu entry runs the manual loop plan
- Add approved execution for allowlisted
truth-exportandstack-releaseactions
Goal: make stack operations visible from one operator surface before moving toward controlled autonomous loops.
-
mq-agent dashboard— read-only snapshot for stack health, release readiness, mqobsidian truth freshness, Ollama profile status, repos and contracts -
mq-agent dashboard --json— machine-readable operator state -
mq-agent tui— starts with the same operator snapshot before command execution - Add refresh-oriented TUI panels for stack, release, brain and models
- Add operator dashboard reference documentation
- Add dashboard documentation to the GitHub Pages index
Goal: keep mq-agent as the control-plane truth producer and make its
operator-facing outputs stable enough for mq-hal to become the daily
operator layer.
mq-agent should produce the truth. mq-hal should show the truth.
mqobsidian should remember the truth.
- Stable JSON outputs for the surfaces
mq-halshould read:mq-agent stack cockpit --json,mq-agent stack brain-gate --json,mq-agent run --stack --json,mq-agent stack release-check --json, andmq-agent dashboard --json - Contract tests for the fields needed by
mq-hal stack,mq-hal brain-status,mq-hal release-status, andmq-hal next-action -
mq-agent → mq-halread-contract documentation, including thatmq-halmust not own gates or write flows - Compact
next_actioncontract section covering source command, severity, suggested route and whether approval is required - Stack-loop audit history displayed read-only by the
mq-haloperator layer - Register
mq_hal_operator_contract.v1in.mq/repo-contract.json
Goal: make mq-agent the owned execution layer for inbox analysis, ranking,
and review-gated promotion, reading truth from mqobsidian exports and never
taking over truth ownership or shell runtime.
mq-agent runs the workflow. mqobsidian owns the schema and remembers the
result. mqlaunch stays a thin delegate surface.
- Add
mq-agent obsidian inbox list/inbox readover canonicalmqobsidianinbox exports (read-only). - Add
mq-agent obsidian inbox rank: score candidates against the canonical ranking fields, merging evidence across sources. - Add a review-needed vs auto-promotable classification flow using the
mqobsidianpromotion-state model. - Add
mq-agent obsidian promote --dry-runand--confirm, plusreject/deferandrollback/deprecateflows. - Require traceable source evidence before any promotion; keep mutation paths explicit and review-gated.
- Validate expected
mqobsidianmanifests/views before workflow execution; fail safely on stale, missing, or drifted truth surfaces. - Blocked — accept
repo-signalreadiness andmq-mcpreview outputs as evidence inputs without moving truth ownership out ofmqobsidian. Blocked by producer contracts (mqobsidian DEC-004):mq-mcp review_fileemits prose, not JSON;repo-signaldeclaresreadiness_score.v1/publish_checklist.v1but emits neither; and no repo-signal output carries a candidate key. Unblocks when a producer emits candidate-bearing, bounded JSON evidence with an explicitproducerandschema_id. - Expose a stable, machine-readable CLI/API surface for
mqlaunchto delegate to; keep ranking and promotion logic out of shell. - Register
inbox_promotion_orchestration.v1in the repo contract.
Goal: make the correct release path the only path across repos, without rebuilding automation that already ships.
Single-repo release automation ships as stack release
(plan_stack_release / execute_stack_release): gate → bump → sync-contract →
changelog → tag → push → truth-export. The full scope, evidence, and the three
botched off-main tags this reframe came from are recorded in the top-level
ROADMAP.md scoping note (2026-07-17).
- Converge release paths around contract-safe
stack releasebehavior and the sharedrepo_release_check.v1preflight contract. - Add read-only multi-repo preflight plus approval-gated execution in dependency order, with fail-fast behavior before mutation.
- Enforce clean, on-main release execution and reject target versions whose
tag already exists locally or on
origin. - Keep the known-bad drifted tags for provenance and fix forward without tag deletion, force-push, or history rewriting.
Released as v1.23.0 on 2026-07-19. GitHub Release metadata was synchronized
after publication so the tag, changelog, package version, README, and Latest
Release surface all identify v1.23.0 consistently.
-
mq-agent stack cockpit— merged stack view: version, branch, dirty, contract, release gate, brain-export freshness, next action per repo - Flag contract across the command surface:
--dry-runnever writes,--jsonmachine-readable,--brainrespects--dry-run,--approverequired for write flows - Fixed
signal --brain --dry-runwriting to the brain despite dry-run -
mq-agent brain structure— standard mqobsidian export structure (memory/stack-truth/,memory/reviews/,memory/learn/,mq-stack/runs/,mq-stack/roadmaps/) with--init --approveand legacy detection -
mq-agent stack brain-gate— pre-release checklist: contract-check + release-check + truth-export dry-run + vault structure + review→brain write path -
docs/STACK_COCKPIT.md,docs/VAULT_STRUCTURE.md,docs/BRAIN_GATE.md— reference docs - 56 new tests (511 total)
-
mq-agent stack release --repo <name>— orchestrated single-repo release: release-check pre-gate, version bump, contract sync, changelog from release-notes draft, commit, tag, push - Dry-run by default;
--executeapplies; abort on first failed step with pre-commit rollback - Closing
truth-exportafter a successful release -
docs/STACK_RELEASE.md— reference doc - 27 new tests (455 total)
-
mq-agent stack truth-export— durable truth note (contract + release gates) to mqobsidian -
mq-agent stack exportkept as backwards-compatible alias -
mq_agent/tools/stack_truth.py— snapshot builder, Markdown renderer,stack_truth_exporttool - Default note path
~/mqobsidian/memory/stack-truth/YYYY-MM-DD-mq-stack-truth.md -
--cimode forstack contract-check/stack release-check— SKIPPED for missing repos -
mq-stack-gate.ymlsplit intopr-gate(--ci on PRs) andfull-stack-gate(main/nightly/dispatch) -
docs/STACK_TRUTH_EXPORT.md— reference doc - 25 new tests (439 total)
-
.github/workflows/mq-stack-gate.yml— GitHub Actions workflow for stack gates - Workflow checks out active MQ stack repos into the expected workspace layout
- Workflow links repos to
~/...paths used byMQ_STACK_REPOS -
mq-agent stack contract-check --jsonruns on PRs and pushes tomain -
mq-agent stack release-check --jsonruns on PRs and pushes tomain - CI fails when stack contracts drift or release blockers are detected
- PR #61 verified green before merge
-
mq-agent stack contract-check— validate.mq/repo-contract.jsonacross all repos -
mq-agent stack contract-check --json— machine-readable; exits 1 on BLOCKED or DRIFT - Status model: READY → REVIEW (uncommitted) → DRIFT (version mismatch) → BLOCKED (missing)
-
REQUIRED_CONTRACT_FIELDSfrozenset — validates required JSON keys -
_contract_entry()helper instack_tools.py -
schemas/mq_stack_repo_contract.schema.json— JSON Schema 2020-12 -
.mq/repo-contract.jsonseeded in all 7 active stack repos -
docs/STACK_CONTRACT_GATE.md— reference with workflow and jq one-liners - 19 new tests (
test_stack_contract_gate.py)
-
mq-agent stack release-notes— draft notes from git commits since last tag, per repo -
mq-agent stack release-notes --repo <name>— single repo filter -
mq-agent stack release-notes --json— machine-readable output -
_release_notes_entry()helper instack_tools.py -
docs/STACK_RELEASE_NOTES.md— reference doc - 13 new tests (389 total)
-
mq-agent stack report— score, trend, alert, readiness in one table -
mq-agent stack report --json -
mq-agent stack release-check— local release gate, exits 1 on blocker -
mq-agent stack release-check --json/--dry-run -
docs/STACK_REPORT.md— reference with workflow - 15 new tests (376 total)
-
mq-agent stack alert— exits 1 when a repo dropped ≥ threshold or is below min-score -
mq-agent stack sweep --alert— inline alert at end of sweep -
--threshold N/--min-score N— configurable thresholds -
--json— machine-readable, CI-friendly exit codes -
docs/STACK_ALERT.md— reference with CI integration examples - 18 new tests (361 total)
-
stack sweepappends every non-dry-run run to~/.mq-agent/sweep-history.jsonl -
mq-agent stack history— tabular trend view, last N sweeps