Configuration
Space Settings
Navigate to Space Settings (gear icon in the sidebar) to configure:
Agent
- Model: Which Claude model powers the agent (e.g.,
claude-sonnet-4-6) - Temperature: Creativity level (0.0 = deterministic, 1.0 = creative)
- Identity / Name: Custom agent persona and display name
- Custom Instructions: Additional context injected into every agent system prompt
- Tier 1: Toggle the lightweight fast agent on/off for web and channel contexts
Features
Enable or disable sections per space:
- Projects — Project tracking and management
- Activity — Cross-channel activity feed
- Automations — Scheduled and event-triggered workflows
- Skills — Reusable agent knowledge base
Channels
Add credentials for each external service. Each channel requires:
- API credentials — Tokens, keys, or secrets (stored encrypted)
- Webhook secret — Auto-generated, used to validate incoming events
Example — connecting GitHub:
- Go to Space Settings > Channels > GitHub
- Enter your GitHub Personal Access Token (needs
repo,workflow,pull-requestscopes) - Copy the webhook URL shown
- In GitHub repo settings, add a webhook pointing to that URL with the displayed secret
Webhooks
Register these URLs in your external services to receive events:
| Service | Webhook URL | Events |
|---|---|---|
| GitHub | https://yourhost/webhooks/github | Pull requests, issues, comments, pushes |
| Linear | https://yourhost/webhooks/linear | Issues, comments |
| Sentry | https://yourhost/webhooks/sentry | Issue alerts |
| Teams | https://yourhost/webhooks/teams | Channel messages |
| Telegram | https://yourhost/webhooks/telegram | Messages, voice notes |
Webhook authentication varies by service — GitHub uses HMAC signatures, Linear uses JWT, Telegram uses signed requests. Themis handles validation automatically via WebhookSpaceResolver.
Admin Settings
Global settings available at /admin/settings (admin users only):
- Model configuration — Map short model names to full API model IDs
- Default temperature — Global fallback for agent creativity
- Cost tracking — Cumulative API spend across providers
Environment Variables
Per-space settings take precedence, but these env vars provide instance-wide defaults:
| Variable | Purpose | Default |
|---|---|---|
THEMIS_BOT_LOGINS | Comma-separated GitHub usernames that identify the bot (for self-mention filtering). | themis-bot |
THEMIS_BOT_NAME | Git author name for code generation commits. | first configured bot login |
THEMIS_BOT_EMAIL | Git author email for code generation commits. | themis-bot@users.noreply.github.com |
THEMIS_LINEAR_ORG_SLUG | Linear org slug used to build issue URLs. | (none — Linear links omitted if unset) |
THEMIS_LINEAR_BOT_NAMES | Comma-separated Linear display names / email fragments used to detect the bot. | agent display name |
THEMIS_DOCS_URL | Target for the sidebar Docs link. | https://github.com/themis-ai/themis |
ALLOW_PASSWORD_LOGIN | Expose the email/password login form on the sign-in page alongside Google OAuth. Enabled by default in docker-compose.yml so the seeded admin can sign in. | false |
METABASE_MCP_COMMAND | Override path to the Metabase MCP server binary. | metabase-server |
LANGFUSE_PUBLIC_KEY | Enables OpenTelemetry tracing to Langfuse when set. | (disabled) |
API_JOB_THREADS / API_JOB_PROCESSES | Dedicated worker pool sizing for the api Solid Queue queue. | 3 / 1 |
Useful Commands
# Development
bin/dev # Start all services
bin/rails console # Interactive Rails shell
bin/rails db:migrate # Run pending migrations
bundle exec rubocop -a # Auto-fix lint issues
# Testing
bin/rails test # Run all tests
bin/rails test test/path/to/file.rb:42 # Single test at line
# Data
bin/rails support:sync # Sync config-as-code automations
# Production (Kamal)
kamal deploy # Deploy to production
kamal app exec -i --reuse 'bin/rails console' # Production console
kamal app logs -f # Stream logs