Configuration
Configuration files, environment variables, ignore patterns, and all configurable options.
Stoa uses a layered configuration system: environment variables take highest priority, followed by project-level config, then global config.
Configuration Hierarchy
- Environment variables (highest priority)
- Project config:
.intent/config.json - Global config:
~/.intent/config.json
Project Configuration
Located at .intent/config.json in your project root:
{
"version": "1.0",
"projectRoot": "/path/to/project",
"debug": false,
"disableMaterializer": false,
"rename": {
"pendingCreateTTLMillis": 500,
"pendingDeleteTTLMillis": 500
},
"crdtDebug": {
"enabled": false,
"includeContent": true,
"prettyPrint": true
},
"remote": {
"enabled": false,
"url": "intent://server.example.com/project-id"
}
}| Field | Type | Description |
|---|---|---|
version | string | Config schema version |
projectRoot | string | Absolute path to project root |
debug | boolean | Enable debug logging |
disableMaterializer | boolean | Git Mode: don't write files, passive tracking only |
rename.pendingCreateTTLMillis | number | Time to wait for rename detection on creates |
rename.pendingDeleteTTLMillis | number | Time to wait for rename detection on deletes |
crdtDebug.enabled | boolean | Enable Automerge debug logging |
crdtDebug.includeContent | boolean | Include file content in debug logs |
crdtDebug.prettyPrint | boolean | Pretty-print debug output |
remote.enabled | boolean | Enable remote sync |
remote.url | string | Remote server URL |
LLM Configuration
Configure the Anthropic API key used for decision enrichment:
# Interactive setup
intent configure llm
# Set directly
intent configure llm --api-key sk-ant-...
# Set model
intent configure llm --model claude-sonnet-4-5-20250929
# Show current config
intent configure llm --show
# Use team's API key
intent configure llm --from-orgConfiguration is stored in .intent/config.json (project) or ~/.intent/config.json (global):
{
"llm": {
"anthropicApiKey": "sk-ant-...",
"anthropicModel": "claude-sonnet-4-5-20250929"
}
}Fallback: If no API key is configured, the CLI will use the Claude CLI binary if available on your PATH.
Slack Configuration
Send decision notifications to Slack channels:
# Interactive setup
intent configure slack
# Direct configuration
intent configure slack --oauth-token xoxb-... --channel "#intent-decisions"
# Enable/disable
intent configure slack --enable
intent configure slack --disable
# Project or global scope
intent configure slack --scope project
intent configure slack --scope global
# Show current config
intent configure slack --show{
"slack": {
"enabled": true,
"channel": "#intent-decisions",
"postExchangeDetails": true,
"docSync": {
"enabled": true,
"watchedDirs": ["docs/", "README.md"]
}
}
}Shell Configuration
Located at ~/.intent/shell-config.yaml:
theme: auto # auto, dark, light
editor: vim # Default editor
maxHistorySize: 100 # Shell history limit
autocompleteEnabled: true # Tab completion
showTimestamps: false # Show timestamps in output
markdownTheme: auto # Markdown rendering themeConfigure interactively:
intent configure shellIgnore Patterns
.intentignore
Project-specific ignore file using .gitignore syntax:
# Dependencies
node_modules/
vendor/
.venv/
# Build output
dist/
build/
*.o
*.pyc
# IDE files
.idea/
.vscode/
*.swp
# Large files
*.zip
*.tar.gz
*.dmg
# Secrets
.env
.env.localGlobal Ignore
Located at ~/.config/intent/ignore. Applies to all projects.
Built-in Patterns
These are always excluded regardless of configuration:
.git/.intent/node_modules/__pycache__/*.pyc.DS_Store
Manage via CLI
intent ignore add "*.log"
intent ignore remove "*.log"
intent ignore list
intent ignore test path/to/file.logEnvironment Variables
Core
| Variable | Description |
|---|---|
INTENT_DEBUG | Enable debug logging |
INTENT_SOCKET_PATH | Override daemon socket path |
INTENT_LOG_FILE | Override log file location |
NO_COLOR | Disable colored output |
LLM
| Variable | Description |
|---|---|
ANTHROPIC_API_KEY | Anthropic API key (overrides config) |
ANTHROPIC_MODEL | Model to use (overrides config) |
Slack
| Variable | Description |
|---|---|
SLACK_OAUTH_TOKEN | Slack bot token (xoxb-...) |
SLACK_CHANNEL | Default Slack channel |
INTENT_SLACK_DISABLED | Set to 1 to disable Slack |
Web Platform
| Variable | Description |
|---|---|
INTENT_API_URL | Override API URL (default: https://intent.specstory.com) |
INTENT_WEB_URL | Override web URL |
Actor Identity
Configure your identity for attribution:
intent configure actorThis sets the name and email used for provenance tracking and commit attribution.
Global Daemon Registry
All running daemons are tracked in ~/.intent/daemons.json. Manage them with:
intent service daemon list # See all daemons
intent service daemon kill-all # Stop all daemons
intent service daemon clean-all # Remove stale entries