Configure an instance
Keep topology, setup inputs, and managed runtime state in their separate authorities.
Nautilo has three different configuration authorities. Treating them as one giant environment file is how secrets leak and instances become impossible to reason about.
| Authority | Owns | Must not own |
|---|---|---|
~/.nautilo/profiles/<name>.toml | Transport, lifecycle, instance identity, endpoint, SSH and TLS policy | Provider keys or owner passwords |
~/.config/nautilo/deploy.toml | First-owner inputs, selected provider secrets, optional initial Genie choices | Ports, Compose identity, database URLs, or generated runtime state |
Managed config/instance.env | Runtime configuration written by Nautilo deployment tooling | Hand-maintained setup templates or source-control defaults |
Profile first
Profiles are deliberately non-secret. Inspect the active one before every mutation:
nautilo profile current
nautilo statusprofile current identifies the selected topology and endpoint. status
reports Compose state and best-effort setup health. Neither command proves a
model-backed turn works.
Keep setup input outside Git
The setup file uses schema version 1, must be mode 0600, and must live
outside a Git worktree. Public examples should reference secrets from the
setup process environment rather than embedding their values.
schemaVersion = 1
[admin]
handle = "operator"
displayName = "Nautilo Operator"
password = { fromEnv = "NAUTILO_ADMIN_PASSWORD" }
pin = { fromEnv = "NAUTILO_ADMIN_PIN" }
[[providers]]
key = "OPENAI_API_KEY"
value = { fromEnv = "OPENAI_API_KEY" }
[genie]
mode = "skip"The supplied password is the owner's permanent sign-in password. Choose it deliberately and save it in your password manager before deployment; first sign-in does not force a replacement. Keep the approval PIN separate from the password. There is no forced-password-change option in this template.
For an older file, remove forcePasswordChangeOnFirstSignIn whether its value
is true or false. If the old password was intended to be temporary, choose
and save a permanent owner password before retrying deployment.
install -d -m 700 "$HOME/.config/nautilo"
install -m 600 /path/to/reviewed-deploy.toml "$HOME/.config/nautilo/deploy.toml"The schema accepts zero providers, but features that call a model require a usable selected provider. Verify the capabilities you intend to use; do not infer them from a healthy container.
Verify the result
After a configuration change, check that you are using the intended profile,
sign in as the owner, and send your Genie a message. A successful status
check alone does not confirm that sign-in and model access work.