Deployment Topology

How Hoziron deploys in production — container structure, networking, storage, and scaling.

Single-Node Architecture

Hoziron is a single-process, single-node platform. All components run within one binary:

Container Deployment

Container Details

PropertyValue
Base imagegcr.io/distroless/cc-debian12:nonroot
UserUID 65532 (nonroot)
Entrypointhoziron start --listen 0.0.0.0:4200
Port4200 (API + metrics on same port)
Volume/data (all persistent state)
Read-only filesystemYes (except /data)
Health probeGET /health

Environment Variables

VariablePurposeContainer Default
HOZIRON_HOMEData directory/data
HOZIRON_LISTENListen address0.0.0.0:4200
HOZIRON_LOGLog filterinfo
HOZIRON_LOG_FORMATLog formattext (recommend json for production)
ANTHROPIC_API_KEYProvider key— (inject from secrets)

Network Topology

Kubernetes

Bare Metal / VM

For bare metal, enable native TLS if no reverse proxy:

[server.tls]
enabled = true
cert_path = "/opt/hoziron/tls/cert.pem"
key_path = "/opt/hoziron/tls/key.pem"

Storage Layout

/data/                          (HOZIRON_HOME in containers)
├── config.toml                 Platform configuration
├── .env                        API keys (local dev only)
├── daemon.json                 Runtime connection info
├── hoziron.db                  Main SQLite database
├── packages.lock               Dependency lockfile
├── data/
│   ├── memory/                 Per-agent KV stores
│   └── sessions/               Conversation histories
├── auth.db                     API key store (mode 0600)
├── audit.db                    Audit trail (WAL mode)
├── packages/                   Installed catalog packages
│   ├── claims-intake/
│   ├── document-ocr/
│   └── installed.json          Installation metadata
├── keys/                       Signing keypair
│   └── default.key             Ed25519 private key (mode 0600)
├── vault/                      Encrypted credentials
└── agents/                     Auto-load manifest directory
    ├── claims-processor.toml
    └── monitor-agent.toml

Storage Sizing

ComponentGrowth PatternTypical Size
hoziron.dbPer-agent, per-session10 MB – 1 GB
data/memory/Per-agent, per-message1 MB per 1000 messages
audit.dbPer-API-request~100 bytes/entry, 100K entries max
packages/Per-install10 KB – 5 MB per package
auth.dbPer-key< 1 MB

Scaling Considerations

Hoziron is single-node by design. Scale by increasing resources:

DimensionScale Factor
More agentsMore memory (10 MB base per agent)
More concurrent requestsMore CPU cores (tokio async)
Longer historyMore disk (session storage)
More integrationsMore file descriptors (MCP processes)

Horizontal Isolation

For multi-team environments, run separate instances:

Each instance has:

  • Its own config, agents, competencies, and data
  • Shared registry access (install same packages)
  • Shared IdP (same SSO, different role mappings)
  • Shared LLM providers (separate API keys if needed)

High Availability

Hoziron does not natively support active-active HA (single-process, SQLite). For high availability:

ApproachHowTrade-offs
Kubernetes restartrestartPolicy: Always + health probesSeconds of downtime on crash
PDB + rolling updatePodDisruptionBudget with 1 replicaControlled maintenance windows
Warm standbySecond instance with shared PVC (active-passive)Manual failover
Stateless agentsRecreate from manifests on new instanceLose in-flight sessions

For most enterprise deployments, Kubernetes auto-restart with graceful shutdown (30s termination grace) provides sufficient availability.

Graceful Shutdown

Set terminationGracePeriodSeconds >= 30 in Kubernetes to allow the flush to complete.