lazaret/docs/example.toml
ms2k 682d7c7db7 docs: formalize protocol identity and transition to regular-file escalation mailbox
- Replaces stream/socket escalation with a sandboxed regular-file Escalation Mailbox to satisfy runsc isolation boundaries without exposing `host-uds=open`.
- Expands the TLA+ protocol model with role-bound certificates, tuple authorization, and structured domain-failure recovery paths.
- Adds physical integration journals for host terminfo injection, persistent /etc DNS shims, rootless Podman network topology, and static client delivery.
- Establishes specification requirements for safe host-only State Anchor inspection and crash-consistent reset operations.
2026-06-30 02:35:43 +09:00

90 lines
3.2 KiB
TOML

# Lazaret Configuration Template (config.toml)
# Copy this file to ~/.config/lazaret/config.toml.
# Lazaret configuration is host-only and must not be placed in a mounted workspace.
[storage]
# Mount path on the host where persistent profile directories
# (e.g., usr, var, etc, opt, root) will be initialized and stored.
data_root = "~/.local/share/lazaret"
[network]
# Default global whitelist applied to the Netlink router gateway.
# Nameservers from the host's /etc/resolv.conf are added during Domain startup.
default_allow = [
"198.51.100.53/32", # Documentation address
"192.0.2.53/32" # Documentation address
]
# Default global blacklist applied to the Netlink router gateway.
# Private RFC 1918 ranges are blackholed by default to prevent scanning/accessing the local network.
default_deny = [
"10.0.0.0/8", # Class A Private Network Range
"172.16.0.0/12", # Class B Private Network Range
"192.168.0.0/16" # Class C Private Network Range
]
[escalation]
# Set to true to enable agent-to-host escalation through Lazaret's host-private control plane.
enabled = true
# runtime_dir is optional. Lazaret defaults to a private directory beneath
# $XDG_RUNTIME_DIR.
# Host commands that the agent is allowed to execute on the host automatically
# without triggering an interactive Human-In-The-Loop (HITL) prompt.
[[escalation.auto_approve]]
argv = ["aws", "sts", "get-caller-identity"]
allow_extra_args = false
# AI AGENT PROFILES
[profiles.gemini]
image = "docker.io/library/debian:trixie"
isolate_gitignored = true
persistent_dirs = ["/root", "/usr", "/var", "/etc", "/opt"]
allow_egress = ["10.222.0.0/16"]
env = { GEMINI_API_KEY = "env:GEMINI_API_KEY" }
volumes = [
{ host = "{profile_dir}/.gemini", container = "/root/.gemini", mode = "z" }
]
[profiles.claude]
image = "docker.io/library/debian:trixie"
isolate_gitignored = true
persistent_dirs = ["/root", "/usr", "/var", "/etc", "/opt"]
allow_egress = ["10.222.0.0/16"]
env = { ANTHROPIC_API_KEY = "env:ANTHROPIC_API_KEY" }
volumes = [
{ host = "{profile_dir}/.claude", container = "/root/.claude", mode = "z" }
]
[profiles.codex]
image = "docker.io/library/debian:trixie"
isolate_gitignored = true
persistent_dirs = ["/root", "/usr", "/var", "/etc", "/opt"]
allow_egress = ["10.222.0.0/16"]
env = { OPENAI_API_KEY = "env:OPENAI_API_KEY" }
volumes = [
{ host = "{profile_dir}/.codex", container = "/root/.codex", mode = "z" }
]
[profiles.grok]
image = "docker.io/library/debian:trixie"
isolate_gitignored = true
persistent_dirs = ["/root", "/usr", "/var", "/etc", "/opt"]
allow_egress = ["10.222.0.0/16"]
env = { XAI_API_KEY = "env:XAI_API_KEY" }
volumes = [
{ host = "{profile_dir}/.grok", container = "/root/.grok", mode = "z" }
]
[profiles.opencode]
image = "docker.io/library/debian:trixie"
isolate_gitignored = true
persistent_dirs = ["/root", "/usr", "/var", "/etc", "/opt"]
allow_egress = ["10.222.0.0/16"]
env = { ANTHROPIC_API_KEY = "env:ANTHROPIC_API_KEY", OPENAI_API_KEY = "env:OPENAI_API_KEY", GEMINI_API_KEY = "env:GEMINI_API_KEY" }
volumes = [
{ host = "{profile_dir}/opencode-config", container = "/root/.config/opencode", mode = "z" },
{ host = "{profile_dir}/opencode-share", container = "/root/.local/share/opencode", mode = "z" }
]