Skip to content

Latest commit

 

History

History
1044 lines (813 loc) · 40.6 KB

File metadata and controls

1044 lines (813 loc) · 40.6 KB

mqlaunch — Command Reference

Complete command listing for mqlaunch. Run mqlaunch help for a quick index.

What help shows, and what only this page shows

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.

What a local command is allowed to be

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), and mqlaunch, which is compat_only and 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.


Start

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 rest

The mqlaunch mqlaunch … form exists so a pasted line that already carries the program name still runs.


Menus

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 menu

Workflows

mqlaunch 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 snapshot

Session / login

mqlaunch login menu                 # session boot + full menu
mqlaunch login about                # session boot + about screen
mqlaunch login check                # session boot + self-check

Shortcuts

mqlaunch 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 folders

Git

mqlaunch 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.


Release

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 threshold

The 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):

  1. Working tree check (commit or stash)
  2. Changelog auto-generation from commits
  3. Dry run
  4. Live release (VERSION bump, tag, push)
  5. GitHub release

Doctor / health

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)

Pulse

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.


Markdown

mqlaunch markdownlint                     # lint all Markdown files in current repo
mqlaunch markdownlint ROADMAP.md docs/     # lint selected paths
mqlaunch markdownlint --fix ROADMAP.md     # fix selected files

The Tools menu exposes separate Markdown lint and Markdown fix actions. The menu fix action requires explicit confirmation before files are changed.


MQ ecosystem skills and repos

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 files

These commands are read-only except skills new, which creates a local skills/<name>/SKILL.md scaffold in the requested repo.


Command errors

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: 2

AI 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.


AI assistant

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 clipboard

mqlaunch 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.

Workflow orchestration (flow)

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 run

mqlaunch 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.

Co-change memory intake (cochange)

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 files

Operator-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.

Co-change memory review (review-status / promote-from-review / resolve-supersede)

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; dismiss

Action 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.

Semantic Repository Memory (SRM)

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 store

Security & ops

mqlaunch 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 dashboard

System

mqlaunch system                     # open System menu
mqlaunch system check               # system health check
mqlaunch system time                # show date and time
mqlaunch net                        # local network information

Fuzzy pickers

All 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 files

Documentation tooling

mqlaunch docfunc                    # document shell functions in the current directory
mqlaunch docwrite                   # write the generated comments back into the sources

docfunc reports; docwrite edits files in place. Run docfunc first and read the output before letting docwrite touch anything.


Brain bridge

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-agent

Info

mqlaunch 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 question

status --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.


Utility

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 interface

Focus timer

mqlaunch focus                      # interactive menu
mqlaunch focus start                # 25/5 Pomodoro
mqlaunch focus deep                 # 50/10 deep work
mqlaunch focus log                  # recent sessions

Sessions 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.


Environment variables

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

Exit shortcuts

In any submenu prompt, type:

  • b or x or exit — go back / exit the submenu
  • A number — select that menu option
  • A mqlaunch command — run it directly (e.g. doctor)

HAL Command Surface

Full HAL bridge/menu reference:

docs/hal-command-surface.md

Includes command groups, backend mapping, safety model, and release checklist.


HAL Gallery

Visual HAL menu reference:

docs/hal-gallery.md
docs/hal-menu-preview.txt

Includes the grouped HAL menu layout, command groups, and layout contract.


HAL Pages

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.


HAL bridge

HAL Menu

mqlaunch hal

Opens 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 repos

HAL Audit

mqlaunch hal audit
mqlaunch hal audit --json
mqlaunch hal audit --repo macos-scripts

Publish 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.

HAL Release Brief

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-check

Read-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.

HAL Context Status

mqlaunch hal context
mqlaunch hal context --json
mqlaunch hal context latest-pack
mqlaunch hal context budget

Shows read-only mqobsidian context-pack readiness. Delegates to mq-hal context; it does not generate packs or write to mqobsidian.

MQ Obsidian

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: writeback

mqlaunch 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.

HAL Repo Status

mqlaunch hal repo-status
mqlaunch hal repo-status --json
mqlaunch hal repo-status --repo macos-scripts

Shows read-only git repository status: branch, dirty/clean state, changed file preview, recent commits, and latest tags. Delegates to mq-hal repo-status.

HAL CI Status

mqlaunch hal ci
mqlaunch hal ci --json
mqlaunch hal ci --repo macos-scripts
mqlaunch hal ci --limit 10

Shows 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.

HAL Brief

mqlaunch hal brief
mqlaunch hal brief --json
mqlaunch hal brief --no-gh
mqlaunch hal brief --repo macos-scripts

Shows 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.

HAL direct commands

mqlaunch hal "your request"
mqlaunch hal repos
mqlaunch hal raw "your request"
mqlaunch hal cd repo-signal

Local 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 "...".

HAL Doctor Summary

mqlaunch hal doctor
mqlaunch hal doctor --no-ai
mqlaunch hal doctor --json

Runs 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.

HAL Fix Planner

mqlaunch hal fix-doctor
mqlaunch hal fix-doctor --no-ai
mqlaunch hal fix-doctor --json

Creates a safe, copy-paste fix plan from HAL Doctor Summary. Executes nothing — only prints recommended inspection and verification commands for manual review.

HAL Session Memory

mqlaunch hal session
mqlaunch hal last
mqlaunch hal remember "release looked good"
mqlaunch hal memory-path

Shows 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.

HAL Timeline UI

mqlaunch hal timeline
mqlaunch hal timeline --details
mqlaunch hal timeline --repo macos-scripts
mqlaunch hal timeline --type doctor_summary
mqlaunch hal timeline --json

Shows local HAL Session Memory as a compact terminal timeline table.


B2 Atlas Prompt OS

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 VERSION

See docs/B2_TUI.md for full reference.