Skip to content
Preview

Vault configuration

The vault.json schema, layer paths, the sync command, and all configuration keys.

Last updated: 2026-04-30

Vault configuration

Specification - implementation in progress. The vault.json schema below is the specified interface. Field names and defaults are stable; some optional fields are not yet enforced by the runtime.

vault.json

Every vault requires a vault.json at its root. Minimal valid configuration:

{
  "name": "my-company",
  "tier": "L2",
  "environment": "production"
}

Full schema with all fields:

{
  "name": "my-company",
  "tier": "L2",
  "environment": "production",

  "data": {
    "catalog": "plexifact://prod/catalog",
    "default_connection_timeout_ms": 5000
  },

  "notifications": {
    "default_channel": "slack",
    "slack_webhook": "env:SLACK_WEBHOOK_URL"
  },

  "audit": {
    "enabled": true,
    "retention_days": 90,
    "destination": "vault://audit-log/"
  },

  "sync": {
    "auto": false,
    "pre_run": false
  },

  "permissions": {
    "who_can_edit_l2": ["ops-team"],
    "who_can_create_agents": ["ops-team", "data-team"]
  }
}

Field reference

Required fields

FieldTypeDescription
namestringUnique identifier for this vault. Used in logs and CLI output.
tier"L1" | "L2" | "L3" | "L4"Vault tier. Determines resolution priority and ownership.
environment"sandbox" | "staging" | "production"Target environment. Agents will not deploy to production unless this is set to "production".

data

FieldTypeDefaultDescription
data.catalogstring-PlexiFact catalog URI. Required for agents that use PlexiFact connector skills.
data.default_connection_timeout_msinteger5000Timeout in milliseconds for data source connections.

notifications

FieldTypeDefaultDescription
notifications.default_channel"slack" | "email" | "webhook""slack"Default notification channel for agents that do not specify one.
notifications.slack_webhookstring-Slack Incoming Webhook URL. Prefix with env: to reference an environment variable.

audit

FieldTypeDefaultDescription
audit.enabledbooleantrueWhether to log agent runs to the audit trail.
audit.retention_daysinteger90How many days to retain audit log entries.
audit.destinationstring"vault://audit-log/"Where to write audit entries.

sync

FieldTypeDefaultDescription
sync.autobooleanfalseIf true, flexor sync runs automatically on flexor deploy.
sync.pre_runbooleanfalseIf true, Flexor syncs vault state before each agent run. Adds latency; useful in fast-iteration environments.

Directory structure

A well-organized L2 vault follows this layout:

vault-company/
├── vault.json
├── skills/
│   ├── data-freshness-check.yaml
│   ├── lp-notification.yaml
│   └── reconciliation-alert.yaml
├── agents/
│   ├── feed-monitor.yaml
│   └── weekly-nav-report.yaml
├── knowledge/
│   ├── fund-parameters.md
│   ├── sla-thresholds.md
│   └── escalation-contacts.md
├── rules/
│   └── compliance.md
└── audit-log/
    └── .gitkeep

The sync command

flexor sync [--vault <name>] [--dry-run]
FlagDescription
--vault <name>Sync a specific vault by name. Defaults to all vaults in scope.
--dry-runPrint what would be synced without writing.
--forceSync even if the runtime reports no changes detected.

After sync, agents running in the target environment see the updated vault state on their next trigger.

Was this page helpful?