Work mesh
SkillDocs & knowledgeWork Mesh Live — automatic presence via hq mesh daemon; context reconcile/organize; manual session task-status, blocked, and note only.
Available today. Use it from your connected AI after setup.
No other account needed.
Connect ahel once, and every AI you use reads what you have installed.
Then ask your AI: use the Work mesh skill
What this skill tells your AI
The instructions your AI receives, as published by indigoai-us/hq-core in core/skills/work-mesh/SKILL.md and read by ahel’s review.
Presence and per-turn activity are automatic. Do not call deleted
core/scripts/work-mesh.sh / pack listen / watch. Use hq-cli:
Daemon
hq mesh daemon install
hq mesh daemon status
hq mesh daemon doctor
One resident process per machine. Flushes ~/.hq/work-mesh/spool.jsonl, holds
unverified-company events, publishes MQTT presence (LaunchAgent
ai.getindigo.hq-mesh-daemon / systemd hq-mesh-daemon.service).
Context
hq mesh context reconcile --observation-file <path> --machine
# or: hq mesh context reconcile --observation-json '<json>' [--machine] [--offline]
hq mesh context default get|set|clear
hq mesh context untracked <sessionId>
hq mesh context organize --session <sid> --decision <id> --option <id>
hq mesh context correct --session <sid> --to-company <slug> [--project <id>] [--task <id>]
reconcile takes observation input only (no --session). organize / correct / untracked keep --session (or the sessionId argument).
Create options also require a title: append --create-project '<approved project title>'
or --create-task '<approved task title>' to organize. Reuse an already approved
title, or obtain it before submitting. Existing choices need neither flag.
Project registration after planning
Local board.json is not the server PROJECT_VIEW. Before registration, persist
and verify the canonical server view through the supported authenticated HQ
client, using the approved company API and exact project ID. Never print or paste
tokens. Complete these steps in order:
- Read before writing: authenticated
GET /v1/work-mesh/projects/{projectId}?companyUid={companyUid}. Verify the returnedcompanyUidandprojectIdexactly match the approved plan. Only a confirmed 404 means the view is absent; stop on authorization, transport, or other errors. If the existing view already matches the required stories and repos, reuse it without a PUT. - Persist the server view: authenticated
PUT /v1/work-mesh/projects/{projectId}withcompanyUid, name, description, completestories, and completereposin the JSON body. MapuserStoriesto story IDs and content; map allmetadata.reposentries to supported repo records. Do not send the local board entry or an empty/stub view as the plan. For an existing view, merge by story ID and repo identity, preserve live story statuses and other server activity fields, and retain unrelated server entries. Never replace live statuses with localpasses: falseor default queued values. The current public PUT is a full replacement and has no conditional-version guard: do not assume sendingexpectedVersionprotects it. Coordinate exclusive writing before changing an existing view; if that cannot be established, stop and report the required merge instead of risking concurrent status updates. - Verify persistence: repeat the authenticated
GET /v1/work-mesh/projects/{projectId}?companyUid={companyUid}after PUT (or inspect the successful GET when reusing an unchanged view). Verify the exact company and project IDs, every planned story ID and its content, and every planned repo identity/path. Compare full ID sets and mappings, not just counts; confirm previously live story statuses and retained entries are unchanged. On any missing entry or mismatch, report the view as incomplete and stop. - Register only after verification: authenticated
POST /v1/work-mesh/projects/{projectId}/registerwith JSON body{"companyUid":"<resolved company UID>"}. Reuse the same canonical project ID.
This operation requires the existing tenant-scoped project view, creates or
reuses its deterministic genesis, and ensures its project channel. Require a
successful response containing both threadId and channelId before reporting
registration complete. Confirm the channel is readable with the current identity.
A Board view, cached thread ID, session presence, or successful note alone is not
proof of registration or channel creation.
If registration fails or the deployed server does not support this operation, report registration/channel creation as incomplete and preserve the plan and canonical ID. Inspect partial state before recovery; never create a replacement project or weaken tenant ownership checks. Presence hooks remain automatic and do not perform this project-registration step.
Session (manual only)
hq mesh session task-status --session-id <sid> --enqueue --seq <n> --task-id <id> --status queued|in_progress|review|done
hq mesh session blocked --session-id <sid> --enqueue --seq <n> --reason "<short>"
hq mesh session note --session-id <sid> --enqueue --seq <n> --summary "<<=280 chars>"
hq mesh session flush
Session verbs use --session-id (not --session).
Hooks already enqueue session_start / turn_start / turn_end / session_end.
Policy: core/policies/hq-project-work-mesh-reporting.md.
Signals
- GitHub stars
- 84
- Forks
- 15
- Last commit
- Sep 2026
Advanced
- Catalog kind
- skill
- Gateway key
work-mesh- Source
- github.com/indigoai-us/hq-core