Docs/Reference

Reference

Configuration

Tama has no required environment variables and no free-form settings file for a supported installation: setup choices are explicit actions in the app, and everything durable lives in known files with known schemas. This page maps that surface — where state lives, which environment variables the bundled scripts and runtime honor, and the few user-defaults keys the app itself keeps. Build- and release-time variables (signing identities, provisioning profiles, channels) are maintainer-only and tabled in operations.

Tama has no required environment variables and no free-form settings file for a supported installation: setup choices are explicit actions in the app, and everything durable lives in known files with known schemas. This page maps that surface — where state lives, which environment variables the bundled scripts and runtime honor, and the few user-defaults keys the app itself keeps. Build- and release-time variables (signing identities, provisioning profiles, channels) are maintainer-only and tabled in operations.

#State Tama owns

Everything under ~/Library/Application Support/Tama:

PathContent
policy-bundles/index.jsonImported inactive bundle identities: source path and digest, retained files and hashes (ai.wisent.tama.policy-bundles.v1)
policy-bundles/bundles/<source-key>/Editable byte-for-byte policy files adopted from one source; never an active runtime by import alone
hooks-runtime/releases/<release-id>/Content-addressed installed hook releases
hooks-runtime/currentSymlink to the active release, replaced atomically
hooks-runtime/installed.jsonInstalled identity: release id, checksum, versions, managed files, pinned Node (ai.wisent.tama.installed-hook-release.v1)
hook-emergency-state.jsonDurable disabled flag (ai.wisent.tama.hook-emergency-state.v1)
emergency-backup/manifest.jsonWhat emergency disable moved and emptied, recorded once
emergency-backup/claude-settings.json, codex-hooks.jsonOriginal provider configs, restored on re-enable
session-control/*.session.jsonSupervisor-owned live session records (ai.wisent.tama.session-control.v2)
session-control/*.override.json, *.request.json, *.response.jsonSession overrides and the private request/response exchange

Never repair installed.json, current, or the emergency manifest by hand as a normal procedure. Policy bundle files are intentionally editable, but a locally changed imported file causes the next replacement to conflict rather than overwrite it (operations).

#Managed per-user files

Installation writes hook entrypoints only to documented per-user locations: ~/.shared-hooks for the structured registry and OMP adapter, ~/.claude/hooks and ~/.claude/settings.json, ~/.codex/hooks and ~/.codex/hooks.json, ~/.local/bin/tama-agent, the user-global Git dispatchers, and approved project .githooks entrypoints. Existing Git hooks are preserved as <name>.before-tama. The OMP adapter is registered through omp config set extensions.

#Script and runtime environment variables

Honored by the bundled installer (tama hooks install-release), the emergency switch (emergency_disable_hooks), and the generated launchers:

VariableRead byPurpose
TAMA_HOMEemergency switchTarget home directory; $HOME when it is not set
TAMA_EMERGENCY_ACTIONemergency switchdisable (when it is not set) or enable
TAMA_HOOK_RELEASE_ROOTemergency switchRelease root; the hooks-release beside the script, else the one in .build/Tama.app
TAMA_HOOK_INSTALLERemergency switchInstaller path; the release's own bin/tama when it is not set
TAMA_OMPinstallerThe omp executable used to register the OMP adapter
AGENT_HOOK_REGISTRYevery Tama program and the OMP adapterRegistry path; ~/.shared-hooks/registry.json when it is not set
TAMA_CLEAN_DISABLEDtama violations clean, tama request violations/clean1 disables the cleanup command entirely
TAMA_HOOK_SOURCE_REVISION, TAMA_HOOK_SOURCE_DIRTYtama hooks sealThe source identity the build expects; a tree that differs is refused

Debug-only seams (TAMA_HOOK_ROOT for the catalog root, TAMA_TEST_IDENTITY for UI tests) are compiled out of distributed builds (operations).

#Application defaults

The app stores minimal preferences in user defaults for bundle id ai.wisent.tama.desktop:

  • tama.hasCompletedSetup — recorded only by the successful setup handoff; delete it to repeat guided setup without changing enforcement state (onboarding);
  • the first-use journey's progress, stored under the tama.onboarding.v1 namespace; the journey's transport reads its token from the TAMA_STADO_INTEGRATION_TOKEN environment key, and a bundled journey definition is the fallback.

Authentication state is not configuration: the Wisent session lives in the macOS Keychain through Wisent Auth, and Tama does not duplicate it in preferences (integrations).