{
  "page": "github",
  "schema_version": "1.0.0",
  "generated_at": "2026-06-11",
  "scope": "Agent OS layer of Viewport Corp: Hermes operator shell + OpenClaw agent fleet + CompanyOS departments/seats/rules",
  "collection_mode": "read_only",
  "security_note": "Public-safe snapshot. Secret key NAMES only — no values, no tokens, no credentials. Collected read-only (gh CLI + SSH cat/ls/ps/sqlite SELECT/docker ps).",
  "sources": {
    "vps": "ssh root@194.163.153.171 (cat/ls/ps/sqlite3 SELECT/docker ps+inspect only)",
    "repo": "viewport-corp/viewport-ops@main via gh CLI + raw_ops_tree_main.txt (1478 paths)",
    "hermes_fork": "viewport-corp/fork-hermes-agent@main (tree listing only, 4960 paths)"
  },
  "kpis": {
    "hermes_containers": 2,
    "hermes_version": "v0.15.2",
    "hermes_sessions": 524,
    "hermes_messages": 34772,
    "hermes_jobs_enabled": "1/8",
    "hermes_mcp_servers": 8,
    "hermes_s6_gateways": 4,
    "hermes_kanban_tasks": 0,
    "openclaw_instances": 3,
    "openclaw_fresh_agents": 26,
    "zombie_crons_enabled": 49,
    "zombie_last_run": "2026-06-11 00:04",
    "soul_files_dormant": 24,
    "seats_registry": 48,
    "seats_registry_seed_only": 48,
    "seats_index": 26,
    "seats_activated": 16,
    "seats_smoke_tested": 10,
    "departments": 14,
    "industries_ontology": 20,
    "agents_md_bytes": 3826,
    "runtime_contract_fields": 13,
    "runtime_contracts_on_main": "~75",
    "authority_decision_types": 9,
    "authority_sam_gated": 6
  },
  "hermes": {
    "role": "primary operator (server hands / GitHub+VPS executor) per companyos/runtime/centralized-runtime-seat-index.yaml",
    "version": "v0.15.2 (per /srv/viewport/runtime/hermes/hermes-v0152-*-restart.sh naming; image nousresearch/hermes-agent:latest rev e8559259; fork repo latest release note RELEASE_v0.15.1.md)",
    "containers": [
      {
        "name": "hermes-vinay-patil",
        "image": "nousresearch/hermes-agent:latest",
        "status": "Up 2 days"
      },
      {
        "name": "hermes-bccl",
        "image": "nousresearch/hermes-agent:latest",
        "status": "Up 2 days"
      }
    ],
    "config_path": "/srv/viewport/runtime/hermes/config.yaml (722 lines; mounted as /opt/data in container)",
    "model": {
      "default": "gpt-5.5",
      "provider": "openai-codex (api_mode codex_responses, base_url chatgpt.com/backend-api/codex)",
      "reasoning_effort": "medium",
      "fallback_providers": [],
      "vision_auxiliary": "openai-codex / gpt-5.5"
    },
    "toolsets_enabled": [
      "hermes-cli"
    ],
    "toolsets_disabled": [],
    "plugins_enabled": [
      "disk-cleanup",
      "google_meet",
      "intake_persistence"
    ],
    "mcp_servers": [
      "filesystem",
      "memory",
      "sequential_thinking",
      "time",
      "fetch",
      "github",
      "git_plugins",
      "context7"
    ],
    "messaging_platforms": {
      "telegram": {
        "state": "connected",
        "queue_depth": 0,
        "last_successful_send": "2026-06-10",
        "evidence": "gateway_state.json"
      },
      "slack": {
        "state": "retrying",
        "error": "failed to reconnect",
        "since": "2026-05-08",
        "evidence": "gateway_state.json"
      },
      "discord": "configured section only, not in gateway_state platforms",
      "whatsapp": "empty config"
    },
    "scheduled_jobs": {
      "defined": 8,
      "enabled": 1,
      "enabled_job": "2c9a013fb729 cron '0 9 * * 1' (weekly digest, Monday 09:00)",
      "store": "/srv/viewport/runtime/hermes/cron/jobs.json",
      "note": "7 interval jobs (5m-1440m) all disabled"
    },
    "session_db": {
      "path": "/srv/viewport/runtime/hermes/state.db",
      "sessions": 524,
      "messages": 34772,
      "tables": [
        "sessions",
        "messages",
        "messages_fts*",
        "compression_locks",
        "schema_version",
        "state_meta"
      ]
    },
    "kanban": {
      "db": "/srv/viewport/runtime/hermes/kanban.db",
      "tables": [
        "tasks",
        "task_runs",
        "task_events",
        "task_comments",
        "task_links",
        "task_attachments",
        "kanban_notify_subs"
      ],
      "task_count": 0,
      "boards": [
        "modern-lao-war-room",
        "viewport-ops-live"
      ],
      "config": "dispatch_in_gateway=true, interval 60s, auto_decompose=true"
    },
    "telegram_intake": {
      "plugin": "intake_persistence enabled",
      "last_capture": "2026-06-05 trivial ('Hi', tags [QUESTION], tenant unknown, dept ops); KB 16 notes, 3 recent issues loaded",
      "activation_blocker": "gsd-ralphloop-active-queue.yaml blocker gateway_restart = blocked_by_approval (restart kills running agents)"
    },
    "s6_services": [
      "main-hermes",
      "dashboard (port 9119)",
      "gateway-codex",
      "gateway-default",
      "gateway-bccl",
      "gateway-claude",
      "s6rc-fdholder",
      "s6rc-oneshot-runner"
    ],
    "gateway_state": "running (per gateway_state.json), active_agents 0; multiple hermes gateway+dashboard process pairs visible since Jun 08/10",
    "secret_names_only": [
      "modernlao-odoo-api-key",
      "modernlao-slack-bot-token",
      "modernlao-slack-signing-secret",
      "modernlao-slack-user-token",
      "modernlao-slack-webhook-url"
    ]
  },
  "openclaw": {
    "instances": [
      {
        "id": "fresh_docker (LIVE, designated)",
        "containers": [
          "viewport-openclaw-fresh-openclaw-gateway-1 (Up 9 days, healthy, gateway --bind lan --port 18789)",
          "viewport-openclaw-fresh-openclaw-cli-1 (Up 9 days, healthy)"
        ],
        "image": "ghcr.io/openclaw/openclaw:latest",
        "config": "/srv/viewport/runtime/openclaw-fresh/config/openclaw.json (-> /home/node/.openclaw)",
        "agent_count": 26,
        "agents": [
          "main/VIEWPORT",
          "performer/Performer",
          "coder/CodeX",
          "researcher/Scout",
          "architect/Atlas",
          "qa/Verify",
          "vision/Eye",
          "security/Shield",
          "auditor/Auditor",
          "mentor/Mentor",
          "recruiter/Recruiter",
          "crisis/Crisis",
          "forge/Forge",
          "ledger/Ledger",
          "closer/Closer",
          "amplify/Amplify",
          "advocate/Advocate",
          "prism/Prism",
          "c-modernlao",
          "sentinel/Sentinel",
          "catalyst/Catalyst",
          "hypothesis/Hypothesis",
          "metric/Metric",
          "palette/Palette",
          "quill/Quill",
          "canvas/Canvas"
        ],
        "per_agent_model": "none (model null on all 26 -> default model, near-default rebuild state)",
        "bindings": "none (no bindings key -> all traffic routes to main agent)",
        "channels": [
          "slack",
          "telegram"
        ],
        "cron_jobs": {
          "defined": 1,
          "enabled": 0,
          "job": "TradeX MT5 runner blocker check (disabled, agent main)",
          "last_run_file": "2026-05-30"
        },
        "routing_tiers": "absent (0 occurrences of 'tier' in config; locked decision '4-tier routing v14, 25 agents' NOT implemented)"
      },
      {
        "id": "old_root_host (ZOMBIE but ACTIVE)",
        "process": "root pid 3227148 /usr/lib/node_modules/openclaw gateway --port 47293, running since May 28, ~3787 CPU-min",
        "config": "/root/.openclaw/openclaw.json",
        "agent_count": 26,
        "per_agent_model": "all 26 -> openai-codex/gpt-5.5, no fallbacks",
        "bindings": 27,
        "channels": [
          "telegram",
          "slack",
          "modelByChannel"
        ],
        "cron_jobs": {
          "defined": 50,
          "enabled": 49,
          "store": "/root/.openclaw/cron/jobs.json",
          "run_logs": "ACTIVE - /root/.openclaw/cron/runs files updated 2026-06-11 00:04 (performer-p1-monitor.jsonl 00:02)"
        },
        "workspaces": "2 dirs only (/root/.openclaw/workspace, workspace-atlas)"
      },
      {
        "id": "old_home_openclaw (DORMANT)",
        "config": "/home/openclaw/.openclaw/openclaw.json (~70 .bak siblings)",
        "agent_count": 26,
        "per_agent_model": "rich per-agent primary+fallback arrays (codex-pro, deepseek-v3.2, glm5, kimi-k2.5, px-gemini31-pro, px-opus-thinking, gemini-3.1-pro, llama-3.3-70b, claude-haiku-4-5 ...)",
        "bindings": 27,
        "channels": [
          "telegram",
          "discord",
          "slack",
          "modelByChannel"
        ],
        "cron_jobs": {
          "legacy_cron_jobs.json": "51 defined / 50 enabled",
          "cron_jobs_store": "48 defined / 48 enabled",
          "run_logs": "stale since 2026-04-12"
        },
        "workspaces": "25 workspace-* dirs + main workspace at /opt/platformx/openclaw/workspace-main",
        "soul_files": {
          "count": 24,
          "names": [
            "analytics",
            "atlas",
            "benchmark",
            "bizdev",
            "codex",
            "content",
            "crisis",
            "cs",
            "experiment",
            "eye",
            "finance",
            "hiring",
            "innovation",
            "legal",
            "marketing",
            "media",
            "omnibrand",
            "performer",
            "qa-master",
            "resource",
            "sales",
            "scout",
            "training",
            "verify"
          ],
          "plus": "workspace-main/SOUL.md + IDENTITY.md + DREAMS.md + HEARTBEAT.md; fresh workspace SOUL.md; hermes /srv/viewport/runtime/hermes/SOUL.md"
        }
      }
    ],
    "repo_classification": "centralized-runtime-seat-index.yaml: openclaw_fresh=live (26 agents, sha256 6085c958..., issue 123 / PR 126); old_openclaw=reference_only_do_not_touch_without_approval"
  },
  "seats_and_departments": {
    "registry_48": {
      "file": "viewport-company-os/agents/centralized-agent-registry.yaml (553 lines)",
      "status": "draft_from_legacy_and_fresh_evidence, phase P0-5, issue #196",
      "entries": 48,
      "readiness": "all 48 = seed_only_not_production",
      "department": "all = 'UNKNOWN until mapped'",
      "allowed_actions": [
        "read-only analysis",
        "draft task packet",
        "draft PR/artifact"
      ],
      "forbidden_actions_hard_stop_list": [
        "stop/restart/recreate containers",
        "Hermes/gateway restart",
        "Docker prune/delete/volume edits",
        "DNS/nameserver changes",
        "billing/legal/finance commitments",
        "customer-facing sends",
        "printing or committing secrets"
      ],
      "seat_names": [
        "main",
        "coder",
        "researcher",
        "architect",
        "qa",
        "vision",
        "performer",
        "bizdev",
        "finance",
        "sales",
        "marketing",
        "legal",
        "cs",
        "analytics",
        "resource",
        "training",
        "qa-master",
        "hiring",
        "innovation",
        "omnibrand",
        "content",
        "media",
        "experiment",
        "benchmark",
        "security",
        "auditor",
        "mentor",
        "recruiter",
        "crisis",
        "forge",
        "ledger",
        "closer",
        "amplify",
        "advocate",
        "prism",
        "c-modernlao",
        "sentinel",
        "catalyst",
        "hypothesis",
        "metric",
        "palette",
        "quill",
        "canvas",
        "codex",
        "atlas",
        "scout",
        "eye",
        "verify"
      ],
      "counts_recorded": {
        "old_config_agents": 24,
        "old_workspace_folders": 25,
        "fresh_config_agents": 26,
        "fresh_workspace_folders": 25,
        "registry_entries": 48
      }
    },
    "seat_index_26": {
      "file": "companyos/runtime/centralized-runtime-seat-index.yaml",
      "status": "live_control_plane, centralization_state partially_centralized_live",
      "seats": 26,
      "central_status": {
        "activated": 16,
        "smoke_tested": 10
      },
      "readiness_lifecycle": [
        "seeded",
        "activated",
        "smoke_tested",
        "reviewed",
        "validated",
        "operational",
        "proven"
      ],
      "authority_default": "class_b_read_write_repo_only",
      "runtime_classes": [
        "hermes=primary_operator_or_executor",
        "openclaw=live_agent_runtime",
        "github_copilot_agent=code_docs_backlog",
        "codex_claude=specialist_execution_review",
        "github_actions=deterministic_validator",
        "n8n=approved_workflow_runtime",
        "odoo=approved_business_record_runtime"
      ]
    },
    "runtime_seats_6": {
      "file": "agent-seats/seats.yaml (6 seats, 58 lines)",
      "seats": [
        {
          "id": "hermes-operator",
          "runtime": "hermes",
          "status": "active"
        },
        {
          "id": "github-actions-validator",
          "runtime": "github-actions",
          "status": "active"
        },
        {
          "id": "openclaw-reviewer",
          "runtime": "openclaw",
          "status": "planned"
        },
        {
          "id": "codex-coding-reviewer",
          "runtime": "codex",
          "status": "planned"
        },
        {
          "id": "claude-design-reviewer",
          "runtime": "claude",
          "status": "planned"
        },
        {
          "id": "(6th seat - see file)",
          "status": "see agent-seats/seats.yaml"
        }
      ]
    },
    "departments": {
      "file": "companyos/departments/taxonomy.yaml",
      "count": 14,
      "names": [
        "Executive Office",
        "GitHub Office",
        "Engineering Platform",
        "Runtime Operations",
        "Security and Risk",
        "Research and Intelligence",
        "Data, Analytics, and Benchmarks",
        "Finance and Cost Control",
        "Customer and Tenant Operations",
        "Sales and Growth",
        "Marketing, Brand, and Content",
        "Legal and Compliance",
        "HR, Recruiting, and Training",
        "Crisis and Incident Response"
      ],
      "note": "Expected '17 departments' not found in taxonomy.yaml - actual is 14; company-os/units/ adds 6 unit groups (agent-and-ai, business-operations, corporate-functions, go-to-market, industries, platforms)"
    },
    "industries": {
      "ontology_file": "viewport-company-os/industries/industry-ontology.yaml",
      "count": 20,
      "units_files": "company-os/units/industries/ = 35 industry-*.md unit files",
      "note": "Expected '16 industries' - actual ontology has 20 industry_id entries, units tree has 35"
    },
    "specialist_agents_trained": [
      "github-office (issue #33)",
      "openclaw-runtime-specialist (#34)",
      "hermes-runtime-specialist (#35)",
      "devops-sre-specialist (#36)",
      "knowledgebase-live-docs-librarian (#37)",
      "github-actions-platform-engineer (#38)"
    ],
    "charters_8": [
      "agent-qa-evaluation",
      "agent-runtime-fleet",
      "company-os-orchestrator",
      "github-office-queue",
      "hermes-operator",
      "pmo-operating-review",
      "security-access-review",
      "sre-healthcheck"
    ]
  },
  "rules_and_governance": {
    "agents_md": {
      "path": "AGENTS.md@main",
      "size_bytes": 3826,
      "within_injection_limits": true,
      "sections": [
        "Non-negotiable operating rule (GitHub is the control plane)",
        "Where to work (VPS preferred, Mac terminal-only)",
        "Repository boundary doctrine",
        "Standard sequence (12 steps)",
        "Risk gates",
        "Secret handling (names only)",
        "Tenant routing rules",
        "Evidence required before closing",
        "If unsure"
      ]
    },
    "entry_protocol": {
      "path": "docs/agent-entry-protocol.md",
      "label_state_machine": [
        "state:active (only workable state)",
        "state:blocked",
        "state:protected",
        "state:not-now",
        "state:stale",
        "state:superseded"
      ],
      "pr_relationship_rule": "exactly one of Closes #N / Supersedes #N / Part of #N - remains open because ...",
      "behavior_rule": "agent that cannot prove it read current rules/issues/PRs/boundary must not write files"
    },
    "risk_tiers": {
      "path": "companyos/runtime/hermes-openclaw-operating-model.md (lines 112-118)",
      "tiers": [
        "Tier 0 observe (research/summarize/monitor)",
        "Tier 1 draft (issues/comments/plans/PR drafts)",
        "Tier 2 controlled write (repo-only via PR + checks)",
        "Tier 3 sensitive action (runtime/Odoo/n8n/customer/finance/legal/deploy - approval required)",
        "Tier 4 prohibited autonomous (secrets exposure, destructive prod data, legal/HR/financial final decisions)"
      ]
    },
    "runtime_contract": {
      "skill": "agent-scripts/skills/runtime-contract/SKILL.md",
      "schema": "migration-control-plane/runtime-contract.schema.json",
      "required_fields": [
        "service_id",
        "owner",
        "tenant/entity",
        "repo",
        "runtime target",
        "domain/route",
        "env template",
        "secret refs (not values)",
        "healthcheck",
        "logs/metrics/traces",
        "backup",
        "rollback",
        "evidence bundle"
      ],
      "field_count_actual": 13,
      "note": "expected '8 fields' - skill lists 13",
      "contracts_on_main": "~75 files under viewport-company-os/runtime/contracts/"
    },
    "authority_matrix": {
      "path": "viewport-company-os/approvals/authority-matrix.yaml",
      "decision_types": 9,
      "sam_required": [
        "paid spend/vendor/subscription",
        "DNS/domain/production deploy",
        "legal/public claim/client-facing send",
        "external outreach/social/ad launch",
        "destructive data/container action",
        "new role/dept needing cost/secrets/external access"
      ],
      "autonomous": [
        "research/draft/internal analysis",
        "GitHub branch/PR/staging test (reviewer+verifier)",
        "new low-risk role/dept draft (VIEWPORT + Auditor via PR)"
      ],
      "siblings": [
        "viewport-company-os/agents/agent-authority-matrix.yaml",
        "migration-control-plane/agent-authority-matrix.yaml"
      ]
    },
    "gsd_ralphloop": {
      "contract": "viewport-company-os/workflows/gsd-ralphloop-operating-contract.yaml (status active_repo_only, issue #196)",
      "loop_8_steps": [
        "Goal",
        "Setup",
        "Do",
        "Verify",
        "Diagnose",
        "Fix",
        "Repeat",
        "Evidence"
      ],
      "active_queue": "viewport-company-os/tasks/gsd-ralphloop-active-queue.yaml (3 workstreams: github_ops_truth active, vps_runtime_reconciliation active_read_only, migration_live_status active)",
      "hard_stops_stop_for_sam": [
        "secrets or credential values",
        "DNS/nameserver/billing/legal/tax/finance commitments",
        "Odoo/Slack/customer-facing writes or sends",
        "destructive deletion/prune/volume/database/prod config mutation",
        "old Docker/OpenClaw live service changes"
      ],
      "blocker": "gateway_restart blocked_by_approval (Telegram intake hook activation)",
      "failure_policy": "max 3 fix attempts before architecture review",
      "proof_loop_doc": "control-plane/workflows/gsd-ralph-proof-loop.md",
      "test": "viewport-company-os/tests/gsd-ralph-loop.yaml",
      "activation_proof": "viewport-company-os/evidence/gsd-ralphloop-activation-proof.yaml"
    },
    "labels": {
      "path": "control-plane/departments/github-office/labels.yaml",
      "families": [
        "office:* (intake/task-packet/incident/runtime-change/research-source)",
        "risk:* (low/medium/runtime/protected)",
        "needs:* (evidence/learning-update/runtime-contract)",
        "boundary:* (viewport-ops/product-repo/client-repo/runtime-contract)",
        "status:* (intake/ready/blocked/validated)"
      ]
    },
    "task_lease": "viewport-company-os/tasks/task-lease.schema.yaml + task-packet.schema.yaml + intake-interpreter.yaml"
  },
  "hermes_kanban_reference": {
    "repo": "viewport-corp/fork-hermes-agent (public fork, 4960 paths)",
    "kanban_subsystem_paths": [
      "hermes_cli/kanban.py",
      "hermes_cli/kanban_db.py",
      "hermes_cli/kanban_decompose.py",
      "hermes_cli/kanban_diagnostics.py",
      "hermes_cli/kanban_specify.py",
      "hermes_cli/kanban_swarm.py",
      "docs/hermes-kanban-v1-spec.pdf"
    ],
    "lease_note": "no lease module in fork; lease schema lives in viewport-ops (task-lease.schema.yaml)"
  },
  "status_json": {
    "path": "public/migration/status.json@main",
    "keys": [
      "schema_version",
      "generated_at_utc",
      "company",
      "system_health",
      "today_focus",
      "active_tasks",
      "task_board",
      "blocked",
      "completed_today",
      "recent_failures",
      "agent_handoff_pack",
      "links",
      "slack_odoo_operating_flows",
      "gsd_ralphloop",
      "vps_runtime_reconciliation",
      "migration_execution"
    ],
    "gsd_ralphloop_present": true
  },
  "flow_joints": [
    {
      "joint": "Sam -> Telegram -> Hermes",
      "status": "WORKS",
      "evidence": "gateway_state.json telegram connected, queue 0, last send 2026-06-10"
    },
    {
      "joint": "Telegram intake -> structured capture",
      "status": "PARTIAL",
      "evidence": "intake_persistence plugin on; last_capture 2026-06-05 trivial; intake hook activation blocked_by_approval pending gateway restart"
    },
    {
      "joint": "Hermes -> GitHub issue (task packet)",
      "status": "PARTIAL",
      "evidence": "github MCP wired, manual issue flow proven (#33-#43, #196); no automation - 1/8 hermes jobs enabled"
    },
    {
      "joint": "Issue -> OpenClaw seat routing",
      "status": "DEAD",
      "evidence": "fresh config has no bindings and null models - all traffic to main; 48 seats seed_only_not_production; 4-tier routing v14 absent from config"
    },
    {
      "joint": "OpenClaw seat -> VPS runtime execution",
      "status": "DEAD (fresh) / ZOMBIE (old)",
      "evidence": "fresh crons 1 defined 0 enabled; old root instance still executing 49 enabled crons (runs logged 2026-06-11 00:04) outside the control plane"
    },
    {
      "joint": "Evidence -> PR -> merge",
      "status": "WORKS (manual)",
      "evidence": "evidence/ tree, validators, company-os-validate.yml workflow, PR discipline in AGENTS.md"
    },
    {
      "joint": "Merge -> status.json publication",
      "status": "WORKS",
      "evidence": "public/migration/status.json contains gsd_ralphloop, vps_runtime_reconciliation keys"
    },
    {
      "joint": "Slack rail",
      "status": "DEAD",
      "evidence": "hermes gateway_state slack=retrying 'failed to reconnect' since 2026-05-08"
    },
    {
      "joint": "Odoo rail",
      "status": "PARTIAL (policy only)",
      "evidence": "slack-odoo-command-room-policy.yaml + odoo-n8n-readiness.md + odoo secret name present; no live wiring observed"
    },
    {
      "joint": "Hermes kanban dispatch",
      "status": "PARTIAL (live but empty)",
      "evidence": "kanban.db tasks table = 0 rows; 2 boards defined; dispatch_in_gateway=true"
    },
    {
      "joint": "Hermes scheduled ops",
      "status": "DEAD (1/8)",
      "evidence": "cron/jobs.json: 8 defined, only weekly digest enabled"
    }
  ]
}
