DarkHerd

Operator sign-in

This host is in operator-only mode. After signing in you can open the admin console, portal, and dashboard. If you arrived from a protected page, you will be sent back there automatically.

After you sign in, open /darkherd/admin (full console on this origin), /dashboard, /graph, /portal, or programmatic hints GET /api/v1/metaendpoints.page_admin_gate, endpoints.page_analytical_graph, endpoints.page_dashboard, endpoints.page_portal (protected routes redirect here until the cookie session exists — P1bh; extends P1be).

After sign-in, the full /admin console includes P7k maintenance enqueue for tag_overlap_publish_pipeline (P4cu btn-top-pipeline-enqueue) and rebuild_tag_overlap_full (P5cw btn-top-rebuild-full-enqueue) — same POST /api/v1/admin/maintenance/queue-worker-job as runbook 2b (HyperCharts /api/darkherd/admin/maintenance/queue-worker-job when using the companion). This gate page stays read-only (P5cx).

Orchestration readiness (read-only): GET /api/v1/orchestration/status — meta key endpoints.orchestration_status on GET /api/v1/meta (P4an).

Ontology patch lifecycle (P4l / P5aP5d): use DarkHerd POST/GET /api/v1/orchestration/… paths documented on GET /api/v1/meta (e.g. endpoints.orchestration_validate_ontology_patch, endpoints.orchestration_simulate_ontology_patch, endpoints.orchestration_ontology_patch_head, endpoints.orchestration_apply_ontology_patch, endpoints.orchestration_facets_catalog_status). These are not same-origin proxied via HyperCharts the way /api/darkherd/orchestration/status is (P4ar only). Repo INTEGRATION.md / README.md (P5 boundary).

Graphiti bridge health (read-only): GET /api/v1/graphiti/status — meta endpoints.graphiti_status on GET /api/v1/meta; HyperCharts /api/darkherd/graphiti/status (P6b).

Graphiti temporal search (POST): meta endpoints.graphiti_search; POST /api/v1/graphiti/search; HyperCharts POST /api/darkherd/graphiti/search (P6d). Ontology facets v0 (read-only): GET /api/v1/graph/ontology-facets-v0 — meta endpoints.graph_ontology_facets_v0; HyperCharts /api/darkherd/graph/ontology-facets-v0 (P6o); ontology_bundle_manifest from ontology/manifest_v0.json (P6p; P6q/P6r ontology_bundle_roles+P6s ontology_narrative_template_meta echoes on signed-in HTML + this gate).

Graphiti episode ingest is server-side only (upstream POST …/messages): meta endpoints.graphiti_episodes on GET /api/v1/meta; staging emit + incremental replay (P6e). Episode bodies append ontology/facets_v0.json fingerprint lines (P6g); this gate echoes that operator cue (P6h). Bodies start with darkherd_episode_v0 JSON (structured_episode_envelope_v0 in graphiti_episodes.py; P6i) including ontology_facets_v0_fp (P6k) plus optional ontology_template_id / ontology_catalog_sizes (P6m); ontology/manifest_v0.json bundle fields in episode JSON + facets GET (P6p); this gate echoes that cue too (P6j+P6q+P6r ontology_bundle_roles+P6s ontology_narrative_template_meta).

P7zaj — After sign-in, the full /admin console (HyperCharts /darkherd/admin, P7xq) includes Recent jobs: btn-jobs calls GET /api/v1/admin/jobs (same-origin GET /api/darkherd/admin/jobs, P7zai) and appends readable lines for historical incremental_ingest rows from detail.tag_overlap_followup (P7zah; parity P7zac / P7zag with the live ingest Done line P7zae). This gate stays read-only — no job list here.

Worker queue job kinds (P7ji + P7jh)

Same read-only GET /api/v1/meta slice as P7ji on /admin: top-level worker_job_kinds + worker_job_kinds_count (P7jh) via sameOriginApiPath (P7xq on HyperCharts). No writes.

