Reference

Configuration

Profiles, permission rules and the theme, in two TOML files that layer — yours, then the repository's.

The two files

File What it is
~/.config/niobe/config.toml Yours. $XDG_CONFIG_HOME/niobe/config.toml when that variable is set. Never gated.
.niobe/config.toml The repository’s, at its root. Overrides yours, replacing any profile of the same name whole.

A profile of the same name is replaced, not merged — so a repository profile is read as one thing you either accept or do not, rather than a set of edits scattered through yours.

Four of the repository file’s settings do nothing until you run niobe trust. Trust says which and why.

A profile

A profile is a backend plus what it runs with.

theme = "neo"
default_profile = "personal"

[profiles.personal]
backend = "claude"

[profiles.work]
backend = "claude"
models = ["opus", "sonnet", "haiku"]
env = { CLAUDE_CODE_USE_BEDROCK = "1", AWS_PROFILE = "work-sso" }
auth_refresh = "aws sso login --profile work-sso"

[profiles.personal-account]
backend = "claude"
settings = "~/.config/niobe/claude-personal.json"
niobe profiles            # every profile, the selected one marked
niobe --profile work      # run under one
Key What it does
backend Which bridge starts the session. claude is the one that spawns a process today.
models The models F8 offers, named the way this backend takes them. A profile that names none has nothing to switch between — Niobe never invents a model id.
env Passed to the subprocess exactly as written.
args Extra arguments for the backend’s binary.
settings A settings file the claude CLI is given as --settings <path>.
auth_refresh A command run to refresh credentials before the backend starts.

Two accounts on one machine

settings is the answer to a machine whose own claude settings configure the wrong account. The CLI’s settings environment wins over the environment a process is started with, so a profile’s env cannot take back what that file sets — and a file of your own can.

Niobe merges nothing and rewrites nothing: the path is passed on and the CLI reads it. A ~ at the front is your home directory. The file has to be there, and a path that is not is reported at its line in the config before anything starts.

niobe profiles shows which profiles name a settings file — and, where this machine’s own claude settings set CLAUDE_CODE_USE_BEDROCK, which do not.

Permission rules

[permissions]
allow = ["Read", "Bash(cargo test)", "Bash(cargo clippy *)"]

See Permissions for what each form matches. Answering “always” in the shell appends to this array in the repository’s file.

Theme

theme = "neo"      # or "classic"

--theme beats the config, and F9 beats both for the rest of the session.

When a config is wrong

The parser walks the spanned TOML document by hand, so an invalid file is reported as its key and its line rather than as a parse error somewhere in a file. A theme name no theme answers to is refused at its line rather than falling back to the default: someone who wrote a theme into their config and got the usual one would read it as the file not being loaded at all.

This page describes v0.4.0.