ENCLAVR DOCS

Command map

enclavr is the canonical entrypoint. The CLI and interactive cockpit share the same action catalog and application services.

Hierarchical Enclavr command map grouped by configuration, hosts, operations, and observation.

Open the command map full size

Start with help

./enclavr <group> --help
./enclavr <group> <action> --help

Built-in help is authoritative for flags, confirmation, prerequisites, reads, writes, and follow-up actions. Help requests do not load namespace credentials or refresh managed Bash profiles. Run ./enclavr with no arguments for the Bubble Tea cockpit.

Managed Bash completion uses the current Go action catalog for both enclavr and ./enclavr, including nested commands, command-specific flags, --component selectors and file paths. It offers --yes only for commands that accept it. Hostname arguments work after options and for every remote rustnet-panes target. Retired priv pull, priv check and priv push commands are not candidates. Completion queries the current executable each time; it does not cache command paths, open OpenBao, query Tailscale or write session logs. Hostnames come from the session's existing hostname list and still require inventory validation.

After pulling the change, run ./enclavr internal bash-profile-refresh, then source ~/.bash_profile_enclavr.io in each existing Bash session. File and directory completion is limited to path arguments. Namespace names and --only action IDs are entered explicitly; use host plan to find applicable action IDs. Pass flag values as separate arguments, for example --only caddy-mask-proxy.deploy.

Core groups

Group Purpose Typical safety class
config Browse configuration or validate the namespace, schema, and current host Read; optional confirmed local export in the TUI
namespace Inspect ownership, manage access and the private web endpoint, repair fields, and reconcile runner registrations Read or guarded write
priv Edit protected components through the attended workflow Guarded remote write
host Add/edit inventory, plan, deploy, and inspect the current host Read or confirmed write
schema Check the embedded assets contract and generated reference Read or confirmed local write
monitor Show dashboards, logs, hunts, and Malcolm health/statistics Read-only
tailnet Compare or reconcile the namespace HuJSON policy Read or confirmed remote write
remote Inspect or operate explicitly selected inventory hosts Read or confirmed host write
bastion Plan, apply, and inspect declared AWS bastions Read or confirmed billable write

Public commands

Every public command is listed below. Append --help for its accepted flags, inputs and confirmation rules. Guided commands open forms and obtain their own confirmation; supplying arguments still makes the invocation a CLI command. DNS publication remains a documented internal operation. Caddy preparation and publication are public namespace commands and appear in the TUI Config menu.

Command Purpose
enclavr config view List accessible configuration components; use the TUI for browsing and export
enclavr config validate Validate assets and the selected host contract
enclavr namespace inspect Inspect canonical documents without exposing values
enclavr namespace status Discover writer, service-role ownership and live cluster leadership
enclavr namespace caddy prepare Review and save a protected snapshot of an existing Caddy document through a form
enclavr namespace caddy publish Review and publish that snapshot through the existing writer; unchanged content is a no-op
enclavr namespace repair Repair secrets and users through forms
enclavr namespace access Manage declared role permissions through attended forms
enclavr namespace ca Inspect or export the existing public CA certificate
enclavr namespace web Start the isolated private web endpoint for up to four hours
enclavr namespace admin acquire Obtain temporary attended administrator access
enclavr namespace admin end End the current interactive session's administrator access
enclavr namespace runners status Inspect declared Forgejo runner registrations
enclavr namespace runners reconcile Reconcile explicitly missing runner registrations
enclavr priv edit Edit, validate, review and publish selected protected components
enclavr host add Add a host through schema-driven forms
enclavr host edit Edit an existing host through schema-driven forms
enclavr host issue-identity Issue an approved dedicated host identity through attended forms
enclavr host enroll Accept this host's dedicated connection
enclavr host plan Preview the ordered deployment actions
enclavr host deploy Deploy the exact current hostname
enclavr host status Inspect local managed component state
enclavr host objects status Inspect the exact local encrypted object volume and authenticated S3 readiness
enclavr host objects test Confirm and run scoped S3 integrity, multipart and denied-access checks
enclavr host repos-sync Synchronize accessible repositories and eligible existing core deployments
enclavr host repos-schedule Schedule daily repository synchronization
enclavr schema check Check schema, QA assets and generated schema documentation
enclavr schema write-doc Update the generated schema reference
enclavr monitor dashboard Open the live monitoring dashboard
enclavr monitor logs Read a bounded, redacted systemd or Docker log snapshot
enclavr monitor hunt Inspect host state and repository drift
enclavr monitor malcolm-statistics Report historical utilisation and conditional storage forecasts
enclavr monitor malcolm-health Check current Malcolm health
enclavr tailnet policy status Compare protected and live tailnet policies
enclavr tailnet policy reconcile Reconcile policy with ETag and semantic verification
enclavr remote list List inventory hosts
enclavr remote summary Summarize inventory capabilities
enclavr remote show Show one configured host
enclavr remote enroll Deliver an approved checkout and dedicated connection over SSH
enclavr remote deploy Deploy one remote host
enclavr remote deploy-all Deploy eligible hosts with explicit exclusions
enclavr remote drift Inspect one host through its installed Enclavr command
enclavr remote ssh Open SSH to one validated host
enclavr remote rustnet Open Rustnet on one validated host
enclavr remote rustnet-panes Open a tmux pane for each selected host
enclavr remote rustnet-install Run the selected host's Rustnet deployment action
enclavr remote repos-sync-all Synchronize repositories across configured members
enclavr remote repos-schedule-all Schedule repository synchronization across members
enclavr bastion create Guide creation from explicit AWS selections
enclavr bastion plan Plan a declared AWS bastion
enclavr bastion apply Reconcile a declared AWS bastion
enclavr bastion status Inspect declared bastion infrastructure

