Configuration reference¶
Core uses one explicitly selected TOML configuration and a private state directory.
The defaults are ~/.config/openmachine/config.toml and
~/.local/state/openmachine/. To select another installation, place both global
options before the subcommand:
openmachine --config /absolute/config.toml --state-dir /absolute/state doctor
Do not copy an existing operator's full configuration into an Issue. The example configuration contains placeholders, not credentials or a ready-to-use machine inventory.
Minimal read-only configuration¶
Replace the root with an existing absolute directory:
schema_version = 1
[machines.local]
transport = "local"
execution_enabled = false
workspace_write_enabled = false
[workspaces.project]
machine = "local"
root = "/absolute/path/to/project"
init --workspace creates this local profile without overwriting a file. Machine
and workspace names are stable selectors used by tools and retained tasks; changing
a name is not a migration of historical references. Unknown configuration fields
are rejected. Use actual absolute paths rather than assuming shell expansion
inside TOML.
Machine grants¶
| Setting | Type and default | Meaning |
|---|---|---|
transport |
"local" or "ssh" |
Which native target owns the operation. |
execution_enabled |
Boolean, false |
Permit native commands after the remaining authorization checks. |
workspace_write_enabled |
Optional Boolean | Typed file-write permission; when omitted it inherits the legacy execution grant. |
ssh_alias |
SSH machines only | Existing noninteractive OpenSSH alias. |
ssh_worker |
SSH machines only | Absolute path to the checksum-named worker archive. |
ssh_identity |
SSH machines only | Verified target/account identity hash; required before enabling mutations. |
Set both grant booleans explicitly in new configurations. The following combinations are intentional; none overrides native permissions, client approval or a task contract:
| Execution | Typed writes | Result |
|---|---|---|
false |
false |
Read-only typed workspace tools. |
false |
true |
Typed file edits without native command execution. |
true |
false |
Native commands allowed, typed writes disabled. Commands can still write using native account rights. |
true |
true |
Both capabilities enabled under their respective checks. |
An execution grant is not an OS sandbox. See Security.
Workspaces and SSH machines¶
Each [workspaces.NAME] binds machine to one configured machine and root to
an existing absolute directory on that machine. Typed paths are relative to the
selected workspace. Registered Git worktrees can be selected explicitly; creating
one does not change the configured default root or grant ownership of other trees.
Remote SSH covers worker preparation, first read-only probe, identity verification, independent grants and remote result retrieval. Do not set an archive checksum as the target identity. Local machines reject SSH-only fields.
Management-capable macOS installations also provide manage machines,
machine-probe, machine-test, machine-add and machine-remove. Writes use an
original operation ID and the observed configuration SHA256, rather than an
unconditional overwrite. Their CLI arguments are in CLI reference.
They do not provision an SSH worker or authorize deletion of remote files.
GitHub and Skills¶
[github] supports account, read_repositories, write_repositories,
read_owners, write_owners and attribution. Exact repository scopes are the
narrowest option; write scope includes read access. An empty scope grants none.
Legacy repositories cannot be mixed with explicit read/write scope fields.
The selected native account and GitHub App resource permissions must also match.
See GitHub for connection and verification.
[skills].roots lists up to 16 explicitly reviewed absolute directories.
It adds discoverable instructions, not permissions or executable plugins. See
Skills.
Apply changes safely¶
For a disposable manual server, stop that server, edit its configuration, run
doctor against the exact paths and restart it. A valid file is not a successful
remote connection; perform the relevant explicit probe afterward.
For a managed installation, prepare a separate candidate configuration and use
the compatible update workflow's --candidate-config. Preserve the active profile,
original tasks and retained installations. Current work, incompatible readers or
a changed target can defer activation; never delete state to force it through.
The schema is defined by the selected version's configuration implementation. Do not add fields from an unreleased checkout to an older runtime.