{ "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "https://mosaicstack.dev/schemas/fleet-roster.schema.json", "title": "Mosaic Fleet Roster", "type": "object", "required": ["version", "transport", "agents"], "additionalProperties": false, "properties": { "version": { "const": 1 }, "transport": { "const": "tmux" }, "tmux": { "type": "object", "additionalProperties": false, "properties": { "socket_name": { "type": "string", "default": "mosaic-fleet" }, "socketName": { "type": "string", "default": "mosaic-fleet" }, "holder_session": { "type": "string", "default": "_holder" }, "holderSession": { "type": "string", "default": "_holder" } } }, "defaults": { "type": "object", "additionalProperties": false, "properties": { "working_directory": { "type": "string", "default": "~/src" }, "workingDirectory": { "type": "string", "default": "~/src" } } }, "runtimes": { "type": "object", "additionalProperties": { "type": "object", "additionalProperties": false, "properties": { "reset_command": { "type": "string" }, "resetCommand": { "type": "string" } } } }, "agents": { "type": "array", "minItems": 1, "items": { "type": "object", "required": ["name", "runtime"], "additionalProperties": false, "properties": { "name": { "type": "string", "pattern": "^[A-Za-z0-9_.-]+$" }, "alias": { "description": "Optional operator-defined display name for the agent.", "type": "string" }, "provider": { "description": "Optional agent runtime provider identifier such as openai-codex.", "type": "string" }, "runtime": { "type": "string" }, "class": { "type": "string" }, "host": { "description": "Host the agent runs on (hostname or IP). Absent = the fleet host. Used by onboarding-injection to render cross-host comms addresses. Manual cross-host listing is a pre-federation stopgap; federation (W1) auto-discovers later.", "type": "string" }, "ssh": { "description": "Explicit SSH target (normally user@host) for a cross-host inventory peer. Exact comms rendering requires this whenever the peer's resolved host differs from the current agent's host; the host value is never substituted as an SSH destination.", "type": "string" }, "socket": { "description": "Optional compatibility declaration of the fleet-wide tmux socket. When present it must exactly equal tmux.socket_name; independent per-agent sockets are rejected because the local fleet runtime provisions every session on the fleet-wide socket.", "type": "string" }, "working_directory": { "type": "string" }, "workingDirectory": { "type": "string" }, "model_hint": { "type": "string" }, "modelHint": { "type": "string" }, "reasoning_level": { "type": "string" }, "reasoningLevel": { "type": "string" }, "tool_policy": { "type": "string" }, "toolPolicy": { "type": "string" }, "persistent_persona": { "oneOf": [{ "type": "boolean" }, { "type": "string" }] }, "persistentPersona": { "oneOf": [{ "type": "boolean" }, { "type": "string" }] }, "reset_between_tasks": { "type": "boolean" }, "resetBetweenTasks": { "type": "boolean" }, "kickstart_template": { "type": "string" }, "kickstartTemplate": { "type": "string" } } } }, "connector": { "description": "Orchestrator chat connector (F4). Optional — absent means tmux (back-compat). Secrets (access/bot tokens) come from the environment, never this file.", "type": "object", "additionalProperties": false, "oneOf": [ { "properties": { "kind": { "const": "tmux" } }, "required": ["kind"], "not": { "anyOf": [{ "required": ["discord"] }, { "required": ["matrix"] }] } }, { "properties": { "kind": { "const": "discord" }, "discord": { "type": "object", "additionalProperties": false, "required": ["channel_id"], "properties": { "channel_id": { "type": "string", "minLength": 1, "pattern": "\\S" } } } }, "required": ["kind", "discord"], "not": { "required": ["matrix"] } }, { "properties": { "kind": { "const": "matrix" }, "matrix": { "type": "object", "additionalProperties": false, "required": ["homeserver_url", "user_id", "room_id"], "properties": { "homeserver_url": { "type": "string", "minLength": 1, "pattern": "\\S" }, "user_id": { "type": "string", "minLength": 1, "pattern": "\\S" }, "room_id": { "type": "string", "minLength": 1, "pattern": "\\S" } } } }, "required": ["kind", "matrix"], "not": { "required": ["discord"] } } ], "properties": { "kind": { "enum": ["tmux", "discord", "matrix"] }, "matrix": { "type": "object" }, "discord": { "type": "object" } } } } }