Common workflows

Validate and deploy this exact host:

./enclavr config validate
./enclavr host plan
./enclavr host deploy --yes
./enclavr host status

Inspect and safely edit namespace assets:

./enclavr namespace inspect --namespace <namespace>
./enclavr namespace status --namespace <namespace>
./enclavr priv edit --namespace <namespace> --component assets
./enclavr namespace inspect --namespace <namespace>

Inspect the fleet without mutation:

./enclavr remote list
./enclavr remote summary
./enclavr remote show <hostname>
./enclavr remote drift <hostname>

Compare tailnet policy before a separately confirmed reconciliation:

./enclavr tailnet policy status
./enclavr tailnet policy reconcile --yes

Clone missing Forgejo repositories and sync existing checkouts locally: launch ./enclavr, select Operations → Sync Repositories, then choose All repositories or an organization / owner. Review the plan and press y to run. The picker lists owners and counts from repositories visible to the existing persisted reader, including private, archived and template repositories.

Equivalent CLI commands (omit --yes to review a plan):

./enclavr host repos-sync --yes
./enclavr host repos-sync --org OrganisationServiceManagement --yes
./enclavr host repos-sync --org OrganisationServiceManagement --sync-only --yes

remote repos-sync-all also accepts --org OWNER; its TUI picker is under Operations → Sync All Repositories. Daily schedules continue to sync all accessible repositories. Checkouts remain under ~/forgejo.<namespace>/<exact-owner>/<exact-repository>. Dirty, detached, unpublished and divergent work is preserved; core follows main and deploys only through a pre-existing managed installation. --sync-only disables that deployment. New clones use the validated Forgejo SSH URL; existing checkouts use their validated origin and configured authentication. Sync preserves Git configuration, signing and upstream settings.

Repositories owned by extgatr.enclavr.io are skipped when Forgejo reports a size above 1 GB (1,000,000,000 bytes). Forgejo reports integer KiB; the limit applies to that reported size. An unavailable size for this owner also causes a reported skip. Other owners have no size limit. This policy applies before cloning or fetching in all-repository, organization, fleet and scheduled syncs. Existing excluded checkouts and their local work are retained. The TUI shows eligible and skipped counts before confirmation.

HTTP 401 means Forgejo rejected the persisted reader; its existing owner must correct secrets.<namespace>/configr_op_repo_read_key through the protected Config → Edit config workflow. HTTP 403 identifies denied access: verify the existing approved read:repository scope and intended repository visibility. Sync does not create credentials or expand permissions, and cannot discover private repositories hidden from that reader. The token is used for API discovery only; Git retains the account's existing SSH or HTTPS authentication.

Confirmation rules

Read-only commands do not need --yes. Mutating direct commands require explicit confirmation or an attended workflow. A dry plan never implies remote preflight or approval. priv edit, host forms, and certain administrator ceremonies own their confirmation internally and should not be bypassed.

For the TUI, launch ./enclavr, then select Config → Repair namespace, Config → Edit config, or Config → Add host config / Edit host config. Field forms stay in memory. In Edit config, press v on a document, then y at the editor plan to open the complete document in Vim in the same terminal. :wq returns the draft; :cq discards the editor attempt. Enclavr owns the protected temporary draft and validates it when Vim exits; saving in Vim does not publish. Back in the component list, press r to review, then y to publish. Config → Browse config opens read-only fields; select a component and press e to request a protected file export, then review and explicitly confirm. The CLI priv edit command remains available. Standalone priv pull, priv check and priv push commands have been retired.

The internal group contains repository automation and attended OpenBao administration surfaces. It is not a shortcut around public validation or confirmation contracts; use it only with the repository runbook for the named operation.

For internal openbao-ops, use the OpenBao operations runbook for protected request examples, initialization, identity recovery, backup, leadership and quorum procedures. Isolated snapshot restore uses native OpenBao commands; there is no Enclavr restore operation.