Phoenix DevOps Persona · ShadowOps edge extension · Apache 2.0

The Phoenix DevOps persona,
packaged for sovereign infrastructure.

FreeOSBot is not a separate AI. It is the DevOps persona of Phoenix Daemon, pre-shipped with the right Postgres role, the right MCP allowlist, the right escalation policy, and the right safety envelope for regulated on-prem operations. ShadowOps is its edge extension: per-node Watchmen agents that pre-classify the log firehose so a single DevOps persona can supervise hundreds of hosts without saturating.

Engine
Phoenix Daemon

Persistent multi-persona AI operations platform. One engine, five-layer brain, eleven-stage cognitive pipeline, four-tier action gate, hard persona severance.

Subset
FreeOSBot — DevOps persona, productionised

Phoenix's DevOps persona shipped as a turnkey package: pre-built persona YAML, Postgres role, MCP allowlist (k8s · Vault · ArgoCD · Wazuh · Helm · Trivy · Loki · Prometheus · Grafana · Dagster · Git · Shell), escalation contract, and safety envelope for healthcare-grade infrastructure.

Extension
ShadowOps — edge Watchmen

Per-node agent (DaemonSet on k8s, systemd unit on bare-metal) that tails journalctl + docker events + kubelet locally. Pre-classifies log lines through a deterministic regex tier and an optional local Ollama tier. Sends only structured envelopes to FreeOSBot — never raw log text.

One engine. One persona. One edge fleet.

FreeOSBot does not reinvent observability or replace your AI assistant. It plugs into Phoenix's existing severance model and uses ShadowOps to scale fan-in past the point where a centralised log tail breaks.

Phoenix Daemon

The engine.

Phoenix is the long-running daemon: brain, pipeline, gate, severance. It runs every persona — not just DevOps. Memory, audit, drift watchdog and constitutional core are all upstream.

  • Five-layer brain (L1 constitution → L5 RAG + watchdog)
  • Per-persona Postgres role + row-level security
  • Four-tier action gate · plan mode · drift auto-pause
  • 167 FastAPI endpoints · per-persona operator console
FreeOSBot — Subset

The DevOps persona, packaged.

Same engine, same brain, same safety. Difference is that FreeOSBot is exactly the DevOps persona YAML — pre-shipped with the operator contract, escalation policy and toolset that regulated on-prem clusters actually need.

  • 11 in-tree MCP servers · 279 DevOps tools
  • Pre-built escalation policy: telegram · email · PagerDuty
  • Drift detector → reconcile PR · GitHub PR auto-review
  • Daily security scan ladder · Wazuh stream · feed subscriber
ShadowOps — Extension

Eyes on every host.

An edge fleet that turns the log firehose into a manageable structured stream. Watchmen pre-filter, optionally pre-classify with a small local model, and emit envelopes — never raw text — to FreeOSBot.

  • DaemonSet (k8s) · systemd unit (bare-metal) · Nomad jobspec
  • Tier 0 deterministic regex · Tier 1 local Ollama (optional, feature-flagged)
  • Node-scoped auto-remediation · blast radius enforced mechanically
  • v1 envelope schema · sticky-routed by correlation_id

subset What "subset of the DevOps persona" actually means

FreeOSBot ships personas/devops.yaml with a healthcare-friendly default contract: escalation.assigned_person.name required before any Tier-1+ autonomous execution; auto_discover_sources seeded for k3s + Helm + ArgoCD + dpkg + npm + pip; security_feeds.yaml seeded with NVD, GitHub Advisory, kernel security list, OSS licence press; and a default-deny outbound allowlist that opens only the channels you configure. The tool catalogue is the same 279 tools the engine ships, gated to this one persona by the YAML overlay. Add a persona — by editing YAML, not by building a separate product.

Edge classifies. Centre acts.

A two-tier architecture. Watchmen at the edge handle the >95% of log lines that are deterministic. Only structured envelopes — never raw logs — fan in to FreeOSBot. The DevOps persona then applies Phoenix's full safety model to anything that needs a decision.

Tier 0 · Deterministic

Regex match against seeds/log_patterns.yaml. CrashLoopBackOff → restart (node-scoped). OOMKilled → queue a GitOps PR template. Disk pressure → prune + escalate. Noise → drop.

