Isolated sandboxes, not plain Agents

SandboxAgents

Seven gVisor SandboxAgents I built on Viper. Not plain Agent Deployments. The handbook is still the full map — this page is the one I send people.

01

Why gVisor sandboxes

A normal kagent Agent is a Kubernetes Deployment: always on, same isolation as any other pod. Fine for a cluster helper.

These agents talk to a firewall, a cloud bill, or a ticket system. The model gets a filesystem, memory, and a network for the whole chat. Substrate puts that session in a gVisor actor (SandboxAgent) on WorkerPool kagent-default.

  • Isolated sandbox. gVisor is the wall between the model session and the Viper/k3s host. Tools still call out through an MCP pod; secrets stay in Vault, not in the actor.
  • Idle chats snapshot (zstd) and free the worker. Next message restores the same session.
  • No always-on pod per conversation. Golden snapshot you can resume.
Tradeoff on this lab: nested gVisor on dockerized k3s. Snapshots are in-cluster rustfs today (gs:// is a URI prefix only), not GCS. Do not bump kagent past 0.10.0-rc2 or Substrate past 0.0.9.
kagent UI is LAN-only. http://172.16.10.135:30500/ is not on this public Pages site. LAN-only. Not published on this GitHub Pages site.
02

The agents

All seven are gVisor SandboxAgents. Cards with a photo use a real Chromium chat shot. hello-substrate, fortigate, and f5-bigip have no live shot in git — I am not inventing one. arista-ceos uses the 2026-08-17 kagent capture.

Live kagent Agents grid — five SandboxAgent cards
Live kagent UI, 2026-08-16. Chromium capture from the gcp-sandbox-agent demo — five SandboxAgent cards. Not reconstructed.
03

hello-substrate

Kubernetes helper for this dockerized k3s lab. gVisor SandboxAgent · Go Declarative · ns kagent

gVisor SandboxAgent Go Declarative
Job
Cluster questions, manifests, troubleshooting
Tools
kagent-tool-server (k8s_get_*)
WorkerPool
kagent-default
Git
platform/kagent-ai/hello-substrate.yaml
No live screenshot in this repo. I am not inventing or generating one.
Nested gVisor on dockerized k3s can fail (runsc / seccomp). Worker CrashLoop is day-2 — do not bump pins to “fix” it.
04

fortigate

Home FortiGate 80F assistant (fw-maniak-hq). gVisor SandboxAgent · Go Declarative · ns kagent

gVisor SandboxAgent Go Declarative secret/platform/fortigate
Box
FortiGate 80F · fw-maniak-hq · 172.16.10.1
Tools
FortiOS REST wrappers (fg_*) via fortigate-mcp
Vault
secret/platform/fortigate
Git
platform/kagent-ai/fortigate-*.yaml
No live PNG in this repo. I am not inventing or generating one.
Image must be imported on the k3s node (ctr images import) before the MCP pod starts.
Never commit the REST token. Vault path name only. LAN-only — do not publish :30500 or the FortiGate API.
05

aws-budget

Executive AWS budget and capacity for us-east-2. gVisor SandboxAgent · Go Declarative · ns kagent

gVisor SandboxAgent Go Declarative secret/platform/aws-budget
Region
us-east-2
Account
616973157416
IAM user
aws-budget-agent
Vault
secret/platform/aws-budget

Live (2026-08-16)

Confirmed through the sandbox A2A path. Not invented.

MTD spend
$0.67
Budget
4.13% of $100
EC2 / ASG / RDS / EBS
0 / 0 / 0 / 0
Live kagent chat for aws-budget
Live kagent UI, 2026-08-16. Isolated sandbox chat — $0.67 MTD us-east-2 spend and capacity. Chromium capture, not reconstructed.
Cost Explorer and Budgets APIs live in us-east-1; tools still filter to us-east-2.
No generic “run any aws cli” tool. No IAM create, no terminate, no budget-delete.
06

servicenow

Manager-facing IT tickets on a personal developer instance. gVisor SandboxAgent · Go Declarative · ns kagent

gVisor SandboxAgent Go Declarative secret/platform/servicenow
Host
https://dev203166.service-now.com
Vault
secret/platform/servicenow

Live (2026-08-16)

Confirmed through the sandbox A2A path. Not invented.

Active this page
25 (13 P1 / 4 P2 / 5 P3 / 3 P5)
Unassigned P1
INC0007001 payroll
VPN
INC0000015
DNS leak
INC0000016
Live kagent chat for servicenow
Live kagent UI, 2026-08-16. Open-ticket summary by priority, then VPN INC0000015 and DNS INC0000016. Chromium capture, not reconstructed.
Live kagent chat scroll for servicenow
Live capture of that same chat scroll. Real kagent SPA on Viper — not a reconstructed reel.
No generic shell. No incident create, close, or delete.
Writes (sn_add_work_note, sn_assign_incident) exist but the agent must ask first.
Never commit ServiceNow password or username values. Vault path name only.
07

gcp-budget

Executive GCP budget and capacity for us-east1. gVisor SandboxAgent · Go Declarative · ns kagent

gVisor SandboxAgent Go Declarative secret/platform/gcp-budget
Region
us-east1
Org
maniak.io
Project
viper-kagent
Billing account
011C38-867461-BE95B1
SA
gcp-budget-agent@viper-kagent.iam.gserviceaccount.com
Vault
secret/platform/gcp-budget

Live (2026-08-16)

Confirmed through the sandbox A2A path. Not invented.

VMs us-east1
0
CPUs
0/200
Instances
0/24
Live kagent chat for gcp-budget
Live kagent UI, 2026-08-16. Billing/budgets/MTD unavailable; 0 VMs in us-east1. Chromium capture, not reconstructed.
First live Q1: ImportError billing_budgets_v1. After rebuild, Cloud Billing returned Unauthenticated. Trail budget $1 was not returned. I am not inventing spend.
Cloud Billing does not return month-to-date spend. Tools say unavailable. No generic “run any gcloud” tool.
08

f5-bigip

F5 BIG-IP VIP monitor for 172.16.10.10. gVisor SandboxAgent · Go Declarative · ns kagent

gVisor SandboxAgent Go Declarative secret/platform/f5-bigip
Box
BIG-IP · 172.16.10.10
Tools
iControl REST wrappers (f5_*) via f5-bigip-mcp
Vault
secret/platform/f5-bigip
Git
platform/kagent-ai/f5-bigip-*.yaml
No live screenshot yet. I am not inventing or generating one.
Never commit the admin password. Vault path name only. LAN-only.
09

arista-ceos

Read-only Arista cEOS operator for the Containerlab spine/leaf demo. gVisor SandboxAgent · Go Declarative · ns kagent

gVisor SandboxAgent Go Declarative secret/platform/arista-ceos
Fabric
Containerlab cEOS · spine1 / leaf1 / leaf2 · eBGP 65000/65101/65102
Tools
EOS eAPI show wrappers (arista_*) via arista-ceos-mcp
Vault
secret/platform/arista-ceos
Git
platform/kagent-ai/arista-ceos-*.yaml

Live (2026-08-16)

Confirmed through the sandbox A2A path. Not invented.

EOS
4.33.9M
spine1 ASN
65000
BGP peers
10.0.1.1/65101 Estab · 10.0.2.1/65102 Estab
Live kagent chat for arista-ceos
Live kagent UI, 2026-08-17. BGP summary on spine1 — ASN 65000, both leaves Established. Chromium capture, not reconstructed.
Never commit the eAPI password. Vault path name only. LAN-only — do not publish :30500 or cEOS eAPI.
10

Pins (do not bump)

Official pairing. Substrate 0.0.12 drops valueFrom and breaks rc2. Do not “upgrade to fix” a Ready=False agent.

PiecePin
kagent OSS0.10.0-rc2
Agent Substrate0.0.9
WorkerPoolkagent-default
kagent UI:30500
modelgpt-5.5 via agentgateway :30100
Hard rule: never commit secrets, tokens, SA JSON, or Vault values. Git holds path names and ExternalSecret objects only.