95 KiB
Heretek-Rigs Technical & Architecture Documentation
Repository: Heretek-AI/heretek-rigs
Target Orchestration Framework: OpenRig v0.7.5 (@openrig/[email protected], commit b57c4da3, CLI binary rig)
Primary Agent Runtime Harness: Pi Coding Agent v1.4.0 (@earendil-works/[email protected], CLI binary pi)
Runtime Permission Enforcement: @gotgenes/[email protected] (fail-closed policy engine with mandatory "*..*": "deny" traversal guard)
Optional Builder AST/LSP Extensions: [email protected] and [email protected] (enabled on 21 builder and code-analysis seats)
Primary Model & Provider: opencode-go/muse-spark-1.3-contributor:high via OpenCode Go (https://opencode.ai/inference/go/v1, api: openai-responses, 1,048,576 context window, 131,072 max output tokens)
1. System Overview
heretek-rigs is a deterministic, zero-trust, multi-agent software engineering monorepo that packages 51 specialist AI engineering roles across 8 OpenRig v0.2 bundles (rigs/*/). Synthesized from Heretek-AI/Heretek-Crew@5ffb1fc and engineered against the source-verified internals of @openrig/[email protected] (re-checked for the 0.7.2 bump; see docs/sprints/CLI-0.7.2-BUMP.md) and @earendil-works/[email protected] (re-checked for the 1.4.0 bump; see docs/sprints/PI-1.4.0-BUMP.md), the repository turns a single declarative catalog (fleet/fleet.yaml and fleet/mcp-servers.yaml) into a complete fleet of self-contained OpenRig bundles, AgentSpecs, rosters, cryptographic registry views, and isolated runtime seat configurations.
Core Design Pillars
- Single Canonical Source of Truth: Every AgentSpec (
specs/agents/), RigBundle (rigs/), OpenRig Roster (rosters/heretek-omni-fleet.json), Registry Entry (registry/entries/), Behaviour View (registry/views/), and JCS Status Index (registry/status.json) is deterministically generated fromfleet/fleet.yamlandfleet/mcp-servers.yamlbyscripts/generate-rigs.py. Hand-editing generated leaves is strictly prohibited and caught by cryptographic digest and idempotency gates. - Zero-Trust Runtime Permission Enforcement: OpenRig records
permission_policy(builtin:lockedorbuiltin:standard) in bundle metadata, while actual tool-call gating inside each Pi seat is enforced by@gotgenes/[email protected]. Every seat enforces default-deny tool maps, role-scopedpath_writeglobs, 11 immutable write-guard patterns, 29 path read-guard patterns, 42 terminalbashdeny rules (narrowed--outputequals/space/tab write-forms plus targeted--output-junit/--output-logdenies, chaining/redirection metachars, diff/patch-exfiltration flags, identity-forgery forms), and explicit blocks on mutating AST/LSP extension tools (code_rewrite,lsp_rename,lsp_code_actions). - Zero-Leak Command-Backed Secrets: Credentials never enter
rig.yaml, Git history, child process environments, or agent transcripts. Instead,scripts/render-seat.pywrites0600per-seatauth.jsonandmcp.jsonfiles using Pi's native!catand!echo Bearer $(cat ...)command-backed secret expansion against$HERETEK_SECRETS(0700directory,0600owner-verified regular files opened withO_NOFOLLOW). - Complete Bundle Containment & Zero Symlinks: All 8 rigs materialize their own
agents/_sharedandagents/<role>trees with zero symbolic links, satisfying OpenRig'sassertTreeHasNoSymlinksandcheckBundleFolder(rig bundle check) with zero findings. - Multi-Profile Isolated Sidecars: Supporting services (
searxng,browserless,firecrawl,ghidra,radare2,sonarqube,qdrant,docker-android,docker-socket-proxy) run on loopback-only ports (127.0.0.1), pinned container image tags (zero:latest), and isolated Docker bridge networks (heretek,heretek-devsec,heretek-mobile) with fail-closed co-scheduling guards.
2. Source-Verified Architectural Invariants (OpenRig v0.6.13 + Pi v1.3.0, re-checked at OpenRig v0.7.2 and Pi v1.4.0)
Every architectural decision in heretek-rigs is grounded in direct source verification of @openrig/[email protected] (mvschwarz/openrig), @earendil-works/[email protected], and @gotgenes/[email protected]. The table below documents the 11 foundational invariants and how heretek-rigs resolves each constraint.
| # | Architectural Risk / Question | Upstream Source Behavior | Upstream Source Evidence | heretek-rigs Resolution |
|---|---|---|---|---|
| 1 | What is the OpenRig CLI binary name, and which commands require the daemon? | CLI binary is rig (plus openrig-tui), never openrig. Offline validation vs live daemon validation are split across subcommands. |
packages/cli/package.json:24-27 |
Use rig spec validate and rig bundle check offline (rig bundle check --json emits [] on 0 findings); start rig daemon start --no-kernel before rig agent validate and rig spec preflight. |
| 2 | Does OpenRig support runtime: opencode? |
No. Supported runtimes are claude-code, codex, pi, omp, terminal, and stub. runtime: opencode passes rig spec validate but fails rig spec preflight. |
packages/daemon/src/domain/rigspec-schema.ts:12-20 |
All 51 seats run on runtime: pi (with all-omp, all-claude, and all-codex presets in configurations.yaml), using Pi 1.4.0's built-in opencode-go provider. |
| 3 | Does OpenRig forward OPENCODE_API_KEY into runtime: pi child processes? |
No. buildPiChildEnv uses a strict allow-list and only forwards OPENROUTER_API_KEY, ZAI_API_KEY, KIMI_API_KEY, and MINIMAX_API_KEY for pi (OPENCODE_API_KEY is only forwarded for omp). |
packages/daemon/src/adapters/pi-runner-protocol.ts:111-117, 140-149 |
scripts/render-seat.py provisions <agentDir>/auth.json (0600) with {"opencode-go": {"type": "api_key", "key": "!cat $HERETEK_SECRETS/opencode-go.key"}}. |
| 4 | Is opencode-go/muse-spark-1.3-contributor natively supported in Pi 1.3.0? |
Yes. Pi 1.3.0 ships the opencode-go provider (api: "openai-responses", baseUrl: "https://opencode.ai/inference/go/v1", contextWindow: 1048576, maxTokens: 131072) and parses :high / :xhigh suffixes via splitThinkingSuffix. |
@earendil-works/[email protected] dist/bundle/chunks/chunk-66G7ITPS.js |
Pin opencode-go/muse-spark-1.3-contributor:high in rig.yaml / agent.yaml and write explicit provider metadata into <agentDir>/models.json. |
| 5 | Does rig bundle check allow local:../../specs/agents/... or openrig-home: local plugin paths? |
No. bundle-check.ts enforces fs.realpathSync containment inside rigs/<rig>/ and calls fileRead(entry.source.path, dir) on source.kind === "local" plugins. |
packages/cli/src/lib/bundle-check.ts:41-105 & commands/specs.ts:44 |
Materialize rigs/<rig>/agents/_shared and rigs/<rig>/agents/<role> inside every rig directory (zero symlinks) with imports: [{ref: "local:../_shared", version: "1.0"}] and omit plugins. |
| 6 | Does PiRuntimeAdapter.projectEntry project plugins for runtime: pi? |
No. if (entry.category === "plugin") return; skips plugin projection for Pi seats. |
packages/daemon/src/adapters/pi-runtime-adapter.ts:480 |
Vendor all 12 openrig-core SOP skills directly into specs/agents/_shared/skills/ and bind them as resources.skills. |
| 7 | Does guidance_merge collide when multiple seats share cwd: "."? |
Yes. projectEntry writes <!-- OPENRIG:BEGIN:<effectiveId> --> into <cwd>/AGENTS.md, overwriting role blocks when seats share a working directory. |
packages/daemon/src/adapters/pi-runtime-adapter.ts:442-503 |
Set uses.guidance: [] across all 51 AgentSpecs (zero guidance_merge startup files) and seed each seat's role charter + escalation block into its isolated <agentDir>/AGENTS.md. |
| 8 | Does OpenRig enforce permission_policy: builtin:locked at runtime for Pi seats? |
No. OpenRig maps builtin:yolo to --approve and all other policies (builtin:locked, builtin:standard) to --no-approve. |
packages/cli/src/commands/policy.ts:34-41 & pi-runtime-adapter.ts:392-398 |
Enforce granular runtime permissions in every seat via @gotgenes/[email protected] at <agentDir>/extensions/pi-permission-system/config.json. |
| 9 | Does @vtstech/[email protected] respect $PI_CODING_AGENT_DIR? |
No. It hardcodes path.join(os.homedir(), ".pi", "agent", "security.json"), ignoring OpenRig's per-seat $PI_CODING_AGENT_DIR. |
@vtstech/[email protected] security.js:19-34 |
Reject @vtstech/pi-security and standardize on @gotgenes/[email protected] across all 51 seats. |
| 10 | Does @gotgenes/[email protected] normalize .. in path_write and path globs? |
No. wildcard-matcher.ts evaluates globs before lexical .. resolution, so docs/../evil.md matches "docs/*": "allow". |
@gotgenes/[email protected] src/policy/wildcard-matcher.ts |
Place "*..*": "deny" last in both path_write and path (since last matching rule wins), blocking all relative path-traversal escapes. |
| 11 | Do mutating extension tools (code_rewrite, lsp_rename, lsp_code_actions) pass through path_write? |
No. Only native read/write/edit/grep/find/ls have ToolKind = "path"; extension tools are classified as "extension" and bypass path_write. |
@gotgenes/[email protected] src/access-intent/tool-kind.ts:33-55 |
Explicitly set "code_rewrite": "deny", "lsp_rename": "deny", and "lsp_code_actions": "deny" in every seat's top-level permission map so 100% of writes go through native write/edit. |
3. End-to-End Architecture & Repository Layout
Data Flow Pipeline
flowchart TD
subgraph Canonical["1. Canonical Inputs (Tracked in Git)"]
FY["fleet/fleet.yaml
(51 Roles, 7 Domain Rigs, Omni Spec)"]
MY["fleet/mcp-servers.yaml
(20 Pinned MCP Servers)"]
SC["schemas/*.v1.schema.json
+ rigspec-keys.pinned.json"]
PL["policies/*.policy.md
(Builder Standard & Read-Only Audit)"]
end
subgraph Generator["2. Deterministic Generator (scripts/generate-rigs.py)"]
GEN["scripts/generate-rigs.py
(make generate / make idempotent)"]
SL["fleet/skills-lock.json
(68 Shared Skills + SHA-256 Tree Hashes)"]
SA["specs/agents/_shared + specs/agents/<domain>/<role>/
(52 AgentSpecs v1.0 + 7 Files per Role)"]
RB["rigs/<rig>/
(8 RigBundles v0.2 + Materialized agents/ + bundle.yaml)"]
RO["rosters/heretek-omni-fleet.json
(51-Seat OpenRig v1 Roster)"]
RG["registry/entries/*.yaml + registry/views/*/behaviour.json
+ registry/status.json (RFC 8785 JCS)"]
end
subgraph Seeder["3. Pre-Launch Seat Provisioner (scripts/seed-rig.py & render-seat.py)"]
SEC["$HERETEK_SECRETS
(0700 Dir, 0600 Owner-Verified Files)"]
SD["$OPENRIG_HOME/state/pi/<pod>-<member>@<rig>/agent/
(All Files Mode 0600)"]
AU["auth.json ('!cat $HERETEK_SECRETS/opencode-go.key')"]
MD["models.json (opencode-go / muse-spark-1.3-contributor)"]
ST["settings.json (defaultTools + pi-permission-system)"]
MC["mcp.json ('!cat' & '!echo Bearer' Secrets)"]
PP["extensions/pi-permission-system/config.json
(11 path_write Guards, 29 path Guards, 15 bash Denies)"]
AG["AGENTS.md (Role Charter + Seat Escalation Block)"]
end
FY --> GEN
MY --> GEN
SC --> GEN
GEN --> SL
GEN --> SA
GEN --> RB
GEN --> RO
GEN --> RG
FY --> SD
MY --> SD
SEC --> AU
SD --> AU
SD --> MD
SD --> ST
SD --> MC
SD --> PP
SD --> AG
Directory & File Layout
| Path | Classification | Purpose & Contents |
|---|---|---|
fleet/fleet.yaml |
Canonical Source | Master machine-readable definition of the model (opencode-go/muse-spark-1.3-contributor:high), 7 static rigs, 1 hybrid omni-fleet (omni), 15 pods, and all 51 specialist roles (charter sources, skills, MCP bindings, path_write, bash_allow, escalation chains). |
fleet/mcp-servers.yaml |
Canonical Source | Catalog of 20 pinned Model Context Protocol (MCP) servers (codebase-memory, context7, github, memory, playwright, chrome-devtools, mobile, openapi, semgrep, radare2, aws, duckdb, postgres, kubernetes, k6, qdrant, prometheus, clickhouse, redis, terraform) plus 3 documented dropped legacy servers (git, filesystem, docker). |
fleet/skills-lock.json |
Generated Artifact | Cryptographic lockfile recording source, path, license_file (plus a declared license when the skill ships no license file), and directory tree (SHA-256) for all 68 shared skills vendored into specs/agents/_shared/skills/. |
specs/agents/_shared/ |
Generated Artifact | Shared heretek-shared AgentSpec v1.0 (agent.yaml) declaring all 68 shared skills in specs/agents/_shared/skills/<skill-id>/. |
specs/agents/<domain>/<role>/ |
Generated Artifact | Canonical AgentSpec v1.0 directories partitioned across 9 domains (cloud-sre, data-ai, executive, gamedev, languages, operations, qa, security, web-design). Each role contains 7 core artifacts plus role-local skills. |
rigs/<rig>/ |
Generated Artifact | 8 self-contained OpenRig v0.2 bundle directories (executive-and-architecture, fullstack-and-web-studio, systems-and-mobile-foundry, game-dev-and-sim-rig, cloud-sre-and-data-platform, qa-and-verification-gauntlet, defensive-sec-and-red-team, heretek-omni-fleet). Each includes rig.yaml, bundle.yaml, configurations.yaml, CULTURE.md, README.md, SETUP.md, and materialized agents/_shared + agents/<role> copies. |
rigs/heretek-omni-fleet/{pods,members}/ |
Generated Artifact | 15 pod fragments (pods/<pod>.yaml), 51 member fragments (members/<role>.yaml), and rig.all-51.yaml enabling dynamic runtime scaling via rig expand and rig add. |
rosters/heretek-omni-fleet.json |
Generated Artifact | OpenRig v1 Roster indexing all 51 seats across the fleet with seat, host, capabilities, engagement modes, use_when, why, and caveat. |
registry/ |
Generated Artifact | OpenRig v1 Registry catalog: registry/entries/<rig>.yaml, registry/views/<rig>/behaviour.json, and registry/status.json signed with RFC 8785 JCS bodyDigest. |
schemas/ |
Canonical Schema | 6 official OpenRig v1 JSON Schemas (agent-manifest.v1.schema.json, bundle-behaviour.v1.schema.json, bundle-common.v1.schema.json, bundle-configurations.v1.schema.json, bundle-status.v1.schema.json, registry-entry.v1.schema.json) plus rigspec-keys.pinned.json and rigspec-schema.pinned.ts. |
policies/ |
Canonical Policy | Custom OpenRig policy definitions: heretek-builder-standard.policy.md (default_posture: allow for toolchain, ask for remote/PR mutations) and heretek-readonly-audit.policy.md (default_posture: deny for read-only/audit seats). |
docker-compose.sidecars.yml |
Canonical Infra | Fail-closed Docker Compose specification defining 10 sidecar services across 5 opt-in profiles (qa-testing, web-research, devsec, ai-gateway, mobile) and 3 isolated bridge networks (heretek, heretek-devsec, heretek-mobile). |
scripts/ |
Canonical Tooling | Operational and verification scripts: generate-rigs.py, render-seat.py, seed-rig.py, bootstrap-pi-seats.sh, compose-sidecars.sh, verify-rigs.sh, gate-role.sh, gate-run.sh, mock-openai.mjs, and audit_loop.py. |
tests/test_render_seat.py |
Canonical Tests | Offline unittest suite verifying seat rendering, !cat command-backed credentials, 0600 secret permission enforcement, and *..* / terminal bash deny ordering. |
claude/ & gemini/ |
Retired Snapshots | Pre-implementation planning spike snapshots marked with RETIRED.md banners; retained strictly for audit provenance and superseded by docs/ and fleet/. |
Per-Role Artifact Structure (specs/agents/<domain>/<role>/ & rigs/<rig>/agents/<role>/)
Every specialist role directory in specs/agents/<domain>/<role>/ and its materialized counterpart in rigs/<rig>/agents/<role>/ contains an identical 7-file core layout (with only imports[0].ref adjusted from local:../../_shared in specs/ to local:../_shared in rigs/):
agent.yaml: OpenRig AgentSpec v1.0 definingdefaults(runtime: pi,model: opencode-go/muse-spark-1.3-contributor:high,effort),imports,profiles.default.uses.skills,resources.skills, andstartup.files(startup/context.mddelivered viasend_textonfresh_start).guidance/role.md: Full specialist role charter, mission statement, operating principles, domain constraints, and deliverables.startup/context.md: Initial seat briefing sent viasend_textupon fresh seat launch, instructing the agent to runrig whoami, inspect its queue viarig queue list, and respect itspath_writeboundaries.runtime/pi-settings.json: Template for Pi'ssettings.json(defaultProvider,defaultModel,defaultThinkingLevel,defaultTools,packages).runtime/mcp.json: Template for Pi's nativemcp.jsonshowing the role's bound MCP servers with@TOOLS@,@SECRETS@, and@SEAT@placeholders.runtime/policy-enforcement.json: Complete audit wrapper containingrole,openrig_permission_policy,readonly_charter,harness,pi_packages,promptTimeoutMs, and the fullpermissiontree.runtime/pi-permission-config.json: Exact runtime configuration payload (promptTimeoutMs+permission) written to<agentDir>/extensions/pi-permission-system/config.json.skills/<local-skill-id>/SKILL.md: One or more role-local specialist skills.
4. The 8-Rig Fleet Topology
The 51 specialist roles are partitioned across 7 domain-specific static rigs (6 + 11 + 4 + 6 + 11 + 6 + 7 = 51 seats with zero overlap and 100% role coverage), plus Rig 8 (heretek-omni-fleet), a composable command-and-control rig that boots a 3-seat command pod by default and scales dynamically to any of the 15 pods or 51 specialist seats.
Summary of the 8 OpenRig Bundles
| # | Rig ID (rigs/<id>/) |
Title | Default Boot Seats | Pods (lead) |
Rig-Level Policy | Sidecar Profiles | Purpose |
|---|---|---|---|---|---|---|---|
| 1 | executive-and-architecture |
Executive & Architecture | 6 | exec (exec-director), delivery (tpm-scrum-lead) |
builtin:locked |
core, ai-gateway, web-research |
Executive governance, OKR decomposition, product strategy, system architecture (MADR), sprint management, git worktree drift coordination, and docs-as-code. |
| 2 | fullstack-and-web-studio |
Full-stack & Web Studio | 11 | build (ts-node-fullstack), design (ui-ux-designer) |
builtin:standard |
core, qa-testing, web-research |
TypeScript/Node, Python/FastAPI, Go, and Java/Kotlin backend engineering paired with UI/UX prototyping, design systems, frontend perf, a11y, mobile web, copy, and UX research. |
| 3 | systems-and-mobile-foundry |
Systems & Mobile Foundry | 4 | systems (rust-systems-spec), mobile (android-mobile-spec) |
builtin:standard |
core, qa-testing, mobile |
Low-level Rust and C++ systems engineering paired with native Android (Jetpack Compose) and iOS (Swift 6 / SwiftUI) development. |
| 4 | game-dev-and-sim-rig |
Game Dev & Simulation | 6 | engine (engine-systems-eng), gameplay (game-systems-dev) |
builtin:standard |
core |
Real-time ECS game engine architecture, deterministic physics simulation, GPU shader pipelines, gameplay state machines, behavior trees, and glTF/KTX2 asset pipelines. |
| 5 | cloud-sre-and-data-platform |
Cloud, SRE & Data Platform | 11 | platform (cloud-platform-eng), sre (sre-incident-eng), data (dba-specialist), ml (mlops-serving-eng) |
builtin:standard |
core, ai-gateway, observability |
OpenTofu/Terraform IaC, Kubernetes/Helm orchestration, CVE lockfile patching, SRE incident triage, Prometheus/OTel observability, PostgreSQL/Redis/DuckDB/ClickHouse data pipelines, MLOps serving, and Qdrant RAG evaluation. |
| 6 | qa-and-verification-gauntlet |
QA & Verification Gauntlet | 6 | qa (release-qa-officer) |
builtin:standard |
core, qa-testing |
Release readiness veto gate, Playwright E2E browser testing, OpenAPI contract testing, k6 load testing, adversarial mutation sabotage, and Semgrep/CodeQL static analysis. |
| 7 | defensive-sec-and-red-team |
Defensive Security & Red Team | 7 | blue (threat-modeler), red (ai-red-teamer) |
builtin:locked |
core, devsec |
STRIDE threat modeling, OWASP SAST reachability triage, AWS IAM auditing, SBOM/license compliance, adversarial LLM/MCP red-teaming, and Radare2/Ghidra binary & firmware reverse engineering. |
| 8 | heretek-omni-fleet |
Heretek 51-Agent Omni-Fleet | 3 (scales to 51) | command (exec-director) + 15 pod fragments |
builtin:standard (command seats builtin:locked) |
core |
Composable master command center (exec-director, tpm-scrum-lead, system-architect) with 15 pod fragments (pods/*.yaml), 51 member fragments (members/*.yaml), and full 51-seat static profile (rig.all-51.yaml). |
Pod Structure, Coordination Edges & Continuity Policy
Every pod across all 8 rigs configures OpenRig's continuity_policy with enabled: true, sync_triggers: [pre_compaction, pre_shutdown, milestone], artifacts: {session_log: true, restore_brief: true, quiz: false}, and restore_protocol: {peer_driven: true, verify_via_quiz: false}. Each member seat configures restore_policy: resume_if_possible and compaction_strategy: default-compaction.
The table below details the exact pod-internal edges (from and to are bare member IDs within the pod) and cross-pod rig edges (from and to are <pod>.<member> qualified addresses) enforced by scripts/verify-rigs.sh V2:
| Rig ID | Pod ID | Pod Lead | Pod Members | Intra-Pod Edges (pods[].edges) |
Cross-Pod Rig Edges (edges) |
|---|---|---|---|---|---|
executive-and-architecture |
exec |
exec-director |
exec-director, product-director, system-architect |
exec-director delegates_to product-director, system-architect |
exec.exec-director delegates_to delivery.tpm-scrum-lead; exec.system-architect collaborates_with delivery.tpm-scrum-lead; exec.product-director can_observe delivery.tech-docs-lead |
executive-and-architecture |
delivery |
tpm-scrum-lead |
tpm-scrum-lead, git-drift-coord, tech-docs-lead |
tpm-scrum-lead delegates_to git-drift-coord, tech-docs-lead |
(See row above) |
fullstack-and-web-studio |
build |
ts-node-fullstack |
ts-node-fullstack, python-backend-spec, go-backend-eng, java-kotlin-eng |
ts-node-fullstack delegates_to python-backend-spec, go-backend-eng, java-kotlin-eng |
build.ts-node-fullstack collaborates_with design.ui-ux-designer |
fullstack-and-web-studio |
design |
ui-ux-designer |
ui-ux-designer, design-system-eng, fe-perf-eng, a11y-specialist, mobile-web-eng, brand-copy-spec, ux-research-analyst |
ui-ux-designer delegates_to all 6 pod members; a11y-specialist can_observe mobile-web-eng, design-system-eng |
(See row above) |
systems-and-mobile-foundry |
systems |
rust-systems-spec |
rust-systems-spec, cpp-lowlevel-eng |
rust-systems-spec delegates_to cpp-lowlevel-eng |
systems.rust-systems-spec collaborates_with mobile.android-mobile-spec |
systems-and-mobile-foundry |
mobile |
android-mobile-spec |
android-mobile-spec, ios-mobile-spec |
android-mobile-spec delegates_to ios-mobile-spec |
(See row above) |
game-dev-and-sim-rig |
engine |
engine-systems-eng |
engine-systems-eng, physics-sim-eng, graphics-shader-eng |
engine-systems-eng delegates_to physics-sim-eng, graphics-shader-eng |
engine.engine-systems-eng collaborates_with gameplay.game-systems-dev |
game-dev-and-sim-rig |
gameplay |
game-systems-dev |
game-systems-dev, game-ai-dev, tech-artist-pipeline |
game-systems-dev delegates_to game-ai-dev, tech-artist-pipeline |
(See row above) |
cloud-sre-and-data-platform |
platform |
cloud-platform-eng |
cloud-platform-eng, k8s-orchestrator, dependency-patcher |
cloud-platform-eng delegates_to k8s-orchestrator, dependency-patcher |
platform.cloud-platform-eng collaborates_with sre.sre-incident-eng; data.dba-specialist collaborates_with ml.mlops-serving-eng; sre.sre-incident-eng escalates_to platform.cloud-platform-eng |
cloud-sre-and-data-platform |
sre |
sre-incident-eng |
sre-incident-eng, observability-eng |
sre-incident-eng delegates_to observability-eng |
(See row above) |
cloud-sre-and-data-platform |
data |
dba-specialist |
dba-specialist, cache-streaming-eng, data-pipeline-eng, analytics-metrics-eng |
dba-specialist delegates_to cache-streaming-eng, data-pipeline-eng, analytics-metrics-eng |
(See row above) |
cloud-sre-and-data-platform |
ml |
mlops-serving-eng |
mlops-serving-eng, vector-rag-spec |
mlops-serving-eng delegates_to vector-rag-spec |
(See row above) |
qa-and-verification-gauntlet |
qa |
release-qa-officer |
release-qa-officer, e2e-browser-qa, api-contract-tester, load-stress-tester, sabotage-qa-tester, static-analysis-lead |
release-qa-officer delegates_to all 5 pod members; static-analysis-lead can_observe e2e-browser-qa, api-contract-tester |
None (edges: []) |
defensive-sec-and-red-team |
blue |
threat-modeler |
threat-modeler, appsec-engineer, cloud-sec-auditor, compliance-auditor |
threat-modeler delegates_to appsec-engineer, cloud-sec-auditor, compliance-auditor |
blue.threat-modeler collaborates_with red.ai-red-teamer; blue.appsec-engineer can_observe red.binary-reverse-eng |
defensive-sec-and-red-team |
red |
ai-red-teamer |
ai-red-teamer, binary-reverse-eng, firmware-sec-analyst |
ai-red-teamer delegates_to binary-reverse-eng, firmware-sec-analyst |
(See row above) |
heretek-omni-fleet |
command |
exec-director |
exec-director, tpm-scrum-lead, system-architect |
exec-director delegates_to tpm-scrum-lead; system-architect collaborates_with tpm-scrum-lead |
None in default 3-seat boot spec (rig.all-51.yaml includes all 15 pods and cross-pod edges) |
Runtime Presets (rigs/<rig>/configurations.yaml)
Every rig bundle includes an openrig.bundle-configurations/v1 manifest (configurations.yaml) declaring 5 runtime presets across all seats in the rig:
recommended: Maps every seat topi(default).all-pi: Maps every seat topi.all-omp: Maps every seat toomp(Oh My Pi fallback harness).all-claude: Maps every seat toclaude-code.all-codex: Maps every seat tocodex.
5. Complete 51-Role Specialist Catalog
The 51 roles in fleet/fleet.yaml are divided into 18 builtin:locked roles (the 16 read-only/docs-only roles where readonly_charter: true, plus the 2 QA gate/mutation roles static-analysis-lead and sabotage-qa-tester) and 33 builtin:standard builder/active-QA roles. Every role uses opencode-go/muse-spark-1.3-contributor:high with thinking effort set to xhigh (5 strategic/security roles: exec-director, system-architect, threat-modeler, ai-red-teamer, binary-reverse-eng) or high (46 roles).
Role Attributes, Escalation, Packages, MCPs, Writable Paths & Skills
| # | Role ID | Title | Static Rig / Pod | Pod Lead | Escalates To (reports_to) |
Policy | Thinking | Heartbeat | Pi Packages | MCP Bindings | Writable Globs (path_write) |
Skills Loadout |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | a11y-specialist |
Accessibility (a11y) & Usability Specialist | fullstack-and-web-studio / design |
No | delivery-tpm-scrum-lead@executive-and-architecture |
builtin:standard |
high |
On-demand (0s) | @gotgenes/[email protected] |
playwright, chrome-devtools |
tests/a11y/*, docs/a11y/* |
6 core + 1 shared (web-design-guidelines) + local: wcag-axe-audit-automation |
| 2 | ai-red-teamer |
Adversarial AI Red-Teamer | defensive-sec-and-red-team / red |
Yes | exec-system-architect@executive-and-architecture |
builtin:locked |
xhigh |
On-demand (0s) | @gotgenes/[email protected] |
codebase-memory, context7 |
docs/security/ai-redteam/* |
9 core + 2 shared (skill-scanner, agentic-actions-auditor) + local: auditing-mcp-servers-for-tool-poisoning, detecting-ai-model-prompt-injection-attacks, detecting-indirect-prompt-injection, testing-for-system-prompt-leakage, testing-prompt-injection-in-rag-pipelines |
| 3 | analytics-metrics-eng |
Analytics & Metrics Engineer | cloud-sre-and-data-platform / data |
No | exec-system-architect@executive-and-architecture |
builtin:standard |
high |
On-demand (0s) | @gotgenes/[email protected] |
codebase-memory, clickhouse |
migrations/clickhouse/*, analytics/* |
6 core + local: clickhouse-schema-and-aggregation-optimization |
| 4 | android-mobile-spec |
Mobile Android Specialist | systems-and-mobile-foundry / mobile |
Yes | delivery-tpm-scrum-lead@executive-and-architecture |
builtin:standard |
high |
On-demand (0s) | @gotgenes/[email protected], [email protected], [email protected] |
mobile, codebase-memory |
app/src/*, build.gradle*, app/build.gradle*, docs/evidence/android-artemis/* |
9 core + local: artemis-android-ui-exploration, jetpack-compose-state-hoisting |
| 5 | api-contract-tester |
API & Contract Testing Specialist | qa-and-verification-gauntlet / qa |
No | delivery-tpm-scrum-lead@executive-and-architecture |
builtin:standard |
high |
On-demand (0s) | @gotgenes/[email protected] |
openapi |
tests/api/*, openapi/* |
6 core + 4 shared (requesting-code-review, tdd, verification-before-completion, document-api-endpoint) + local: dotnet-expert, openapi-contract-verification |
| 6 | appsec-engineer |
Application Security (AppSec) Engineer | defensive-sec-and-red-team / blue |
No | exec-system-architect@executive-and-architecture |
builtin:locked |
high |
On-demand (0s) | @gotgenes/[email protected], [email protected], [email protected] |
semgrep, codebase-memory |
docs/security/advisories/* |
6 core + 7 shared (code-review, security-audit, semgrep, sarif-parsing, variant-analysis, fp-check, security-review) + local: owasp-reachability-triage |
| 7 | binary-reverse-eng |
Binary & Protocol Reverse Engineer | defensive-sec-and-red-team / red |
No | exec-system-architect@executive-and-architecture |
builtin:locked |
xhigh |
On-demand (0s) | @gotgenes/[email protected] |
radare2 |
docs/protocols/*, docs/forensics/* |
6 core + 2 shared (dwarf-expert, yara-rule-authoring) + local: radare2-defensive-disassembly, rea-evidence-based-decompilation |
| 8 | brand-copy-spec |
Brand & Creative Copy Specialist | fullstack-and-web-studio / design |
No | delivery-tpm-scrum-lead@executive-and-architecture |
builtin:standard |
high |
On-demand (0s) | @gotgenes/[email protected] |
None | locales/*, docs/brand/* |
6 core + local: actionable-microcopy-refactoring, humanizer |
| 9 | cache-streaming-eng |
Cache & Streaming Systems Engineer | cloud-sre-and-data-platform / data |
No | exec-system-architect@executive-and-architecture |
builtin:standard |
high |
On-demand (0s) | @gotgenes/[email protected] |
redis |
schemas/events/*, src/cache/*, deploy/kafka/* |
6 core + local: kafka-topic-and-consumer-tuning |
| 10 | cloud-platform-eng |
Cloud Platform Engineer | cloud-sre-and-data-platform / platform |
Yes | exec-system-architect@executive-and-architecture |
builtin:standard |
high |
On-demand (0s) | @gotgenes/[email protected] |
aws, codebase-memory, terraform |
terraform/*, infra/* |
9 core + local: opentofu-plan-and-validation |
| 11 | cloud-sec-auditor |
Cloud Security & IAM Auditor | defensive-sec-and-red-team / blue |
No | exec-system-architect@executive-and-architecture |
builtin:locked |
high |
On-demand (0s) | @gotgenes/[email protected] |
aws, codebase-memory |
docs/security/cloud/* |
6 core + 3 shared (security-audit, gha-security-review, agentic-actions-auditor) + local: iam-least-privilege-audit |
| 12 | compliance-auditor |
Compliance & License Auditor | defensive-sec-and-red-team / blue |
No | exec-system-architect@executive-and-architecture |
builtin:locked |
high |
On-demand (0s) | @gotgenes/[email protected] |
github(repos) |
sbom/*, docs/compliance/* |
6 core + 2 shared (supply-chain-risk-auditor, spec-to-code-compliance) + local: sbom-generation-and-license-audit |
| 13 | cpp-lowlevel-eng |
C++ Systems & Low-Level Engineer | systems-and-mobile-foundry / systems |
No | delivery-tpm-scrum-lead@executive-and-architecture |
builtin:standard |
high |
On-demand (0s) | @gotgenes/[email protected], [email protected], [email protected] |
codebase-memory |
src/*, include/*, tests/*, CMakeLists.txt |
6 core + 5 shared (systematic-debugging, test-driven-development, c-review, address-sanitizer, libfuzzer) + local: modern-cpp-sanitizer-verification |
| 14 | data-pipeline-eng |
Data Pipeline & ETL Engineer | cloud-sre-and-data-platform / data |
No | exec-system-architect@executive-and-architecture |
builtin:standard |
high |
On-demand (0s) | @gotgenes/[email protected] |
duckdb, codebase-memory |
dbt/*, pipelines/* |
6 core + local: duckdb-dbt-pipeline-execution |
| 15 | dba-specialist |
Database Administrator (DBA) | cloud-sre-and-data-platform / data |
Yes | exec-system-architect@executive-and-architecture |
builtin:standard |
high |
On-demand (0s) | @gotgenes/[email protected] |
postgres, codebase-memory |
migrations/*, docs/db/* |
9 core + local: zero-downtime-migration-audit |
| 16 | dependency-patcher |
Dependency & CVE Patching Steward | cloud-sre-and-data-platform / platform |
No | delivery-tpm-scrum-lead@executive-and-architecture |
builtin:standard |
high |
On-demand (0s) | @gotgenes/[email protected], [email protected], [email protected] |
codebase-memory |
*package-lock.json, *pnpm-lock.yaml, package.json, Cargo.toml, Cargo.lock, pyproject.toml, go.mod, go.sum |
6 core + 1 shared (supply-chain-risk-auditor) + local: automated-lockfile-patching |
| 17 | design-system-eng |
Design System Engineer | fullstack-and-web-studio / design |
No | delivery-tpm-scrum-lead@executive-and-architecture |
builtin:standard |
high |
On-demand (0s) | @gotgenes/[email protected], [email protected], [email protected] |
chrome-devtools, codebase-memory |
packages/ui/*, tokens/*, src/components/ui/* |
6 core + 2 shared (tailwind-ui, typescript-astro) + local: impeccable-taste, storybook-component-tokenization |
| 18 | e2e-browser-qa |
End-to-End Browser Automation Engineer | qa-and-verification-gauntlet / qa |
No | delivery-tpm-scrum-lead@executive-and-architecture |
builtin:standard |
high |
On-demand (0s) | @gotgenes/[email protected] |
playwright, chrome-devtools |
tests/e2e/*, playwright.config.* |
6 core + 3 shared (requesting-code-review, verification-before-completion, webapp-testing) + local: playwright-page-object-automation |
| 19 | engine-systems-eng |
Engine & Systems Programmer | game-dev-and-sim-rig / engine |
Yes | delivery-tpm-scrum-lead@executive-and-architecture |
builtin:standard |
high |
On-demand (0s) | @gotgenes/[email protected], [email protected], [email protected] |
codebase-memory |
src/engine/*, tests/engine/* |
9 core + local: cache-conscious-ecs-design |
| 20 | exec-director |
Director / CEO-Delegate | executive-and-architecture / exec |
Yes | Human (top of chain) |
builtin:locked |
xhigh |
1800s | @gotgenes/[email protected] |
github(issues), memory |
docs/executive/* |
12 core + 1 shared (dispatching-parallel-agents) + local: executive-okr-decomposition |
| 21 | fe-perf-eng |
Frontend Performance Engineer | fullstack-and-web-studio / design |
No | delivery-tpm-scrum-lead@executive-and-architecture |
builtin:standard |
high |
On-demand (0s) | @gotgenes/[email protected], [email protected], [email protected] |
chrome-devtools, playwright |
*.config.js, *.config.ts, docs/perf/* |
6 core + 1 shared (react-best-practices) + local: core-web-vitals-profiling |
| 22 | firmware-sec-analyst |
Firmware & Embedded Security Analyst | defensive-sec-and-red-team / red |
No | exec-system-architect@executive-and-architecture |
builtin:locked |
high |
On-demand (0s) | @gotgenes/[email protected] |
radare2 |
docs/security/firmware/* |
6 core + 2 shared (yara-rule-authoring, dwarf-expert) + local: firmware-extraction-and-hardening-audit |
| 23 | game-ai-dev |
Game AI Programmer | game-dev-and-sim-rig / gameplay |
No | delivery-tpm-scrum-lead@executive-and-architecture |
builtin:standard |
high |
On-demand (0s) | @gotgenes/[email protected], [email protected], [email protected] |
codebase-memory |
src/game/ai/*, tests/game/ai/* |
6 core + local: behavior-tree-authoring |
| 24 | game-systems-dev |
Game Systems & Gameplay Programmer | game-dev-and-sim-rig / gameplay |
Yes | delivery-tpm-scrum-lead@executive-and-architecture |
builtin:standard |
high |
On-demand (0s) | @gotgenes/[email protected], [email protected], [email protected] |
codebase-memory |
src/game/*, tests/game/* |
9 core + local: gameplay-state-machine-implementation |
| 25 | git-drift-coord |
Git & Worktree Drift Coordinator | executive-and-architecture / delivery |
No | delivery-tpm-scrum-lead@executive-and-architecture |
builtin:locked |
high |
On-demand (0s) | @gotgenes/[email protected] |
codebase-memory |
docs/ops/* |
6 core + 3 shared (git-flow, using-git-worktrees, finishing-a-development-branch) + local: worktree-rebase-orchestration |
| 26 | go-backend-eng |
Go Backend Engineer | fullstack-and-web-studio / build |
No | delivery-tpm-scrum-lead@executive-and-architecture |
builtin:standard |
high |
On-demand (0s) | @gotgenes/[email protected], [email protected], [email protected] |
codebase-memory, context7 |
cmd/*, internal/*, pkg/*, go.mod, go.sum |
6 core + 3 shared (systematic-debugging, test-driven-development, receiving-code-review) + local: go-expert, idiomatic-go-service-development |
| 27 | graphics-shader-eng |
Graphics & Shader Engineer | game-dev-and-sim-rig / engine |
No | delivery-tpm-scrum-lead@executive-and-architecture |
builtin:standard |
high |
On-demand (0s) | @gotgenes/[email protected], [email protected], [email protected] |
codebase-memory |
src/shaders/*, src/rendering/* |
6 core + local: shader-compilation-and-validation |
| 28 | ios-mobile-spec |
Mobile iOS Specialist | systems-and-mobile-foundry / mobile |
No | delivery-tpm-scrum-lead@executive-and-architecture |
builtin:standard |
high |
On-demand (0s) | @gotgenes/[email protected], [email protected], [email protected] |
codebase-memory |
ios/*, Sources/*, Tests/*, Package.swift |
6 core + local: swiftui-concurrency-implementation |
| 29 | java-kotlin-eng |
Java / Kotlin Enterprise Engineer | fullstack-and-web-studio / build |
No | delivery-tpm-scrum-lead@executive-and-architecture |
builtin:standard |
high |
On-demand (0s) | @gotgenes/[email protected], [email protected], [email protected] |
codebase-memory |
src/main/*, src/test/*, build.gradle*, pom.xml |
6 core + 3 shared (systematic-debugging, test-driven-development, receiving-code-review) + local: spring-boot-virtual-thread-tuning |
| 30 | k8s-orchestrator |
Kubernetes & Container Orchestrator | cloud-sre-and-data-platform / platform |
No | exec-system-architect@executive-and-architecture |
builtin:standard |
high |
On-demand (0s) | @gotgenes/[email protected] |
kubernetes |
deploy/*, k8s/* |
6 core + local: helm-chart-security-hardening |
| 31 | load-stress-tester |
Load & Performance Stress Tester | qa-and-verification-gauntlet / qa |
No | delivery-tpm-scrum-lead@executive-and-architecture |
builtin:standard |
high |
On-demand (0s) | @gotgenes/[email protected] |
k6, codebase-memory |
tests/load/*, docs/perf/* |
6 core + local: k6-stress-scenario-execution |
| 32 | mlops-serving-eng |
MLOps & Model Serving Engineer | cloud-sre-and-data-platform / ml |
Yes | exec-system-architect@executive-and-architecture |
builtin:standard |
high |
On-demand (0s) | @gotgenes/[email protected] |
None | deploy/mlops/*, tools/mlops/* |
9 core + local: vllm-serving-benchmarking |
| 33 | mobile-web-eng |
Mobile Web & Responsive Layout Engineer | fullstack-and-web-studio / design |
No | delivery-tpm-scrum-lead@executive-and-architecture |
builtin:standard |
high |
On-demand (0s) | @gotgenes/[email protected], [email protected], [email protected] |
chrome-devtools, playwright |
src/styles/*, src/components/*, public/* |
6 core + 4 shared (nextjs-dev, tailwind-ui, typescript-astro, web-design-guidelines) + local: mobile-viewport-emulation-audit |
| 34 | observability-eng |
Observability & Telemetry Engineer | cloud-sre-and-data-platform / sre |
No | exec-system-architect@executive-and-architecture |
builtin:standard |
high |
On-demand (0s) | @gotgenes/[email protected] |
codebase-memory, prometheus |
deploy/prometheus/*, deploy/grafana/*, deploy/otel/* |
6 core + local: prometheus-rule-validation |
| 35 | physics-sim-eng |
Physics & Simulation Engineer | game-dev-and-sim-rig / engine |
No | delivery-tpm-scrum-lead@executive-and-architecture |
builtin:standard |
high |
On-demand (0s) | @gotgenes/[email protected], [email protected], [email protected] |
codebase-memory |
src/engine/physics/*, tests/engine/physics/* |
6 core + local: collision-broadphase-optimization |
| 36 | product-director |
Product Director / Head of Product | executive-and-architecture / exec |
No | exec-exec-director@executive-and-architecture |
builtin:locked |
high |
On-demand (0s) | @gotgenes/[email protected] |
github(issues), memory |
docs/product/* |
6 core + 3 shared (brainstorming, writing-plans, subagent-driven-development) + local: epic-roadmap-authoring |
| 37 | python-backend-spec |
Python Backend & Systems Specialist | fullstack-and-web-studio / build |
No | delivery-tpm-scrum-lead@executive-and-architecture |
builtin:standard |
high |
On-demand (0s) | @gotgenes/[email protected], [email protected], [email protected] |
codebase-memory, context7 |
app/*, tests/*, pyproject.toml |
6 core + 4 shared (systematic-debugging, test-driven-development, modern-python, property-based-testing) + local: fastapi-async-development |
| 38 | release-qa-officer |
Release QA & Acceptance Sign-off Officer | qa-and-verification-gauntlet / qa |
Yes | delivery-tpm-scrum-lead@executive-and-architecture |
builtin:locked |
high |
On-demand (0s) | @gotgenes/[email protected] |
github(pull_requests) |
docs/releases/* |
9 core + 6 shared (code-review, requesting-code-review, tdd, verification-before-completion, finishing-a-development-branch, find-bugs) + local: release-readiness-audit |
| 39 | rust-systems-spec |
Rust Systems Specialist | systems-and-mobile-foundry / systems |
Yes | delivery-tpm-scrum-lead@executive-and-architecture |
builtin:standard |
high |
On-demand (0s) | @gotgenes/[email protected], [email protected], [email protected] |
codebase-memory, context7 |
crates/*, src/*, tests/*, Cargo.toml, Cargo.lock |
9 core + 4 shared (systematic-debugging, test-driven-development, rust-review, cargo-fuzz) + local: rust-async-service-hardening |
| 40 | sabotage-qa-tester |
Adversarial Red-Proof Sabotage Tester | qa-and-verification-gauntlet / qa |
No | delivery-tpm-scrum-lead@executive-and-architecture |
builtin:locked |
high |
On-demand (0s) | @gotgenes/[email protected], [email protected], [email protected] |
codebase-memory |
tests/chaos/*, docs/qa/* |
6 core + 4 shared (requesting-code-review, verification-before-completion, mutation-testing, property-based-testing) + local: adversarial-mutation-sabotage |
| 41 | sre-incident-eng |
Site Reliability Engineer (SRE) | cloud-sre-and-data-platform / sre |
Yes | exec-system-architect@executive-and-architecture |
builtin:locked |
high |
On-demand (0s) | @gotgenes/[email protected] |
prometheus |
docs/incidents/*, docs/runbooks/* |
9 core + local: blameless-incident-triage-and-postmortem |
| 42 | static-analysis-lead |
Code Style & Static Analysis Lead | qa-and-verification-gauntlet / qa |
No | delivery-tpm-scrum-lead@executive-and-architecture |
builtin:locked |
high |
On-demand (0s) | @gotgenes/[email protected], [email protected], [email protected] |
semgrep, codebase-memory |
*.eslintrc.json, *eslint.config.js, rules/*, biome.json, ruff.toml |
6 core + 6 shared (code-review, semgrep, semgrep-rule-creator, semgrep-rule-variant-creator, codeql, sarif-parsing) + local: custom-semgrep-rule-authoring |
| 43 | system-architect |
System Architect | executive-and-architecture / exec |
No | exec-exec-director@executive-and-architecture |
builtin:locked |
xhigh |
On-demand (0s) | @gotgenes/[email protected], [email protected], [email protected] |
codebase-memory, context7 |
docs/adr/*, docs/architecture/* |
6 core + 5 shared (brainstorming, writing-plans, executing-plans, subagent-driven-development, using-superpowers) + local: madr-architecture-decision |
| 44 | tech-artist-pipeline |
Technical Artist & Asset Pipeline Lead | game-dev-and-sim-rig / gameplay |
No | delivery-tpm-scrum-lead@executive-and-architecture |
builtin:standard |
high |
On-demand (0s) | @gotgenes/[email protected] |
None | assets/*, tools/asset-pipeline/* |
6 core + local: gltf-asset-optimization |
| 45 | tech-docs-lead |
Technical Documentation Lead | executive-and-architecture / delivery |
No | exec-product-director@executive-and-architecture |
builtin:locked |
high |
On-demand (0s) | @gotgenes/[email protected] |
codebase-memory |
docs/*, docs/*.md |
6 core + 1 shared (doc-coauthoring) + local: docs-as-code-synchronization |
| 46 | threat-modeler |
Threat Modeling & Hardening Engineer | defensive-sec-and-red-team / blue |
Yes | exec-system-architect@executive-and-architecture |
builtin:locked |
xhigh |
On-demand (0s) | @gotgenes/[email protected] |
codebase-memory, github(repos) |
docs/security/threat-models/* |
9 core + 3 shared (security-audit, entry-point-analyzer, audit-context-building) + local: stride-threat-modeling |
| 47 | tpm-scrum-lead |
Technical Product Manager / Scrum Lead | executive-and-architecture / delivery |
Yes | exec-product-director@executive-and-architecture |
builtin:locked |
high |
3600s | @gotgenes/[email protected] |
github(issues), memory |
docs/sprints/* |
12 core + 2 shared (dispatching-parallel-agents, git-flow) + local: planning-with-files, sprint-ticket-decomposition |
| 48 | ts-node-fullstack |
TypeScript / Node Fullstack Engineer | fullstack-and-web-studio / build |
Yes | delivery-tpm-scrum-lead@executive-and-architecture |
builtin:standard |
high |
On-demand (0s) | @gotgenes/[email protected], [email protected], [email protected] |
codebase-memory, context7 |
src/*, package.json |
9 core + 7 shared (nextjs-dev, systematic-debugging, tailwind-ui, test-driven-development, typescript-astro, react-best-practices, receiving-code-review) + local: end-to-end-type-safe-fullstack |
| 49 | ui-ux-designer |
UI/UX Designer & Prototyper | fullstack-and-web-studio / design |
Yes | delivery-tpm-scrum-lead@executive-and-architecture |
builtin:standard |
high |
On-demand (0s) | @gotgenes/[email protected] |
chrome-devtools, playwright |
src/components/*, src/assets/* |
9 core + 4 shared (tailwind-ui, typescript-astro, frontend-design, web-design-guidelines) + local: tailwind-ui-prototyping |
| 50 | ux-research-analyst |
User Research & Feedback Analyst | fullstack-and-web-studio / design |
No | exec-product-director@executive-and-architecture |
builtin:locked |
high |
On-demand (0s) | @gotgenes/[email protected] |
duckdb, github(issues) |
docs/research/* |
6 core + local: feedback-clustering-analysis |
| 51 | vector-rag-spec |
Vector Search & RAG Specialist | cloud-sre-and-data-platform / ml |
No | exec-system-architect@executive-and-architecture |
builtin:standard |
high |
On-demand (0s) | @gotgenes/[email protected] |
qdrant, codebase-memory |
src/rag/*, tests/rag/* |
6 core + local: rag-retrieval-evaluation |
Per-Role Allowed Shell Commands (bash_allow) & Collaborators
Every seat starts with "*": "deny" in permission.bash, followed by its role-specific bash_allow patterns below, and terminated by the 42 mandatory deny rules (*--output=*, *--output *, *--output\t*, *--output-junit*, *--output-log*, *;*, *|*, *>*, *<*, *&*, *`*, *$*, *(*, *)*, * -p*, *\t-p*, *--patch*, *--full-diff*, *--textconv*, * -u*, *\t-u*, * -U*, *\t-U*, *--unified*, *--cc*, * -c *, *\t-c *, * -c\t*, *\t-c\t*, * -m *, *\t-m *, * -m\t*, *\t-m\t*, * -W*, *\t-W*, *--function-context*, *--word-diff*, *--color-words*, *--binary*, *--raw*, *OPENRIG_SESSION_NAME=*, *OPENRIG_URL=*).
| # | Role ID | Canonical Seat Address | Collaborators | Role-Scoped bash_allow Patterns |
|---|---|---|---|---|
| 1 | a11y-specialist |
design-a11y-specialist@fullstack-and-web-studio |
brand-copy-spec, design-system-eng, release-qa-officer, system-architect |
npx playwright test tests/a11y*, rig whoami*, rig ps*, rig queue *, rig send *, rig capture *, rig transcript *, git status*, git diff --stat*, git diff --name-only*, git log --oneline*, git show --stat* |
| 2 | ai-red-teamer |
red-ai-red-teamer@defensive-sec-and-red-team |
exec-director, appsec-engineer, threat-modeler, vector-rag-spec, release-qa-officer, tpm-scrum-lead |
garak*, pyrit*, promptfoo*, rig whoami*, rig ps*, rig queue *, rig send *, rig capture *, rig transcript *, git status*, git diff --stat*, git diff --name-only*, git log --oneline*, git show --stat* |
| 3 | analytics-metrics-eng |
data-analytics-metrics-eng@cloud-sre-and-data-platform |
data-pipeline-eng, product-director, ux-research-analyst |
rig whoami*, rig ps*, rig queue *, rig send *, rig capture *, rig transcript *, git status*, git diff --stat*, git diff --name-only*, git log --oneline*, git show --stat* |
| 4 | android-mobile-spec |
mobile-android-mobile-spec@systems-and-mobile-foundry |
ios-mobile-spec, system-architect, tpm-scrum-lead, ui-ux-designer |
./gradlew testDebugUnitTest*, ./gradlew assembleDebug*, ./gradlew ktlintCheck*, adb connect 127.0.0.1*, adb connect localhost*, adb logcat*, artemis explore*, rig whoami*, rig ps*, rig queue *, rig send *, rig capture *, rig transcript *, git status*, git diff --stat*, git diff --name-only*, git log --oneline*, git show --stat* |
| 5 | api-contract-tester |
qa-api-contract-tester@qa-and-verification-gauntlet |
e2e-browser-qa, release-qa-officer, system-architect |
npx newman run*, npx spectral lint*, schemathesis run*, rig whoami*, rig ps*, rig queue *, rig send *, rig capture *, rig transcript *, git status*, git diff --stat*, git diff --name-only*, git log --oneline*, git show --stat* |
| 6 | appsec-engineer |
blue-appsec-engineer@defensive-sec-and-red-team |
exec-director, release-qa-officer, system-architect, tpm-scrum-lead |
semgrep scan*, trivy fs*, rig whoami*, rig ps*, rig queue *, rig send *, rig capture *, rig transcript *, git status*, git diff --stat*, git diff --name-only*, git log --oneline*, git show --stat* |
| 7 | binary-reverse-eng |
red-binary-reverse-eng@defensive-sec-and-red-team |
cpp-lowlevel-eng, exec-director, rust-systems-spec, system-architect |
r2 -e cfg.sandbox=true -q*, rabin2*, strings*, tshark -r *, rig whoami*, rig ps*, rig queue *, rig send *, rig capture *, rig transcript *, git status*, git diff --stat*, git diff --name-only*, git log --oneline*, git show --stat* |
| 8 | brand-copy-spec |
design-brand-copy-spec@fullstack-and-web-studio |
product-director, tpm-scrum-lead, ts-node-fullstack, ui-ux-designer |
rig whoami*, rig ps*, rig queue *, rig send *, rig capture *, rig transcript *, git status*, git diff --stat*, git diff --name-only*, git log --oneline*, git show --stat* |
| 9 | cache-streaming-eng |
data-cache-streaming-eng@cloud-sre-and-data-platform |
dba-specialist, system-architect, tpm-scrum-lead |
rig whoami*, rig ps*, rig queue *, rig send *, rig capture *, rig transcript *, git status*, git diff --stat*, git diff --name-only*, git log --oneline*, git show --stat* |
| 10 | cloud-platform-eng |
platform-cloud-platform-eng@cloud-sre-and-data-platform |
cloud-sec-auditor, k8s-orchestrator, sre-incident-eng, system-architect |
tofu fmt*, tofu validate*, tofu plan*, tflint*, rig whoami*, rig ps*, rig queue *, rig send *, rig capture *, rig transcript *, git status*, git diff --stat*, git diff --name-only*, git log --oneline*, git show --stat* |
| 11 | cloud-sec-auditor |
blue-cloud-sec-auditor@defensive-sec-and-red-team |
cloud-platform-eng, exec-director, release-qa-officer |
checkov -d*, tfsec*, gitleaks detect*, rig whoami*, rig ps*, rig queue *, rig send *, rig capture *, rig transcript *, git status*, git diff --stat*, git diff --name-only*, git log --oneline*, git show --stat* |
| 12 | compliance-auditor |
blue-compliance-auditor@defensive-sec-and-red-team |
dependency-patcher, exec-director, release-qa-officer |
syft dir*, npx license-checker*, cargo license*, rig whoami*, rig ps*, rig queue *, rig send *, rig capture *, rig transcript *, git status*, git diff --stat*, git diff --name-only*, git log --oneline*, git show --stat* |
| 13 | cpp-lowlevel-eng |
systems-cpp-lowlevel-eng@systems-and-mobile-foundry |
engine-systems-eng, game-systems-dev, system-architect |
cmake*, ninja*, ctest*, clang-tidy*, rig whoami*, rig ps*, rig queue *, rig send *, rig capture *, rig transcript *, git status*, git diff --stat*, git diff --name-only*, git log --oneline*, git show --stat* |
| 14 | data-pipeline-eng |
data-data-pipeline-eng@cloud-sre-and-data-platform |
analytics-metrics-eng, dba-specialist, mlops-serving-eng, system-architect |
dbt run*, dbt test*, python3 pipelines/*, rig whoami*, rig ps*, rig queue *, rig send *, rig capture *, rig transcript *, git status*, git diff --stat*, git diff --name-only*, git log --oneline*, git show --stat* |
| 15 | dba-specialist |
data-dba-specialist@cloud-sre-and-data-platform |
system-architect, tpm-scrum-lead |
rig whoami*, rig ps*, rig queue *, rig send *, rig capture *, rig transcript *, git status*, git diff --stat*, git diff --name-only*, git log --oneline*, git show --stat* |
| 16 | dependency-patcher |
platform-dependency-patcher@cloud-sre-and-data-platform |
appsec-engineer, release-qa-officer, sre-incident-eng |
npm update --ignore-scripts*, npm install --ignore-scripts*, npm ci --ignore-scripts*, npm test*, cargo update*, cargo test*, uv lock*, pytest*, go get*, go mod tidy*, go test*, git checkout*, git commit*, rig whoami*, rig ps*, rig queue *, rig send *, rig capture *, rig transcript *, git status*, git diff --stat*, git diff --name-only*, git log --oneline*, git show --stat* |
| 17 | design-system-eng |
design-design-system-eng@fullstack-and-web-studio |
a11y-specialist, system-architect, ui-ux-designer |
npm run test-storybook*, npm run build-tokens*, rig whoami*, rig ps*, rig queue *, rig send *, rig capture *, rig transcript *, git status*, git diff --stat*, git diff --name-only*, git log --oneline*, git show --stat* |
| 18 | e2e-browser-qa |
qa-e2e-browser-qa@qa-and-verification-gauntlet |
api-contract-tester, load-stress-tester, release-qa-officer, tpm-scrum-lead |
npx playwright test*, npx playwright show-trace*, rig whoami*, rig ps*, rig queue *, rig send *, rig capture *, rig transcript *, git status*, git diff --stat*, git diff --name-only*, git log --oneline*, git show --stat* |
| 19 | engine-systems-eng |
engine-engine-systems-eng@game-dev-and-sim-rig |
game-systems-dev, graphics-shader-eng, system-architect |
cargo bench*, cargo test engine*, cmake --build*, ctest*, rig whoami*, rig ps*, rig queue *, rig send *, rig capture *, rig transcript *, git status*, git diff --stat*, git diff --name-only*, git log --oneline*, git show --stat* |
| 20 | exec-director |
exec-exec-director@executive-and-architecture |
product-director, system-architect |
rig whoami*, rig ps*, rig queue *, rig send *, rig capture *, rig transcript *, git status*, git diff --stat*, git diff --name-only*, git log --oneline*, git show --stat* |
| 21 | fe-perf-eng |
design-fe-perf-eng@fullstack-and-web-studio |
sre-incident-eng, system-architect, ts-node-fullstack, ui-ux-designer |
npx lighthouse*, npm run build*, rig whoami*, rig ps*, rig queue *, rig send *, rig capture *, rig transcript *, git status*, git diff --stat*, git diff --name-only*, git log --oneline*, git show --stat* |
| 22 | firmware-sec-analyst |
red-firmware-sec-analyst@defensive-sec-and-red-team |
cpp-lowlevel-eng, exec-director, rust-systems-spec, system-architect |
readelf*, objdump*, checksec*, binwalk*, rig whoami*, rig ps*, rig queue *, rig send *, rig capture *, rig transcript *, git status*, git diff --stat*, git diff --name-only*, git log --oneline*, git show --stat* |
| 23 | game-ai-dev |
gameplay-game-ai-dev@game-dev-and-sim-rig |
game-systems-dev, physics-sim-eng, tpm-scrum-lead |
cargo test ai*, npm test ai*, pytest tests/game/ai*, rig whoami*, rig ps*, rig queue *, rig send *, rig capture *, rig transcript *, git status*, git diff --stat*, git diff --name-only*, git log --oneline*, git show --stat* |
| 24 | game-systems-dev |
gameplay-game-systems-dev@game-dev-and-sim-rig |
engine-systems-eng, graphics-shader-eng, sabotage-qa-tester, system-architect, tech-artist-pipeline, tpm-scrum-lead |
cargo test game*, npm test game*, pytest tests/game*, rig whoami*, rig ps*, rig queue *, rig send *, rig capture *, rig transcript *, git status*, git diff --stat*, git diff --name-only*, git log --oneline*, git show --stat* |
| 25 | git-drift-coord |
delivery-git-drift-coord@executive-and-architecture |
system-architect, tpm-scrum-lead |
git branch*, git merge-base*, rig whoami*, rig ps*, rig queue *, rig send *, rig capture *, rig transcript *, git status*, git diff --stat*, git diff --name-only*, git log --oneline*, git show --stat* |
| 26 | go-backend-eng |
build-go-backend-eng@fullstack-and-web-studio |
cloud-platform-eng, dba-specialist, k8s-orchestrator, system-architect, tpm-scrum-lead |
go build*, go test*, golangci-lint*, go mod*, rig whoami*, rig ps*, rig queue *, rig send *, rig capture *, rig transcript *, git status*, git diff --stat*, git diff --name-only*, git log --oneline*, git show --stat* |
| 27 | graphics-shader-eng |
engine-graphics-shader-eng@game-dev-and-sim-rig |
e2e-browser-qa, engine-systems-eng, game-systems-dev, sabotage-qa-tester, system-architect, tech-artist-pipeline |
glslangValidator*, naga*, spirv-val*, cargo test rendering*, rig whoami*, rig ps*, rig queue *, rig send *, rig capture *, rig transcript *, git status*, git diff --stat*, git diff --name-only*, git log --oneline*, git show --stat* |
| 28 | ios-mobile-spec |
mobile-ios-mobile-spec@systems-and-mobile-foundry |
android-mobile-spec, go-backend-eng, rust-systems-spec, system-architect, tpm-scrum-lead, ui-ux-designer |
swift build*, swift test*, swiftlint*, rig whoami*, rig ps*, rig queue *, rig send *, rig capture *, rig transcript *, git status*, git diff --stat*, git diff --name-only*, git log --oneline*, git show --stat* |
| 29 | java-kotlin-eng |
build-java-kotlin-eng@fullstack-and-web-studio |
dba-specialist, system-architect, tpm-scrum-lead, ts-node-fullstack |
./gradlew test*, ./gradlew check*, ./mvnw test*, rig whoami*, rig ps*, rig queue *, rig send *, rig capture *, rig transcript *, git status*, git diff --stat*, git diff --name-only*, git log --oneline*, git show --stat* |
| 30 | k8s-orchestrator |
platform-k8s-orchestrator@cloud-sre-and-data-platform |
cloud-platform-eng, sre-incident-eng |
helm lint*, helm template*, kubeconform*, kubectl diff*, rig whoami*, rig ps*, rig queue *, rig send *, rig capture *, rig transcript *, git status*, git diff --stat*, git diff --name-only*, git log --oneline*, git show --stat* |
| 31 | load-stress-tester |
qa-load-stress-tester@qa-and-verification-gauntlet |
cloud-platform-eng, release-qa-officer, sre-incident-eng |
k6 run*, rig whoami*, rig ps*, rig queue *, rig send *, rig capture *, rig transcript *, git status*, git diff --stat*, git diff --name-only*, git log --oneline*, git show --stat* |
| 32 | mlops-serving-eng |
ml-mlops-serving-eng@cloud-sre-and-data-platform |
cloud-platform-eng, sre-incident-eng, system-architect, vector-rag-spec |
python3 tools/mlops/*, rig whoami*, rig ps*, rig queue *, rig send *, rig capture *, rig transcript *, git status*, git diff --stat*, git diff --name-only*, git log --oneline*, git show --stat* |
| 33 | mobile-web-eng |
design-mobile-web-eng@fullstack-and-web-studio |
android-mobile-spec, ios-mobile-spec, tpm-scrum-lead, ui-ux-designer |
npx playwright test tests/mobile*, rig whoami*, rig ps*, rig queue *, rig send *, rig capture *, rig transcript *, git status*, git diff --stat*, git diff --name-only*, git log --oneline*, git show --stat* |
| 34 | observability-eng |
sre-observability-eng@cloud-sre-and-data-platform |
cloud-platform-eng, sre-incident-eng, system-architect |
promtool check*, promtool test*, rig whoami*, rig ps*, rig queue *, rig send *, rig capture *, rig transcript *, git status*, git diff --stat*, git diff --name-only*, git log --oneline*, git show --stat* |
| 35 | physics-sim-eng |
engine-physics-sim-eng@game-dev-and-sim-rig |
engine-systems-eng, game-systems-dev, system-architect |
cargo test physics*, ctest -R physics*, rig whoami*, rig ps*, rig queue *, rig send *, rig capture *, rig transcript *, git status*, git diff --stat*, git diff --name-only*, git log --oneline*, git show --stat* |
| 36 | product-director |
exec-product-director@executive-and-architecture |
exec-director, tpm-scrum-lead, ux-research-analyst |
rig whoami*, rig ps*, rig queue *, rig send *, rig capture *, rig transcript *, git status*, git diff --stat*, git diff --name-only*, git log --oneline*, git show --stat* |
| 37 | python-backend-spec |
build-python-backend-spec@fullstack-and-web-studio |
data-pipeline-eng, dba-specialist, system-architect, tpm-scrum-lead, vector-rag-spec |
pytest*, ruff*, mypy*, uv run pytest*, uv run ruff*, uv run mypy*, rig whoami*, rig ps*, rig queue *, rig send *, rig capture *, rig transcript *, git status*, git diff --stat*, git diff --name-only*, git log --oneline*, git show --stat* |
| 38 | release-qa-officer |
qa-release-qa-officer@qa-and-verification-gauntlet |
exec-director, product-director |
rig whoami*, rig ps*, rig queue *, rig send *, rig capture *, rig transcript *, git status*, git diff --stat*, git diff --name-only*, git log --oneline*, git show --stat* |
| 39 | rust-systems-spec |
systems-rust-systems-spec@systems-and-mobile-foundry |
cpp-lowlevel-eng, system-architect, tpm-scrum-lead, ts-node-fullstack |
cargo build*, cargo test*, cargo clippy*, cargo check*, cargo audit*, rig whoami*, rig ps*, rig queue *, rig send *, rig capture *, rig transcript *, git status*, git diff --stat*, git diff --name-only*, git log --oneline*, git show --stat* |
| 40 | sabotage-qa-tester |
qa-sabotage-qa-tester@qa-and-verification-gauntlet |
release-qa-officer, system-architect |
npx stryker run*, cargo mutants*, mutmut run*, npm test*, pytest*, cargo test*, rig whoami*, rig ps*, rig queue *, rig send *, rig capture *, rig transcript *, git status*, git diff --stat*, git diff --name-only*, git log --oneline*, git show --stat* |
| 41 | sre-incident-eng |
sre-sre-incident-eng@cloud-sre-and-data-platform |
cloud-platform-eng, exec-director, system-architect, tpm-scrum-lead |
rig whoami*, rig ps*, rig queue *, rig send *, rig capture *, rig transcript *, git status*, git diff --stat*, git diff --name-only*, git log --oneline*, git show --stat* |
| 42 | static-analysis-lead |
qa-static-analysis-lead@qa-and-verification-gauntlet |
release-qa-officer, system-architect |
semgrep --config*, npx biome check*, ruff check*, cargo clippy*, rig whoami*, rig ps*, rig queue *, rig send *, rig capture *, rig transcript *, git status*, git diff --stat*, git diff --name-only*, git log --oneline*, git show --stat* |
| 43 | system-architect |
exec-system-architect@executive-and-architecture |
exec-director, tpm-scrum-lead |
rig whoami*, rig ps*, rig queue *, rig send *, rig capture *, rig transcript *, git status*, git diff --stat*, git diff --name-only*, git log --oneline*, git show --stat* |
| 44 | tech-artist-pipeline |
gameplay-tech-artist-pipeline@game-dev-and-sim-rig |
game-systems-dev, graphics-shader-eng |
gltf-transform*, node tools/asset-pipeline/*, rig whoami*, rig ps*, rig queue *, rig send *, rig capture *, rig transcript *, git status*, git diff --stat*, git diff --name-only*, git log --oneline*, git show --stat* |
| 45 | tech-docs-lead |
delivery-tech-docs-lead@executive-and-architecture |
system-architect, tpm-scrum-lead |
markdownlint*, rig whoami*, rig ps*, rig queue *, rig send *, rig capture *, rig transcript *, git status*, git diff --stat*, git diff --name-only*, git log --oneline*, git show --stat* |
| 46 | threat-modeler |
blue-threat-modeler@defensive-sec-and-red-team |
exec-director, system-architect, tpm-scrum-lead |
rig whoami*, rig ps*, rig queue *, rig send *, rig capture *, rig transcript *, git status*, git diff --stat*, git diff --name-only*, git log --oneline*, git show --stat* |
| 47 | tpm-scrum-lead |
delivery-tpm-scrum-lead@executive-and-architecture |
e2e-browser-qa, product-director, rust-systems-spec |
rig whoami*, rig ps*, rig queue *, rig send *, rig capture *, rig transcript *, git status*, git diff --stat*, git diff --name-only*, git log --oneline*, git show --stat* |
| 48 | ts-node-fullstack |
build-ts-node-fullstack@fullstack-and-web-studio |
dba-specialist, design-system-eng, system-architect, tpm-scrum-lead, ui-ux-designer |
npm run build*, npm test*, npx tsc*, npx vitest*, rig whoami*, rig ps*, rig queue *, rig send *, rig capture *, rig transcript *, git status*, git diff --stat*, git diff --name-only*, git log --oneline*, git show --stat* |
| 49 | ui-ux-designer |
design-ui-ux-designer@fullstack-and-web-studio |
a11y-specialist, design-system-eng, product-director, ts-node-fullstack |
npm run build*, rig whoami*, rig ps*, rig queue *, rig send *, rig capture *, rig transcript *, git status*, git diff --stat*, git diff --name-only*, git log --oneline*, git show --stat* |
| 50 | ux-research-analyst |
design-ux-research-analyst@fullstack-and-web-studio |
a11y-specialist, product-director, tpm-scrum-lead |
rig whoami*, rig ps*, rig queue *, rig send *, rig capture *, rig transcript *, git status*, git diff --stat*, git diff --name-only*, git log --oneline*, git show --stat* |
| 51 | vector-rag-spec |
ml-vector-rag-spec@cloud-sre-and-data-platform |
mlops-serving-eng, python-backend-spec, system-architect, tpm-scrum-lead |
pytest tests/rag*, rig whoami*, rig ps*, rig queue *, rig send *, rig capture *, rig transcript *, git status*, git diff --stat*, git diff --name-only*, git log --oneline*, git show --stat* |
6. Permission & Security Architecture
Two Custom OpenRig Policy Surfaces (policies/)
heretek-builder-standard(policies/heretek-builder-standard.policy.md):- Target Roles: 33 engineering and active QA seats (
permission_policy: builtin:standard). - Posture:
default_posture: allow,allow: [run_toolchain],ask: [push_to_remote, create_pr, publish_package, merge_or_release, force_push],deny: [],destructive_class: [delete_everything, drop_persistent_store, reset_or_discard_vcs].
- Target Roles: 33 engineering and active QA seats (
heretek-readonly-audit(policies/heretek-readonly-audit.policy.md):- Target Roles: 16 read-only/docs-only roles (
readonly_charter: true) plus 2 locked QA gate seats (static-analysis-lead,sabotage-qa-tester) recorded aspermission_policy: builtin:locked. - Posture:
default_posture: deny,allow: [run_toolchain, rig_up, rig_down],ask: [],deny: [push_to_remote, create_pr, publish_package, merge_or_release, force_push, delete_files],destructive_class: [delete_everything, drop_persistent_store, reset_or_discard_vcs, delete_files, force_push].
- Target Roles: 16 read-only/docs-only roles (
@gotgenes/[email protected] Seat Configuration Anatomy
Because OpenRig delegates runtime tool gating for runtime: pi seats, scripts/render-seat.py writes <agentDir>/extensions/pi-permission-system/config.json (mode 0600) with promptTimeoutMs: 60000 (zero "ask" rules exist anywhere in the fleet; all rules are deterministic "allow" or "deny"). Within each map (bash, path, path_write, mcp), the last matching rule wins.
| Permission Surface | First Rule (Default) | Role-Specific Middle Rules | Mandatory Terminal Guard Block (Placed Last) | Security Guarantee |
|---|---|---|---|---|
Top-level permission |
"*": "deny" |
"read": "allow", "grep": "allow", "find": "allow", "ls": "allow", "write": "allow", "edit": "allow"; plus 9 read-only AST/LSP tools (ast_grep, ast_search, code_overview, lsp_diagnostics, lsp_hover, lsp_definition, lsp_references, lsp_symbols, lsp_completions) on the 21 seats with pi-lsp-extension / pi-ast-grep; plus "tool_search": "allow" when any bound MCP server has exposure: deferred. |
"code_rewrite": "deny", "lsp_rename": "deny", "lsp_code_actions": "deny", "external_directory": "deny" |
Prevents extension tools (ToolKind = "extension") from mutating files outside path_write and blocks out-of-tree directory access. |
permission.path_write |
"*": "deny" |
Role's permissions.path_write globs from fleet/fleet.yaml (e.g., "docs/security/advisories/*": "allow"). |
11 immutable write guards: ".git/*", "*/.git/*", "AGENTS.md", "*/AGENTS.md", ".pi/*", "*/.pi/*", ".agents/*", "*/.agents/*", "fleet/*", "scripts/*", "*..*" (all "deny"). |
Confines file writes strictly to the role's domain paths; prevents overwriting Git hooks, agent charters, fleet toolchain, or escaping via .. traversal. |
permission.path (Read) |
"*": "allow" |
"*.env": "deny", "*.env.*": "deny", "*.env.example": "allow" |
26 secret, metadata & traversal guards: "*.pem", "*.key", "*id_rsa*", "*kubeconfig*", "*/secrets/*", ".git/*", "*/.git/*", "AGENTS.md", "*/AGENTS.md", ".pi/*", "*/.pi/*", ".agents/*", "*/.agents/*", "fleet/*", "scripts/*", "*.pat", "*.uri", "*.profile", "*.region", "*.host", "*.password", "*.credentials", "*.config", "*.url", "*.user", "*..*" (all "deny"). |
Allows reading repository source code while blocking reads of .env files, credential files, .git/.pi/.agents metadata, fleet/* and scripts/* internals, and .. traversal. |
permission.bash |
"*": "deny" |
Role's permissions.bash_allow prefix globs (validated metacharacter-free and --output-free at render time). |
42 terminal bash denies: "*--output=*", "*--output *", "*--output\t*", "*--output-junit*", "*--output-log*", "*;*", `"* |
", ">", "<", "&", ``"*"``, "*$*", "*(*", "*)*", "* -p*", "*\t-p*", "*--patch*", "*--full-diff*", "*--textconv*", "* -u*", "*\t-u*", "* -U*", "*\t-U*", "*--unified*", "*--cc*", "* -c *", "*\t-c *", "* -c\t*", "*\t-c\t*", "* -m *", "*\t-m *", "* -m\t*", "*\t-m\t*", "* -W*", "*\t-W*", "*--function-context*", "*--word-diff*", "*--color-words*", "*--binary*", "*--raw*", "*OPENRIG_SESSION_NAME=*", "*OPENRIG_URL=*" (all "deny"). |
permission.mcp |
"*": "deny" |
"<bound-server>": "allow" for each server in the role's mcp list. |
Only explicitly bound MCP servers are allowed. | Ensures a seat can only invoke MCP servers declared for its role in fleet/fleet.yaml. |
Secret File Verification (secret_ok Triple Defense in scripts/render-seat.py)
When resolving secrets from $HERETEK_SECRETS (default ~/.config/heretek-rigs/secrets), scripts/render-seat.py enforces three fail-closed checks on every secret file before referencing it:
- Symlink Refusal (
p.is_symlink()): Rejects any secret file that is a symbolic link beforestat(). - UID Ownership Pin & Mode
0600Check (st.st_uid == os.geteuid()&mode & 0o077 == 0): Dies if the file is owned by another user or has any group/world permission bits set (chmod 600required). - Race-Free
O_NOFOLLOWOpen (os.open(p, os.O_RDONLY | os.O_NOFOLLOW)): Proves at use time that the path resolves to a regular file without a stat-then-use symlink swap.
If a required secret is absent:
- Under default strict mode (
bootstrap-pi-seats.shorrender-seat.pywithout--allow-missing-secrets), rendering fails closed with exit code2. - Under
--allow-missing-secrets, the seat is rendered in an explicitly degraded state with"enabled": falseon the affected MCP server (mcp.json), or no provider entry at all inauth.jsonfor a missing provider key (pi's auth storage, 1.3.0 and 1.4.0, never readsenabled), and a warning printed tostderr.
7. MCP Server Catalog & Vendored Skills Provenance
The 20 Pinned MCP Servers (fleet/mcp-servers.yaml)
Pi 1.4.0 provides native MCP support via <agentDir>/mcp.json. Servers with exposure: direct expose their tools immediately in the seat's context; servers with exposure: deferred are discovered on demand via Pi's tool_search tool (saving context window tokens).
| Server ID | Pinned Package / Source | Transport | Exposure | Verification Status | Command / Endpoint Template | Secret Files ($HERETEK_SECRETS) |
Description |
|---|---|---|---|---|---|---|---|
codebase-memory |
npm:[email protected] |
stdio |
deferred |
run-verified |
@TOOLS@/mcp/node_modules/.bin/codebase-memory-mcp |
None | Code knowledge graph of the working repository (symbols, call paths, trace_path). |
context7 |
npm:@upstash/[email protected] |
stdio |
deferred |
run-verified |
@TOOLS@/mcp/node_modules/.bin/context7-mcp |
Optional: context7.key |
Current library documentation lookup (resolve-library-id, get-library-docs). |
github |
remote:https://api.githubcopilot.com/mcp/ (official GitHub remote server) |
http |
deferred |
registry-verified |
https://api.githubcopilot.com/mcp/x/{toolset}/readonly |
github.pat |
GitHub read-only ({toolset} toolset) for the fleet's repositories. |
memory |
npm:@modelcontextprotocol/[email protected] |
stdio |
direct |
run-verified |
@TOOLS@/mcp/node_modules/.bin/mcp-server-memory |
None | Per-seat knowledge-graph memory (entities, relations, observations). |
playwright |
npm:@playwright/[email protected] |
stdio |
deferred |
run-verified |
@TOOLS@/mcp/node_modules/.bin/playwright-mcp --headless --isolated |
None | Browser automation through Playwright accessibility snapshots. |
chrome-devtools |
npm:[email protected] |
stdio |
deferred |
run-verified |
@TOOLS@/mcp/node_modules/.bin/chrome-devtools-mcp --headless --isolated |
None | Chrome DevTools (performance traces, network, console, Lighthouse-style audits). |
mobile |
npm:@mobilenext/[email protected] |
stdio |
deferred |
run-verified |
@TOOLS@/mcp/node_modules/.bin/mcp-server-mobile |
None | Android emulator and iOS simulator control (screens, taps, app install). |
openapi |
npm:[email protected] |
stdio |
direct |
run-verified |
@TOOLS@/mcp/node_modules/.bin/mcp-openapi-schema-explorer openapi/openapi.yaml |
None | Read-only explorer for the project's OpenAPI document. |
semgrep |
pypi:semgrep==1.181.0 (subcommand semgrep mcp) |
stdio |
deferred |
run-failed-here |
uvx semgrep==1.181.0 mcp -t stdio |
None | Semgrep scans, rule authoring support and AST dumps. |
radare2 |
git:https://github.com/radareorg/[email protected] |
stdio |
deferred |
not-run |
@TOOLS@/bin/r2mcp -R |
None | radare2 disassembly and analysis in read-only mode. |
aws |
pypi:awslabs.aws-api-mcp-server==1.5.6 |
stdio |
deferred |
registry-verified |
uvx awslabs.aws-api-mcp-server==1.5.6 |
aws.profile, aws.region, aws.config, aws.credentials |
AWS CLI-backed read-only inspection (READ_OPERATIONS_ONLY=true; IAM is the real control). |
duckdb |
pypi:mcp-server-motherduck==1.1.0 |
stdio |
direct |
registry-verified |
uvx mcp-server-motherduck==1.1.0 --db-path :memory: |
None | Local DuckDB SQL over project data files (in-memory, no MotherDuck token). |
postgres |
pypi:postgres-mcp==0.3.0 |
stdio |
deferred |
registry-verified |
uvx postgres-mcp==0.3.0 --access-mode=restricted |
postgres-readonly.uri |
PostgreSQL schema, EXPLAIN and index advice in restricted (read-only) mode. |
kubernetes |
npm:[email protected] |
stdio |
deferred |
run-verified-fails-closed |
@TOOLS@/mcp/node_modules/.bin/kubernetes-mcp-server --read-only |
kubeconfig |
Kubernetes cluster inspection, read-only. |
k6 |
pypi:k6-mcp-server==2.2.0 |
stdio |
direct |
registry-verified |
uvx k6-mcp-server==2.2.0 |
None | Run k6 load scripts and summarize results. |
qdrant |
pypi:mcp-server-qdrant==0.8.1 |
stdio |
direct |
registry-verified |
uvx mcp-server-qdrant==0.8.1 |
None | Local Qdrant store for retrieval evaluation. |
prometheus |
oci:ghcr.io/pab1it0/prometheus-mcp-server:1.6.2 / pypi:prometheus-mcp-server==1.6.2 |
stdio |
deferred |
registry-verified |
uvx prometheus-mcp-server==1.6.2 |
prometheus.url |
PromQL queries and metric discovery against the team Prometheus. |
clickhouse |
pypi:mcp-clickhouse==0.7.0 |
stdio |
deferred |
registry-verified |
uvx mcp-clickhouse==0.7.0 |
clickhouse.host, clickhouse.user, clickhouse.password |
ClickHouse queries, read-only by default. |
redis |
pypi:redis-mcp-server==0.5.1 |
stdio |
deferred |
registry-verified |
uvx --from redis-mcp-server==0.5.1 redis-mcp-server |
redis-readonly.url |
Redis inspection with a read-only ACL user. |
terraform |
oci:docker.io/hashicorp/terraform-mcp-server:1.0.0 |
stdio |
deferred |
registry-verified |
docker run -i --rm --network bridge hashicorp/terraform-mcp-server:1.0.0 |
None | Terraform/OpenTofu registry lookups (providers, modules, docs). |
Legacy MCP Servers Dropped During Security Audit
git(@cyanheads/[email protected]): Dropped because read-onlygitcommands (git status*,git diff --stat*,git log --oneline*,git show --stat*) gated viapi-permission-systembash_allowconsume far fewer context tokens.filesystem(@modelcontextprotocol/[email protected]): Dropped because it duplicated Pi's nativeread,grep,find, andlstools and referenced a legacy/paperclip/workspaces/binariespath.docker(docker-mcp==0.2.0): Dropped because it exposed daemon-level Docker access; replaced by the GET-onlytecnativa/docker-socket-proxy:0.5.0sidecar and scopedbash_allowrules.- Replaced Unsafe Legacy Pins:
pypi:r2mcp==0.2.5(an unrelated Portugueserest2mcpgateway CLI on PyPI) was replaced withgit:https://github.com/radareorg/[email protected]compiled to@TOOLS@/bin/r2mcpwith-Rread-only flag;npm:[email protected](no repository, unmaintained) was replaced with officialpypi:awslabs.aws-api-mcp-server==1.5.6withREAD_OPERATIONS_ONLY=true;npm:@modelcontextprotocol/server-githubandserver-postgres(deprecated on npm) were replaced with the official GitHub Copilot remote read-only MCP endpoint andpypi:postgres-mcp==0.3.0 --access-mode=restricted.
The 68 Shared Skills (fleet/skills-lock.json) & 62 Role-Local Skills
Because PiRuntimeAdapter.projectEntry skips plugins for runtime: pi, all 12 openrig-core SOP skills and 56 external domain skills (68 shared skills total) are vendored as full directories under specs/agents/_shared/skills/<skill-id>/ (and materialized into rigs/<rig>/agents/_shared/skills/<skill-id>/) with SHA-256 tree hashes locked in fleet/skills-lock.json.
| Upstream Repository / Package | Pinned Commit / Version | License | Skill Count | Vendored Skill IDs (specs/agents/_shared/skills/) |
|---|---|---|---|---|
trailofbits/skills@5c99c03 |
`` | See LICENSE |
22 | address-sanitizer, agentic-actions-auditor, audit-context-building, c-review, cargo-fuzz, codeql, dwarf-expert, entry-point-analyzer, fp-check, libfuzzer, modern-python, mutation-testing, property-based-testing, rust-review, sarif-parsing, semgrep, semgrep-rule-creator, semgrep-rule-variant-creator, spec-to-code-compliance, supply-chain-risk-auditor, variant-analysis, yara-rule-authoring |
npm:@openrig/[email protected] daemon/assets/plugins/openrig-core/skills |
`` | See LICENSE |
12 | agent-operated-workflows, delegating-work, forming-an-openrig-mental-model, messaging-the-human, mission-slice-sop, openrig-operating-model, openrig-user, orienting-to-an-inherited-seat, queue-handoff, refocusing, seat-continuity-and-handover, session-compaction-and-restore |
obra/superpowers@bb92a77 |
`` | See LICENSE |
13 | brainstorming, dispatching-parallel-agents, executing-plans, finishing-a-development-branch, receiving-code-review, requesting-code-review, subagent-driven-development, systematic-debugging, test-driven-development, using-git-worktrees, using-superpowers, verification-before-completion, writing-plans |
Heretek-AI/Heretek-Crew@5ffb1fc |
`` | See LICENSE |
7 | code-review, git-flow, nextjs-dev, security-audit, tailwind-ui, tdd, typescript-astro |
anthropics/skills@dbd4588 |
`` | See LICENSE |
3 | doc-coauthoring, frontend-design, webapp-testing |
getsentry/skills@f57ada2 |
`` | See LICENSE |
5 | document-api-endpoint, find-bugs, gha-security-review, security-review, skill-scanner |
vercel-labs/agent-skills@063bee9 |
`` | See LICENSE |
2 | react-best-practices, web-design-guidelines |
openrig-core SOP Skill Loadout Tiers
- Universal Base Loadout (All 51 Seats — 6 Skills):
openrig-operating-model,mission-slice-sop,delegating-work,queue-handoff,refocusing,seat-continuity-and-handover. - Pod Lead Tier (All 15 Pod Leads — +3 Skills = 9 Skills): Adds
messaging-the-human,orienting-to-an-inherited-seat, andsession-compaction-and-restore. - Executive Command Tier (
exec-director&tpm-scrum-lead— +3 Skills = 12 Skills): Addsopenrig-user,forming-an-openrig-mental-model, andagent-operated-workflows.
In addition to the 68 shared skills in _shared, the 51 roles carry 62 role-local specialist skills under specs/agents/<domain>/<role>/skills/<skill-id>/SKILL.md (sourced from Heretek-AI/Heretek-Crew@5ffb1fc).
8. Multi-Profile Docker Sidecar Architecture (docker-compose.sidecars.yml)
docker-compose.sidecars.yml defines a fail-closed baseline of 10 containerized sidecar services across 5 opt-in Compose profiles (qa-testing, web-research, devsec, ai-gateway, mobile) and 3 bridge networks:
| Service Name | Pinned Image | Profile | Loopback Port Mapping | Network (internal) |
Hardening & Environment Invariants |
|---|---|---|---|---|---|
docker-socket-proxy |
tecnativa/docker-socket-proxy:0.5.0 |
qa-testing |
None (internal to heretek net) |
heretek (internal: false) |
Mounts /var/run/docker.sock:/var/run/docker.sock:ro. Explicitly pins all 20 Tecnativa HAProxy toggles to "0" (POST, BUILD, EXEC, VOLUMES, NETWORKS, SWARM, SYSTEM, AUTH, CONTAINERS, IMAGES, INFO, PING, SERVICES, TASKS, NODES, CONFIGS, SECRETS, PLUGINS, EVENTS, VERSION). |
searxng |
searxng/searxng:2026.10.18-2c9b2d4 |
web-research |
127.0.0.1:8888:8080 |
heretek (internal: false) |
Requires SEARXNG_SECRET via ${SEARXNG_SECRET:?set SEARXNG_SECRET in .env}. |
browserless |
browserless/chrome:1.66.0 |
web-research |
127.0.0.1:3000:3000 |
heretek (internal: false) |
Requires BROWSERLESS_TOKEN via ${BROWSERLESS_TOKEN:?set BROWSERLESS_TOKEN in .env}. |
firecrawl |
ghcr.io/firecrawl/firecrawl:2.10.19 |
web-research |
127.0.0.1:3002:3002 |
heretek (internal: false) |
Connects to redis://firecrawl-redis:6379/0; depends_on: [firecrawl-redis]. |
firecrawl-redis |
redis:8.0.3 |
web-research |
None (internal only) | heretek (internal: false) |
Dedicated Redis backend for firecrawl with zero host port binds. |
ghidra |
ghcr.io/ghidra/ghidra:11.4.2 |
devsec |
127.0.0.1:1337:1337 |
heretek-devsec (internal: true) |
Isolated internal bridge network; mounts ./workspaces/binaries:/samples:ro (read-only). |
radare2 |
radareorg/radare2:5.9.8 |
devsec |
127.0.0.1:9090:9090 |
heretek-devsec (internal: true) |
Isolated internal bridge network; mounts ./workspaces/binaries:/samples:ro (read-only). |
sonarqube |
sonarqube:25.10.0-community |
devsec |
127.0.0.1:9000:9000 |
heretek-devsec (internal: true) |
Co-resides on internal heretek-devsec network for SAST triage; never mounts ./workspaces/binaries. |
qdrant |
qdrant/qdrant:v1.15.3 |
ai-gateway |
127.0.0.1:6333:6333 |
heretek (internal: false) |
Requires QDRANT_API_KEY via ${QDRANT_API_KEY:?set QDRANT_API_KEY in .env}. |
docker-android |
budtmo/docker-android:emulator_14.0 |
mobile |
127.0.0.1:6080:6080 |
heretek-mobile (internal: true) |
Runs with privileged: false on isolated internal heretek-mobile network. |
Profile Coexistence Matrix (make guard-profiles & scripts/compose-sidecars.sh)
To prevent cross-contamination between the mobile emulator environment and untrusted binary analysis or outbound web scraping, both make guard-profiles (a prerequisite of make sidecars-up) and scripts/compose-sidecars.sh enforce a strict profile coexistence policy after normalizing all whitespace and commas:
- Allowed Co-Scheduling:
devsec+web-research,ai-gateway,qa-testing(isolated on separate bridge networks with no privileged/dev/kvmemulator). - Forbidden Co-Scheduling (Hard Fail, Exit Code
1): Combining--profile mobilewithdevsecorweb-researchis refused immediately with:error: refusing to co-schedule --profile mobile with devsec/web-research (privileged /dev/kvm emulator must stay isolated)
9. Cryptographic Digests, Schemas & Verification Gate
Cryptographic Digest Specifications
All generated registry and bundle files conform to OpenRig's deterministic hashing specifications (verified against identity-vectors.json from openrig/docs/reference/schemas/fixtures/identity-vectors.json):
- UTF-16 Code-Unit Sorting (
utf16_key):- Keys are encoded as
utf-16-leand compared as sequences of 16-bit unsigned integers ([int.from_bytes(b[i:i+2], "little") for i in range(0, len(b), 2)]), matching JavaScript's native UTF-16 code-unit sort order even for non-BMP astral characters.
- Keys are encoded as
configurationId(schemas/bundle-common.v1.schema.json):- Joins seat runtime assignments (
<pod>.<member>=<runtime>) sorted byutf16_key(seat)with commas (e.g.,delivery.git-drift-coord=pi,delivery.tech-docs-lead=pi,delivery.tpm-scrum-lead=pi,exec.exec-director=pi,exec.product-director=pi,exec.system-architect=pi).
- Joins seat runtime assignments (
packageDigest(openrig.package-digest/v1):- Hashes every file inside
rigs/<rig>/exceptbundle.yaml,.DS_Store,Thumbs.db, and.gitkeep. - Sorts relative POSIX paths by
utf16_key, formats each entry asjson.dumps(path, ensure_ascii=False) + "\t" + sha256_hex + "\n", and computes the lowercase hex SHA-256 over the concatenated UTF-8 bytes.
- Hashes every file inside
registry/status.jsonbodyDigest(openrig.status-rule/v1, RFC 8785 JCS):- Strips the top-level
bodyDigestproperty, canonicalizes the remaining JSON object usingjcs_canonicalize()(UTF-16 key sort, compact(",", ":")separators, fail-closed rejection of floating-point numbers and non-ASCII characters), and computes the lowercase hex SHA-256 over the UTF-8 string.
- Strips the top-level
Self-Testing Verification Gate (scripts/verify-rigs.sh)
Running make verify or bash ./scripts/verify-rigs.sh --check-only executes 6 verification stages (22 composite assertions) without requiring network access or a running daemon:
| Verification Stage | Scope | Invariants Checked |
|---|---|---|
| Entry-Point Pre-Check | scripts/* |
Verifies that all 8 entry-point scripts (verify-rigs.sh, bootstrap-pi-seats.sh, render-seat.py, seed-rig.py, gate-role.sh, gate-run.sh, generate-rigs.py, audit_loop.py) have executable mode bits (0o111) and start with a valid #! shebang. |
| V1. Role Parity, Fleet YAML & Skill Lock | fleet/, specs/agents/ |
Confirms all 51 canonical roles exist in fleet/fleet.yaml and specs/agents/<domain>/<role>/; verifies 68 shared skills in specs/agents/_shared/skills/ match fleet/skills-lock.json tree hashes; checks sibling skill references (../<id>/); verifies AgentSpec v1.0 keys, model pins (opencode-go/muse-spark-1.3-contributor:high), 18 builtin:locked roles, *..* last-rule ordering, 11 path_write guards, 29 path read rules, 42 terminal bash denies, and rendered allows ⊆ fleet-declared allows. |
| V2. 8-Rig Topology & DAG Checks | rigs/*/ |
Validates RigSpec v0.2 keys against schemas/rigspec-keys.pinned.json (and verifies the 64-hex upstream_tarball.tarball_sha256 attestation); enforces pod-local vs <pod>.<member> cross-pod edge qualification; runs DFS cycle detection on delegates_to / spawned_by graphs; confirms Rigs 1–7 partition all 51 roles (6+11+4+6+11+6+7=51); verifies heretek-omni-fleet has 3 command seats, 15 pod fragments, 51 member fragments, and rig.all-51.yaml. |
| V3. Bundle Containment & Symlink Gate | specs/, rigs/ |
Sweeps the entire specs/ and rigs/ trees for symlinks (is_symlink()); verifies every agent_ref, culture_file, and docs path resolves strictly inside rigs/<rig>/; confirms byte-for-byte parity between specs/agents/<domain>/<role> and rigs/<rig>/agents/<role> (except local:../../_shared vs local:../_shared); verifies zero guidance_merge startup files and zero reserved secret env names in rig.yaml. |
| V4. OpenRig v1 JSON Schema Conformance | rigs/, registry/, rosters/ |
Validates all 8 configurations.yaml, 8 behaviour.json, 8 registry/entries/*.yaml, registry/status.json, and rosters/heretek-omni-fleet.json against schemas/*.v1.schema.json using jsonschema.Draft202012Validator. |
| V5. Cryptographic Digest Replay | rigs/*/bundle.yaml, registry/, identity-vectors.json |
Recomputes every file SHA-256 in bundle.yaml, configurationId, packageDigest, and RFC 8785 JCS bodyDigest in registry/status.json; replays the canonical test vectors in identity-vectors.json; rejects unacknowledged SYNTHETIC- provenance markers. |
| V6. MCP Catalog, Sidecars & Unit Tests | fleet/mcp-servers.yaml, docker-compose.sidecars.yml, tests/ |
Verifies all 20 MCP servers use pinned versions and command-backed !cat / !echo Bearer secrets; verifies docker-compose.sidecars.yml binds all published ports to 127.0.0.1, uses zero :latest tags, pins all 20 docker-socket-proxy toggles to "0", isolates heretek-devsec and heretek-mobile networks, wires sidecars-up to guard-profiles, and runs tests/test_render_seat.py (7 unit tests). |
rig.all-51.yaml Canonical Validation (HR-2.5, #102)
rig spec validate (V18 spec loop in scripts/verify-rigs.sh) is the
canonical validator for rigs/heretek-omni-fleet/rig.all-51.yaml: it
validates the 8 per-rig rig.yaml files PLUS rig.all-51.yaml (51 seats,
15 pod fragments, 51 member fragments, delegates_to/spawned_by cycle
check). rig bundle check (V18 bundle loop) intentionally covers only the
8 rig.yaml files: it validates bundle folders, and rig.all-51.yaml is
a static 51-seat profile beside — not inside — the boot bundle, so the
8-rig-only scope is deliberate, not a gap. No code change in this
requirement: V18 stays green on the committed rig.all-51.yaml.