Complete command listing for mqlaunch. Run mqlaunch help for a quick index.
This page is the complete surface: all 74 commands. mqlaunch help and
mqlaunch commands show the 48 that are public operator entrypoints, grouped by
namespace.
The split is a registry field, not an editorial habit. Each entry in
mqlaunch/lib/command-registry.json carries operator_surface, and
tests/registry-consumer-parity-smoke.sh requires help to advertise exactly the
true ones — not a subset, not a superset — each printed under a heading naming
its namespace.
A heading that names another repo — AGENT (owner: mq-agent) — means every
command under it is delegated there: mqlaunch finds the workflow and hands it
over, and the logic lives in that repo. An unlabelled heading means
macos-scripts owns it. Writing the home repo on nine of twelve headings
would be noise, and the owner sits on the heading rather than the row because a
row is already 26 columns of prefix plus a 66-character summary — the full
92-column width, with nowhere to put a per-row owner that does not come out of
the description.
That works because every namespace has exactly one owner.
validate-command-registry.py fails a namespace that mixes them, so the label
cannot start describing only some of the rows beneath it after a command is
added.
owner says which repo a command belongs to. For the 60 owned by
macos-scripts that was the whole statement, and it only said "not delegated" —
so a command could drift into orchestration, execution or memory and the
registry would record nothing unusual.
local_role is the positive rule. Every command with owner: macos-scripts
declares one of exactly three, classified by what its own code owns rather than
by what it opens:
local_role |
What it owns | Count |
|---|---|---|
terminal-ux |
the launcher's own surface — menus, help, indexes, pickers, dashboards, prompts, theme | 28 |
host-operation |
the macOS machine outside the terminal — network, processes, ports, power, scans, clipboard | 14 |
thin-entrypoint |
nothing but the invocation of a program, script or workflow that lives elsewhere | 17 |
Anything else belongs to the repo that owns it: orchestration to mq-agent,
execution to mq-mcp, memory to mqobsidian, repo analysis to repo-signal.
validate-command-registry.py fails a local command with no role, a role
outside the three, and a local_role on a command another repo owns — that
field is a claim about this tree only.
One command is exempt, named in LOCAL_ROLE_EXEMPT with the reason beside it:
srm cannot honestly carry any of the three. Its first four verbs delegate
to mq-agent memory-* and are a real thin entrypoint; everything else falls
through to tools/scripts/srm.sh, which builds a system prompt and calls
https://api.openai.com/v1/responses directly with file_search against a
hardcoded vector store. That is semantic memory cognition in shell. Classifying
it thin-entrypoint would record the breach as approved.
The exemption is temporary and gated: tests/command-registry-smoke.sh fails if
the list holds anything other than exactly srm, so a second exemption cannot be
added instead of fixing a second breach. It is removed when
srm ask|search|inspect and the fall-through have moved to their owning repo or
been retired, after which srm classifies normally.
The descriptions come from the registry's summary too. The block in
terminal/menus/mq-help-menu.sh is generated by
tools/scripts/generate-help-list.py and the test regenerates it, so there is
one place a description is written. It is generated rather than read at runtime
because doctor reports python3 as a check that can be missing, and help is
the command that has to keep working on a machine where things are missing.
One consequence: help lists plain command names now. The argument examples it
used to carry — mqlaunch doctor --json, mqlaunch ask "your question" — live
here instead, since an argument is not a command and the registry does not model
one.
The 26 that help stays quiet about are still dispatchable, still documented here, and fall into three kinds:
- reached through a namespace or menu rather than typed —
git-log,git-branch,github,kill-port,kill-process,snippets,recent,workspace,release-check,excalidraw,apps,net,debug - variants and implementation detail —
theme-macos,theme-reset,nickname-set,docfunc,docwrite,markdownlint,ollama-review,b2tui,brain,note - a second spelling of something already advertised —
index(help index),self-check(selftest), andmqlaunch, which iscompat_onlyand therefore never advertisable
POPULAR FLOWS at the top of help is a selection, not a namespace. A command
may be highlighted there, but never only there — the same test requires every
highlighted command to appear under its own namespace as well.
mqlaunch # open interactive menu
mqlaunch help # command index (terminal)
mqlaunch commands # same as help
mqlaunch demo # guided interactive demo
mqlaunch palette # fuzzy command search (fzf)
mqlaunch mqlaunch git # self-referential prefix; re-dispatches the restThe mqlaunch mqlaunch … form exists so a pasted line that already carries the
program name still runs.
mqlaunch system # System menu
mqlaunch perf # Performance menu
mqlaunch dev # Dev menu
mqlaunch git # Git menu
mqlaunch tools # Tools menu
mqlaunch workflows # Workflows menu
mqlaunch release # Release menu
mqlaunch login # Login / session menu
mqlaunch shortcuts # macOS Shortcuts menu
mqlaunch theme # Themes menumqlaunch workflows boot # run project boot
mqlaunch workflows check # run project check
mqlaunch workflows validate # validate workflow files, docs and routing
mqlaunch workflows save # save workspace snapshot
mqlaunch workflows restore # restore workspace snapshotmqlaunch login menu # session boot + full menu
mqlaunch login about # session boot + about screen
mqlaunch login check # session boot + self-checkmqlaunch shortcuts list # list all shortcuts
mqlaunch shortcuts search <query> # search shortcuts by name
mqlaunch shortcuts run <name> # run a shortcut
mqlaunch shortcuts folders # list shortcut foldersmqlaunch git # open git menu
mqlaunch git-log # fuzzy commit browser with diff preview
mqlaunch git-branch # fuzzy branch switcher
mqlaunch github # GitHub repo picker (search, clone, open)git-log, git-branch and github need fzf, and github also needs gh.
Without a terminal they exit with a message rather than blocking on a picker
nobody can answer.
mqlaunch git opens terminal/launchers/gitlaunch.sh. Its front panel holds
nine choices — Git status, Pull, Commit with suggested message, Safe push, Auto
commit + push, Recent log, Safe merge, PR merge, and 9. Repo and workspace,
which holds the repo switching. Safe merge answers to 7 and to m, PR merge
to 8 and to p: the letters they had before they had numbers.
The repo has a second git menu, terminal/menus/mq-git-menu.sh, with a
different panel — ten rows, safe merge at 9, repo actions under
10. Repo and remote. This paragraph described that one until 2026-08-01,
which meant the documented keys for mqlaunch git were the other menu's. It is
a separate file with its own implementation, not a second name for this one; see
AUTHORITY_MAP.md for what reaches it.
mq-git-menu.sh log shows the recent log. It has no menu row: d8ba588 removed
that row deliberately, but left the arm behind it dispatching, so the menu
answered a 9 it never advertised until this was cleaned up.
AI commit and safe push avoid direct pushes to protected branches such as
main and master. When branch protection requires a pull request, mqlaunch
offers to create a mq/... PR branch and push that branch instead.
Safe merge is a Class C local mutating action: it requires a clean tree, previews incoming commits, asks for explicit confirmation, and performs no push. See docs/safety/gitmerge-safe.md.
mqlaunch release # open release menu
mqlaunch release-check # run release readiness check
mqlaunch release-check --json # repo_release_check.v1 on stdout, nothing else
MQ_REPO_SIGNAL_FAIL_UNDER=16 mqlaunch release-check # custom thresholdThe two modes check different things and that is deliberate. --json runs the
machine contract in release-check.sh — version surfaces, skills, runtime
authority, shell syntax, smoke suite — and prints one JSON document. Without
flags you get the wider human review in
terminal/release/mq-release-check.sh: git state, secrets scan, stack and
mqobsidian contracts, workflow validation, changelog versus commits. Any other
flag is rejected with exit 2.
Auto Release flow (option 11 inside the menu):
- Working tree check (commit or stash)
- Changelog auto-generation from commits
- Dry run
- Live release (VERSION bump, tag, push)
- GitHub release
mqlaunch pulse # operator cockpit, six areas in one view
mqlaunch pulse menu # the same views as a menu
mqlaunch pulse attention # only what needs attention
mqlaunch pulse quality # one area: system, repos, stack, memory, git, quality
mqlaunch pulse --json # the mq.pulse.v1 document
mqlaunch pulse --plain # one tab-separated line per item
mqlaunch pulse --verbose # show the evidence behind each row
mqlaunch pulse --no-stack # skip the mq-agent collectors (the slow ones)
mqlaunch pulse --no-network # skip everything that talks to GitHub
mqlaunch doctor # interactive environment check
mqlaunch doctor --json # machine-readable JSON report
mqlaunch workflows validate # workflow command-surface health check
mqlaunch selftest # smoke tests + shell lint
mqlaunch check # alias for selftest
mqlaunch self-check # launcher self-check (lighter than selftest)One read-only view over signals this repo already collects, so the usual
sequence — doctor, repos status, stack — is one command. It is a view, not
a source of truth: every state comes from the repo that owns it, and every
suggested command already exists. The contract is
PULSE_CONTRACT.md.
Six collectors:
| Area | Reads | Owner |
|---|---|---|
SYSTEM |
tools/scripts/doctor.sh --json |
macos-scripts |
REPOSITORIES |
tools/scripts/mq-repos.py status --json |
macos-scripts |
MQ STACK |
mq-agent stack status --json |
mq-agent |
MEMORY |
mq-agent memory status --json, mq-agent stack cockpit --json |
mq-agent |
GIT / GITHUB |
git status, git rev-list, gh pr list, gh run list |
local git, GitHub |
QUALITY |
the repo's own gates, run one by one | macos-scripts |
QUALITY reports each gate separately and never adds them up — "some checks
passed" is not a verdict this repo publishes, so Pulse does not invent it. The
held/review queue is absent from MEMORY for the same reason: mq-agent memory review-status has no machine-readable mode, and reading its screen would make
that layout a contract.
Exit status is the verdict, and it is the one contract a script should read:
0 healthy
1 warnings, including anything that could not be measured
2 failures
3 pulse itself could not complete
A scope runs that area's collector and nothing else, so mqlaunch pulse quality
costs the five gates rather than the whole run. attention is the exception: it
collects every area and narrows only what is printed, because a view over
everything cannot be scoped to one collector without becoming the least informed
screen in the product. A scoped run reports on its scope — pulse quality exits
0 when the gates pass, whatever the rest of the machine looks like.
mqlaunch pulse menu opens the same views as a menu. Every row runs
mqlaunch pulse <scope> through the dispatcher, so a menu row and a typed
command are the same thing; Refresh repeats the view last opened rather than
returning to the full run.
--no-stack and --no-network mark their areas SKIPPED rather than dropping
them. A skipped check does not count against the verdict, but it stays on the
screen — a run with a flag must not look like a run where the subject was fine.
--no-stack covers MEMORY too: both spend mq-agent calls, and skipping one
while paying for the other would misrepresent what the flag saves.
Every collector is bounded — 10s for local delegates, 30s for mq-agent through
uv, 8s for each gh call — and a spent budget is reported as UNAVAILABLE
with the timeout named, never as a failure of the thing being looked at. A slow
GitHub does not mean broken CI, and a gate that was killed did not fail.
A local-only run costs about 1s; a full run about 4s, most of it four calls into
other repos.
--json prints the mq.pulse.v1 document, and it is the surface to automate
against:
mqlaunch pulse --json | jq -r '.attention[] | "\(.status)\t\(.subject)\t\(.next_command)"'
mqlaunch pulse repos --json | jq -e '.summary.fail == 0'{
"schema": "mq.pulse.v1",
"status": "WARN",
"scope": null,
"collected": ["system", "repositories", "stack", "memory", "git", "quality"],
"summary": { "pass": 11, "warn": 4, "fail": 0, "unavailable": 0, "skipped": 1 },
"sections": { "system": [], "repositories": [] },
"attention": []
}Read collected before reading sections. A section that is not there means
its collector did not run, not that the area was healthy — a scoped run is one
area collected, not five areas found fine. attention holds the same item
objects the sections hold, in the engine's order.
--plain is the same run as five tab-separated fields per item —
area, status, subject, summary, next_command — with the verdict on a #
comment line, so grep -v '^#' leaves exactly the rows. The exit code is the
same in every output mode.
JSON output shape:
{
"project": "macos-scripts",
"version": "0.3.0",
"status": "ok",
"checks": [
{ "name": "git", "status": "ok" }
],
"summary": { "ok": 8, "warn": 0, "fail": 0 }
}Verify:
mqlaunch doctor --json | jq -e '.summary.fail == 0'Exit status is the verdict, and it is the same in both modes: 0 when every
check passes, 1 when any check warns or fails. A machine without eza or
gitleaks is a warning, not a crash, so a caller that only wants the report
should read the document rather than the status — the pipeline above already
does, since jq supplies the exit code there.
The human screen carries the same verdict in words. It reads
MQ operational — N checks passed only when the status is ok; otherwise it
names how many checks need attention. tests/doctor-status-contract-smoke.sh
holds the two modes to the same answer.
Every check that does not pass carries a hint saying what to do about it, and the run ends with the one to do first:
⚠ gh missing — brew install gh
⚠ mqlaunch not in PATH — run ./install.sh from the repo to install the symlink
⚠ 9 of 12 checks need attention
Next: run ./install.sh from the repo to install the symlink
On a machine where everything passes, the same line points at where to go instead:
✔ MQ operational — 12 checks passed
Next: mqlaunch stack
The same advice is in the document: hint on each check that did not pass, and
a top-level next holding one instruction. next is never null — a run that
ends without telling the operator what to do is the defect the field exists to
prevent. While something needs attention it names the fix to do first, in the
order a machine is worth fixing in: the launcher, then the tools it shells out
to, and not the order the checks are printed in. Once nothing does, it names
mqlaunch stack, which shows every repo in the stack with its readiness and its
own next action.
The recommendation is held to the advertised surface by
tests/doctor-status-contract-smoke.sh: it must be a registry command with
operator_surface true, so a new operator can find it again in mqlaunch help.
mqlaunch markdownlint # lint all Markdown files in current repo
mqlaunch markdownlint ROADMAP.md docs/ # lint selected paths
mqlaunch markdownlint --fix ROADMAP.md # fix selected filesThe Tools menu exposes separate Markdown lint and Markdown fix actions. The menu fix action requires explicit confirmation before files are changed.
mqlaunch skills audit # list local skills, indexes and roadmap gaps
mqlaunch skills validate # validate SKILL.md frontmatter and indexes
mqlaunch skills validate --ecosystem # validate cross-repo skill uniqueness and roadmap hints
mqlaunch skills new my-skill --repo mq-mcp --description "Use when ..."
mqlaunch repos list # list known local MQ repos
mqlaunch repos status # show branch/upstream/origin/dirty state per repo
mqlaunch repos wiki-status # show local docs and GitHub Wiki freshness
mqlaunch repos roadmaps # list roadmap files per repo
mqlaunch repos skills # summarize skill counts per repo
mqlaunch repos diff-summary # show git change summary per repo
mqlaunch repos diff-summary --modified # show only modified/staged files
mqlaunch repos diff-summary --untracked # show only untracked filesThese commands are read-only except skills new, which creates a local
skills/<name>/SKILL.md scaffold in the requested repo.
Unknown top-level commands are side-effect free. They write a short diagnostic
to stderr, suggest the nearest documented command and return exit code 2.
They never open a menu, copy a prompt to the clipboard or invoke AI implicitly.
mqlaunch doctro
# stderr: ERROR: Unknown command: doctro
# stderr: Did you mean: mqlaunch doctor
# exit: 2AI help remains explicit: mqlaunch ask "What does doctro mean?".
Public namespaces provide local help without loading their optional backend:
mqlaunch agent --help
mqlaunch hal --help
mqlaunch obsidian --help
mqlaunch repos --help
mqlaunch skills --help
mqlaunch srm --help
mqlaunch stack --help-h is equivalent to --help. Valid namespace help returns 0; extra help
arguments return usage exit code 2.
Delegated commands preserve the backend exit status. Scripts can distinguish a
usage error (2) from a runtime failure without parsing terminal text. Launcher
pauses never replace that status, and --json suppresses pause output so stdout
remains machine-readable.
mqlaunch ask "your question" # repo-aware AI answer
mqlaunch ask quick "your question" # short answer, no context
mqlaunch atlas # interactive AI REPL session
mqlaunch ollama-review path/to/script.sh # local, read-only documentation review
mqlaunch fix "error or task description" # get copy-paste shell commands
mqlaunch review # review current diff via mq-agent -> mq-mcp
mqlaunch review file <path> security # review one file in security mode
mqlaunch review repo architecture # review repo in architecture mode
mqlaunch risk-review # risk review current diff via mq-agent
mqlaunch architecture # show mq-mcp architecture decisions
mqlaunch repo-health # repo-signal + orchestration contract health
mqlaunch stack # same as `stack status`
mqlaunch stack status # canonical stack truth status via mq-agent
mqlaunch stack cockpit # the release cockpit, read-only, via mq-agent
mqlaunch stack contract-check # delegate stack contract check to mq-agent
mqlaunch stack truth-export # delegate stack truth export to mq-agent
mqlaunch route inspect "task" # inspect a routing decision, read-only
mqlaunch route report --json # show verified routing outcomes
mqlaunch mcp-status # mq-mcp status, tool count, contract health
mqlaunch ui # copy UI prompt to clipboardmqlaunch only delegates these review and architecture commands. Review
logic, severity labels, semantic memory, and risk routing stay in mq-mcp;
mq-agent is the orchestration layer between mqlaunch and mq-mcp.
mqlaunch stack ... is also delegate-only. A bare mqlaunch stack means
mq-agent stack status, and that default is the only local decision on this
route; every other verb — cockpit, contract-check, truth-export, and any
subcommand mq-agent grows later — is forwarded to mq-agent stack unchanged,
without local truth parsing. mq-agent stack --help is the complete list.
The release cockpit is mq-agent stack cockpit: one table with each repo's
version, branch, dirty state, contract, release gate and next action, plus the
stack-wide gate and brain-export freshness. It is read-only and combines
stack status, contract-check, release-check and the latest mqobsidian
stack-truth note. mqlaunch displays it by delegating and reimplements none of
it — the release-state logic belongs to mq-agent, per
docs/RUNTIME_AUTHORITY.md.
--json is an option on the subcommands rather than on the group.
mqlaunch stack status --json and mqlaunch stack cockpit --json emit machine
documents; mqlaunch stack --json exits 2 from mq-agent with
No such option '--json', and that exit code reaches the caller. The registry
records json: false for stack for exactly this reason: the claim is about
the command as typed, and the bare command has no JSON mode.
mqlaunch route delegates every argument to mq-agent route unchanged and
returns the delegate's exact exit status. The entrypoint contains no model call,
fallback, confidence threshold, or routing policy. mq-agent owns the command,
its help, validation, shadow behavior, reports, and JSON contract.
mqlaunch flow # list available workflow templates
mqlaunch flow run repo-preflight ~/macos-scripts # plan, gate and run (read-only) via mq-agent
mqlaunch flow plan repo-preflight # build and print a plan; do not run it
mqlaunch flow status run_20260626_001 # show a run's current state
mqlaunch flow resume run_20260626_001 # resume a paused or failed run
mqlaunch flow cancel run_20260626_001 # cancel a runmqlaunch flow only delegates to mq-agent workflow. Planning, tool-policy
gating, plan approval, step execution and run state all live in mq-agent /
mq-mcp; mqlaunch adds no orchestration logic. repo defaults to the current
directory and may be overridden with --repo.
mqlaunch memory cochange ~/macos-scripts terminal/launchers/mqlaunch.sh # emit → score → writeback → status
mqlaunch memory cochange ~/mq-mcp mq-mcp/bridge.py --dry-run # write nothing; preview the loop
mqlaunch memory cochange ~/mq-mcp mq-mcp/bridge.py --no-writeback # score but write no learn filesOperator-triggered, one-command run of the autonomous learning loop for a single
file — not auto-after-workflow emission (it runs only when you ask).
mqlaunch memory cochange only delegates to mq-agent memory inbox-cochange;
mqlaunch owns no memory logic. Bridget/CG-2 is the evidence source, mq-agent is
the producer/orchestrator, and mqobsidian owns the observation inbox, scoring,
quarantine, promotion events and learn-writeback. Set MQ_OBSIDIAN_DIR (vault)
and MQ_MCP_DIR (Bridget), or pass --vault.
mqlaunch memory review-status # tier tally + held review queues
mqlaunch memory promote-from-review cochange-bridge-py --apply # approve a held promotion proposal
mqlaunch memory resolve-supersede cochange-bridge-py --accept --apply # adopt new evidence
mqlaunch memory resolve-supersede cochange-bridge-py --reject --apply # keep promoted; dismissAction the autonomous loop's two human-review queues. Co-change never auto-promotes,
so promote-from-review is how a held strong cluster is landed; resolve-supersede
accepts (adopts the new directive) or rejects (keeps the promoted one) a deep-conflict
proposal. The mutating verbs are dry-run unless --apply. Like intake, these only
delegate to mq-agent (memory review-status / promote-from-review /
resolve-supersede); mqlaunch owns no memory logic and never reaches mqobsidian
directly. Also reachable from the mq-agent menu row 21. Co-change review → memory.
mqlaunch srm inspect # show indexed store info
mqlaunch srm ask "what repo is indexed here?" # query the store
SRM_VECTOR_STORE_ID=vs_xxx mqlaunch srm search "upload flow" # query a specific storemqlaunch ghost # network cloaking (MAC/DNS spoof)
mqlaunch netpulse # network latency + WiFi diagnostic
mqlaunch scan # system + port scan
mqlaunch reap # CPU/MEM process reaper
mqlaunch guard # USB/Power perimeter watchdog
mqlaunch mc # advanced system dashboardmqlaunch system # open System menu
mqlaunch system check # system health check
mqlaunch system time # show date and time
mqlaunch net # local network informationAll of these are fzf front-ends. They need a terminal; piped or redirected
they print a message and exit rather than blocking.
mqlaunch kill-process # pick a process and kill it
mqlaunch kill-port 3000 # kill whatever is listening on a port
mqlaunch snippets # pick and run a script from macos-scripts
mqlaunch recent # pick from recently changed filesmqlaunch docfunc # document shell functions in the current directory
mqlaunch docwrite # write the generated comments back into the sourcesdocfunc reports; docwrite edits files in place. Run docfunc first and read
the output before letting docwrite touch anything.
Local memory and review helpers. They route through mq-agent; mqlaunch owns
no memory logic of its own.
mqlaunch brain # brain bridge entrypoint
mqlaunch chat # local chat helper
mqlaunch note # note verbs: sessions, decisions, reviews,
# learn, verified, systems
mqlaunch review-brain # brain-backed review through mq-agent
mqlaunch signal-brain # brain-backed signal report through mq-agent
mqlaunch learn-promote # promote a learned pattern through mq-agentmqlaunch version # show version
mqlaunch about # about / status dashboard
mqlaunch status # alias for about
mqlaunch status --json # machine-readable status, JSON only
mqlaunch notes # show CHANGELOG
mqlaunch repo # open repo root in Finder
mqlaunch guide # open terminal guide
mqlaunch apps # HAL terminal guide
mqlaunch apps "how do I rename a branch" # ask it a questionstatus --json (and about --json) print exactly one JSON document to stdout —
no banner, no ANSI, no prompt:
{
"project": "macos-scripts",
"version": "1.0.1",
"release_stage": "baseline",
"repo_state": "clean",
"latest_bundle": "none"
}repo_state is one of three values:
clean — the working tree has nothing pending. dirty — the working tree has
changes, including untracked files: the question a consumer is asking is
whether the checkout is safe to act on, and an untracked file is a change even
though it does not differ from HEAD. not-a-git-repo — the repo root is not a
git checkout, or git is unavailable, which the caller cannot act on differently.
The same three values, derived the same way, back mqlaunch status, the status
dashboard and mqlaunch version. They agree with mqlaunch git, which has
always counted untracked files.
The JSON form omits the dashboard's smoke-test field on purpose: that field runs
the full test suite, which a machine-readable call should not do. Use
mqlaunch selftest or mqlaunch doctor --json for health.
mqlaunch nickname-set "name" # set name shown in menu headers
mqlaunch theme # open Themes menu
mqlaunch theme list # list the available variants
mqlaunch theme current # show the active variant
mqlaunch theme apply amber # amber, green, minimal, ice, macos
mqlaunch theme reset # reset to default theme
mqlaunch theme-macos # compatibility spelling of `theme apply macos`
mqlaunch theme-reset # compatibility spelling of `theme reset`The prompt and the terminal UI palette are two systems, and applying a theme syncs them only on an exact name match:
amber green ice known to both — applying one applies both
minimal macos prompt only — the UI palette is left alone
classic synth UI only — the prompt is left alone
Nothing is translated into a near neighbour. macos would have to become
ice, which makes two prompt themes indistinguishable in the UI, and
minimal would have to become classic, which asserts a resemblance nobody
established. A theme with no counterpart changes only the surface you set it
on.
reset follows the same rule from the other end: it clears both tracks when
they hold the same shared theme — undoing what apply did — and clears only
its own when the two were set separately.
mqlaunch bundle # create debug/support bundle
mqlaunch workspace # save, list, show and restore workspace snapshots
mqlaunch excalidraw # open the Excalidraw drawing workflow
mqlaunch b2tui # B2 Atlas Prompt OS terminal interfacemqlaunch focus # interactive menu
mqlaunch focus start # 25/5 Pomodoro
mqlaunch focus deep # 50/10 deep work
mqlaunch focus log # recent sessionsSessions are appended to ~/.local/share/mq-focus/sessions.log. Arguments are
forwarded to the script rather than enumerated in the dispatcher, so its own
verbs stay the only list — an unknown one exits 1.
mqlaunch b2tui and mq b2 open the same surface; see
B2 Atlas Prompt OS for the full verb list.
| Variable | Purpose |
|---|---|
MACOS_SCRIPTS_HOME |
Override repo root (default: ~/macos-scripts) |
MQ_RELEASE_REPO |
Default repo for release menu |
MQ_GIT_REPO |
Default repo for git menu |
MQ_REPO_SIGNAL_FAIL_UNDER |
Release gate threshold (default: 14) |
MQ_USE_DASHBOARD_HEADER |
Set to 1 to use dashboard header |
OPENAI_API_KEY |
Required for AI commands |
MQ_REPO_VECTOR_STORE_ID |
Vector store for mqlaunch ask |
SRM_VECTOR_STORE_ID |
Vector store for mqlaunch srm |
In any submenu prompt, type:
borxorexit— go back / exit the submenu- A number — select that menu option
- A mqlaunch command — run it directly (e.g.
doctor)
Full HAL bridge/menu reference:
docs/hal-command-surface.md
Includes command groups, backend mapping, safety model, and release checklist.
Visual HAL menu reference:
docs/hal-gallery.md
docs/hal-menu-preview.txt
Includes the grouped HAL menu layout, command groups, and layout contract.
Visual HAL overview page:
docs/hal.html
docs/screenshots/hal-menu.png
Shows the grouped HAL command surface for GitHub Pages, including a rendered HAL menu screenshot.
mqlaunch halOpens the interactive MQ HAL menu.
The menu is a thin command surface over mq-hal. It does not contain HAL logic.
Menu actions include:
mqlaunch hal doctor
mqlaunch hal fix-doctor
mqlaunch hal timeline
mqlaunch hal session
mqlaunch hal last
mqlaunch hal remember "note"
mqlaunch hal context
mqlaunch hal reposmqlaunch hal audit
mqlaunch hal audit --json
mqlaunch hal audit --repo macos-scriptsPublish quality and README quality audit powered by mq-hal and repo-signal. Runs repo-signal publish-checklist and repo-signal readme-score, derives overall status (ready / needs_review / not_ready), and prints actionable recommendations. Requires repo-signal installed; falls back gracefully if unavailable.
mqlaunch hal release-brief
mqlaunch hal release-brief --json
mqlaunch hal release-brief --repo macos-scripts
mqlaunch hal release-brief --skip-gh
mqlaunch hal release-brief --skip-doctor
mqlaunch hal release-brief --skip-release-checkRead-only release readiness brief powered by mq-hal. Checks VERSION, CHANGELOG, README version reference, git state, CI status, latest GitHub release, doctor summary, and release-check.
mqlaunch hal context
mqlaunch hal context --json
mqlaunch hal context latest-pack
mqlaunch hal context budgetShows read-only mqobsidian context-pack readiness. Delegates to mq-hal context; it does not generate packs or write to mqobsidian.
mqlaunch obsidian # open the MQ Obsidian menu
mqlaunch obsidian status # read-only consumer status / doctor
mqlaunch obsidian inbox # list memory inbox files; no promotion
mqlaunch obsidian views # open manifest-defined views
mqlaunch obsidian regenerate-views # option 13 handler; aliases: regen-views, rebuild-views
mqlaunch obsidian promote --dry-run # delegate promotion preview to mq-agent
mqlaunch obsidian promote --confirm # delegate confirmed promotion to mq-agent
mqlaunch obsidian learn-writeback # preview durable memory for promoted items
mqlaunch obsidian learn-writeback --apply # write it; alias: writebackmqlaunch obsidian status is the direct alias for the existing read-only
mqobsidian doctor/status surface. inbox and views stay presentation-only:
they list or open exported vault surfaces and do not score, promote, reject, or
write durable memory. regenerate-views and menu option 13 share
mq_obsidian_regenerate_views; the handler reports a planned placeholder until
mqobsidian registers scripts/regenerate-memory-views.py. promote is a thin delegation surface to
mq-agent obsidian promote; mqlaunch does not inspect, score, approve, or write
the memory item itself. learn-writeback follows the same route to
mq-agent memory learn-writeback, which delegates to mqobsidian's own CLI: it
materialises durable agent-readable notes for memories mqobsidian has already
promoted, and writes nothing without --apply. Candidate and observed memories
are never written, and mqlaunch never decides which is which.
mqlaunch hal repo-status
mqlaunch hal repo-status --json
mqlaunch hal repo-status --repo macos-scriptsShows read-only git repository status: branch, dirty/clean state, changed file preview, recent commits, and latest tags. Delegates to mq-hal repo-status.
mqlaunch hal ci
mqlaunch hal ci --json
mqlaunch hal ci --repo macos-scripts
mqlaunch hal ci --limit 10Shows read-only GitHub Actions CI status via gh run list. Reports overall green/red/running state and recent run details. Delegates to mq-hal ci.
mqlaunch hal brief
mqlaunch hal brief --json
mqlaunch hal brief --no-gh
mqlaunch hal brief --repo macos-scriptsShows a compact repo status brief. Collects git state, GitHub Actions CI runs, latest release tag, and the last HAL Session Memory note. Fully deterministic — no Ollama required.
mqlaunch hal "your request"
mqlaunch hal repos
mqlaunch hal raw "your request"
mqlaunch hal cd repo-signalLocal Ollama-powered safe command router via mq-hal.
The model returns a JSON intent. The mq-hal router maps that intent to
explicitly allowed actions: git status, git log, repo switching, and
selected mqlaunch subcommands.
| Subcommand | Description |
|---|---|
hal "prompt" |
Natural language → execute action |
hal repos |
List configured repos |
hal raw "prompt" |
Show raw JSON intent from model |
hal cd <repo> |
Print repo path (use with mqhcd) |
Requirements: ~/mq-hal/bin/mq-hal, Ollama running, qwen3:4b-instruct pulled.
Override model: OLLAMA_MODEL=qwen3:4b mqlaunch hal "...".
mqlaunch hal doctor
mqlaunch hal doctor --no-ai
mqlaunch hal doctor --jsonRuns mqlaunch doctor --json, parses the result through mq-hal, and prints a concise health summary with safe next commands. Falls back to deterministic local analysis when Ollama is unavailable.
mqlaunch hal fix-doctor
mqlaunch hal fix-doctor --no-ai
mqlaunch hal fix-doctor --jsonCreates a safe, copy-paste fix plan from HAL Doctor Summary. Executes nothing — only prints recommended inspection and verification commands for manual review.
mqlaunch hal session
mqlaunch hal last
mqlaunch hal remember "release looked good"
mqlaunch hal memory-pathShows and stores local HAL memory in ~/.mq-hal/session.jsonl. Session Memory records doctor summaries, fix plans, and manual notes automatically. Stays local — nothing is sent externally.
mqlaunch hal timeline
mqlaunch hal timeline --details
mqlaunch hal timeline --repo macos-scripts
mqlaunch hal timeline --type doctor_summary
mqlaunch hal timeline --jsonShows local HAL Session Memory as a compact terminal timeline table.
mq b2 # open interactive TUI
mq b2 list # list all prompts by category
mq b2 categories # list categories with counts
mq b2 show 02.11 # show a single prompt
mq b2 compose 02.11 "design TUI architecture"
mq b2 run 02.11 # interactive compose
mq b2 route "bygga blueprint för nytt API"
mq b2 validate # check all prompt files
mq b2 config # show path configuration
mq b2 history # show last 10 runs
mq b2 history last # most recent run
mq b2 history export # write history to Obsidian
mq b2 export-last # path to last run file
mq b2 open-last # open last run in editor
mq b2 review-last # review last run with mq-agent
mq b2 review-last --architecture # architecture review mode
mq b2 review-last --security # security review mode
mq b2 compose 02.11 "task" --review # compose + review in one step
mq b2 route "ta fram blueprint" --compose # route + compose (non-interactive)
mq b2 route "ta fram blueprint" --compose --review # route + compose + review in one step
mq b2 route "ta fram blueprint" --compose --review --architecture
mq b2 stack # Stack cockpit — B2 + repo + roadmap + validation
mq b2 repo-status # show repo health via repo-signal
mq b2 repo-status --export # export status to Obsidian runs dir
mq b2 roadmap-drift # show unchecked roadmap items vs VERSIONSee docs/B2_TUI.md for full reference.