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?

Edit on GitHub