drop / self-remediate ~95%
Stays at the node

Sub-millisecond. No LLM. No network. Audited locally; aggregate digest emitted hourly to FreeOSBot for visibility.

Tier 1 · Local Ollama (optional)

Per-node 4B-class model — single-token {remediate|escalate|ignore} verdict + confidence. Only fires when Tier 0 confidence is below threshold. Routed locally via bifrost_llm; bypasses Bifrost circuit breaker; no token accounting.

classified ~4%
Stays at the node

Feature-flagged · default off in Phase 1. Killed and disabled if node memory pressure spikes — fail-safe to Tier 0 only.

Tier 2 · Envelope to centre

Stable schema. correlation_id, cluster_id, severity, category, auto_remediation, evidence (≤ 4 KB log excerpt). Never raw log text.

sticky-route by correlation_id ~1%
FreeOSBot · DevOps persona

Phoenix admission ingress accepts the envelope. Pipeline runs RECON, memory probe, action gate, plan mode. Operator escalation routed per escalation.policy: page · escalate-1h · daily digest · hourly digest.

500 hosts. One DevOps persona. Survives.

Without ShadowOps, the log firehose breaks any centralised AI assistant — economically and architecturally. With ShadowOps, the same DevOps persona stays under load and inside the Phoenix safety model.

~100k
Log lines / min · 500 hosts
≤ 100
Actionable events / min · centre
≤ 60 s
p95 detect-to-act · Tier 0
node
Watchman blast radius · enforced

Watchmen drop the noise locally and self-remediate the auto-fixable patterns — pod restarts, journal pruning, log rotation — within a contract that mechanically refuses any action outside the node. Only the ~1% that needs a real decision becomes an envelope. FreeOSBot then applies the full Phoenix pipeline: RECON pulls last-deploy diff, memory probe cites prior incidents, the action gate scales approval to blast radius, plan mode auto-triggers at three or more mutating steps. Operator escalation stays inside the existing telegram / email / PagerDuty contract.

Inherited from Phoenix. Specific to FreeOSBot & ShadowOps.

Two columns, no overlap. The left is what every Phoenix persona ships with — and FreeOSBot inherits unchanged. The right is what FreeOSBot and ShadowOps add on top.

From Phoenix Daemon inherited

  • Five-layer brain. L1 constitution · L2 persona · L3 working memory · L4 common sense · L5 RAG + drift watchdog.
  • Code-enforced safety. Four-tier action gate · plan mode at ≥ 3 mutating steps · L1 BLOCK overrides every persona and every operator approval.
  • Persona severance. Per-persona Postgres role + RLS · per-persona MCP allowlist · per-persona channels · isolated memory namespace.
  • Memory that compounds. Decision capture with citation IDs · 6 h distillation · nightly consolidator · postmortem assembler.
  • Per-persona daily LLM budget. Soft warn · or hard cap (forced gear downshift) under PHOENIX_BUDGET_HARD=on.
  • Cross-replica state. Redis-backed conversation buffer · sticky routing · FOR UPDATE SKIP LOCKED single-claim event dispatch.
  • GitOps deployment. Two-image hardening · SHA-pinned base · Trivy CVE gate · Watchtower auto-update.

FreeOSBot & ShadowOps added

  • 11 in-tree MCP servers · 279 DevOps tools. Kubernetes · Vault · Trivy · Prometheus / Loki / Alertmanager / Grafana · Nomad · PostgreSQL · Dagster · ArgoCD / Helm / Flux · Git · Shell.
  • CLI is ground truth. shell:* calls intercepted before MCP routing — no JSON-RPC overhead, no 30 s MCP hangs.
  • Drift detection → reconcile PR. Compares persona YAMLs vs git HEAD, K8s deployments vs PHOENIX_DRIFT_K8S_TARGETS; opens draft PRs with a reconcile checklist.
  • GitHub PR auto-review. Triggered on pull_request open / sync · deterministic diff + memory probe + scout + comment.
  • Production guardian contract. Autonomy disabled when escalation.assigned_person is blank — fail-closed.
  • ShadowOps Watchmen. DaemonSet · systemd · Nomad packaging. Tails journalctl + docker events + kubelet. Tier 0 regex + optional Tier 1 local Ollama. Local drop-oldest ring buffer survives FreeOSBot outages.
  • Mechanically-bounded blast radius for Watchmen. Restart pod / prune disk / rotate log / reset systemd unit on the node — and nothing else. ArgoCD, Vault, cluster-scope resources are denied at the executor.