Analytical refresh policy (Vision §5.2 — P4ct gate)

Read-only parity: top-level GET /api/v1/meta analytical_refresh_policy (P4cr) vs GET /api/v1/orchestration/tool-adapters-status analytical_refresh_policy (P4cs) — same object as GET /api/v1/orchestration/status (P4cq). When GET /api/v1/insights/summary is allowed, the same JSON also carries P4db supervisor_wired / supervisor_graph_invoke_enabled / p4db (parity P4cz / P4da; P4df cross-read with signed-in P4dc / P4de / lockdown P4dd) and P4dh bound-tool fields (supervisor_bound_tools, mutating job_class list, p4bc, p4cb; /portal P4dj; meta P4di). Uses sameOriginApiPath (P7xq on HyperCharts). No writes.

Neo4j follow-up auto-enqueue (P5cs / P5cn + optional P5cm)

Read-only GET /api/v1/orchestration/statusontology_patch_neo4j_followup_auto_enqueue (P5cn, incl. P5cq enqueue_* booleans) — no sign-in required. When GET /api/v1/insights/summary is allowed (no lockdown session gate, or you already have a cookie), this button also compares the same object against insights (P5cm parity). Full two-way compare without caveats lives on /admin (P5cr).

Ontology graph follow-up audit echo (P5cu / P5co + optional P5cj)

Read-only GET /api/v1/orchestration/statusontology_patch_graph_followup (P5co, same bundle as insights P5cj) — no sign-in required. When GET /api/v1/insights/summary is allowed, this button also compares the same object against insights (parity with signed-in /portal P5ct). Full two-way compare without caveats still uses the same two GETs after sign-in on /portal or /admin cards (P5ct / P5cr).

Global refresh admin_job_runs trace (P7kg gate)

Read-only GET /api/v1/insights/summaryanalytical_global_refresh_admin_job_runs when this host allows that route without a session (same bounded slice as P7kg on /portal Summary + /admin btn-p7kg-refresh-trace). When insights/summary is blocked (lockdown), the status line points at signed-in /admin for the same JSON. Uses sameOriginApiPath (P7xq on HyperCharts).

Autoschedule metrics (P3du gate · P3ds · P3dr)

Read-only p3ds_global_refresh_autoschedule_metrics from GET /api/v1/insights/summary when this host allows it without a session (parity P3du /admin btn-p3du-autoschedule-metrics). When blocked, status points at signed-in /admin. Uses sameOriginApiPath (P7xq).

SQL engine dialect (P7zaoi · P7zaoe · P7zaoh · P7zaol)

Read-only database_dialect + p7zaoi on GET /api/v1/insights/summary when this host allows it without a session — parity GET /api/v1/ready (P7zaoe) + GET /metrics darkherd_database_up (P7zaoh). Same operator story as signed-in /admin, /portal, explorers, and lockdown 403 (P7zaok).

Cost dashboard wiring (P7jd + P7jg + P7jj + P7jl + P7zas + P7zat + P7zau)

Same read-only slice as P7jc on /admin: GET /api/v1/costs/summaryprovider_export_hints (P7jb) via sameOriginApiPath (P7xq on HyperCharts). No invoice HTTP.

Provider-export previews (P7jj; extends P7jg; P7jl DeepSeek balance snapshot; P7zal OpenRouter credits snapshot; P7zas Stability AI balance snapshot; P7zat Replicate account snapshot; P7zau Hugging Face Hub whoami snapshot): GET /api/v1/costs/provider-export?window_hours=24&provider=mistral|openai|anthropic|darkherd|deepseek|openrouter|stability|replicate|huggingface (e.g. provider=darkherd for P7zc; provider=deepseek for P7jl; provider=openrouter for P7zal; provider=stability for P7zas; provider=replicate for P7zat; provider=huggingface for P7zau) via sameOriginApiPathwireGateCostsProviderExport wires each button.