An OOMKilled at 03:42 · 90 seconds end-to-end.

A pod runs out of memory in a regulated cluster. The on-call SRE is asleep. Here is what ShadowOps + FreeOSBot do, step by step.

03:42:11

Watchman regex hit · Tier 0.

Per-node Watchman tails kubelet events. OOMKilled matches the pattern library. Severity HIGH. Blast radius: node-scope. Watchman attempts the queued GitOps PR template for memory limits — but rejects the operation because the namespace is in protected_namespaces. Builds an envelope instead.

[kubelet] reports OOMKilled · pod=billing-worker-3 [watchmen] match=oom sev=HIGH conf=0.94 → namespace_protected → escalate
03:42:12

Envelope hits FreeOSBot admission.

v1 envelope POSTed to FreeOSBot ingress over HTTPS. Sticky router pins by correlation_id. Phoenix admission accepts; p95_event_age_s autoscaler is well under threshold.

03:42:14

RECON + memory probe run.

RECON pulls Prometheus memory series for the pod, last 7 day OOM history, cgroup limits, the deployment manifest. Memory probe surfaces [INC-2026-04-30-C9D2]: same pod was OOMing a month ago when traffic spiked; resolution was to bump resources.limits.memory from 512Mi to 1Gi.

03:42:18

PASS1 · plan + Tier-2 action.

Diagnosis: same memory ceiling, similar traffic shape. Recommended action: open a draft PR raising the memory limit (Tier 1 reversible — files a PR, doesn't merge it). Memory probe also surfaces standing common-sense entry: "do not auto-merge changes to billing-* manifests." Plan mode does not trigger (single-step, low tier).

03:42:21

Reconcile PR opened. Operator paged.

FreeOSBot calls gh_pr_create through the persona outbound allowlist; rate-limited; payload-hash audited. PagerDuty page sent per escalation.policy = page_immediate for HIGH severity in protected namespaces.

→ pagerduty: 🚨 prod / billing-worker OOMKilled plan: PR #2174 raises memory limit 512Mi → 1Gi cite: INC-2026-04-30-C9D2 (recurring · same fix worked) require: human review + merge — auto-merge denied by L4
+ next morning

Briefing arrives at 09:00.

Structured incident report on the operator's desk. Timeline, prior-occurrence citation, the PR FreeOSBot opened, what's still missing for a permanent fix, who needs to know. Audit log carries the watchman → envelope → admission → action chain end-to-end.

Flat rate. No lock-in. Sovereign.

Start with a free 30-day pilot — we deploy a single Watchman into your cluster, read-only, no remediation. Convert when you're convinced. The platform is Apache 2.0 — you keep it whether we keep working together or not.

Pilot
Free
30-day evaluation. Read-only Watchman. Full incident log. No commitment.
  • ✓ One Watchman deployed into your cluster
  • ✓ Tier 0 deterministic classification
  • ✓ Full envelope log + cost displacement estimate
  • ✗ No SLA during pilot
  • ✗ Read-only · no remediation during pilot
Get in touch →
Enterprise
Custom
Multi-cluster federation · white-label for hosting partners.
  • ✓ Everything in Managed cluster
  • ✓ Multi-cluster federation
  • ✓ White-label for hosting partners
  • ✓ Custom Watchmen domains and thresholds
  • ✓ Custom escalation contracts
  • ✓ On-site deployment and handover
Start conversation →
🔑 Sovereignty in plain language. Apache 2.0 stack, top to bottom. All credentials, all documentation, all git history are yours from day one. You can run FreeOSBot without us — and if you stop paying, we hand over cleanly. There is no "vendor mode" the platform falls back into.

Let's talk sovereignty.

Whether you're scoping a pilot, evaluating a multi-cluster federation, or just want to understand how a DevOps persona under Phoenix actually works — we're happy to have that conversation.