forked from ghostwright/phantom
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path.env.example
More file actions
146 lines (116 loc) · 5.1 KB
/
.env.example
File metadata and controls
146 lines (116 loc) · 5.1 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
# Phantom Configuration
# Copy this file to .env and fill in your values:
# cp .env.example .env
# ========================
# REQUIRED: provider credential
# ========================
# Phantom defaults to Anthropic. Set ANTHROPIC_API_KEY for the default setup.
# To use a different provider (Z.AI, OpenRouter, Ollama, vLLM, LiteLLM, custom),
# configure the `provider:` block in phantom.yaml and set the matching env var
# below. See docs/providers.md for the full reference.
ANTHROPIC_API_KEY=
# Alternative provider keys (set one that matches your provider block in phantom.yaml):
# ZAI_API_KEY=
# OPENROUTER_API_KEY=
# LITELLM_KEY=
# ========================
# OPTIONAL: Slack
# ========================
# Create a Slack app: see docs/getting-started.md or use the manifest at slack-app-manifest.yaml
# Slack bot token (starts with xoxb-)
# SLACK_BOT_TOKEN=
# Slack app token for Socket Mode (starts with xapp-)
# SLACK_APP_TOKEN=
# Default Slack channel ID for intro messages (starts with C)
# SLACK_CHANNEL_ID=
# Owner's Slack user ID (starts with U) - only this user can talk to Phantom
# OWNER_SLACK_USER_ID=
# ========================
# OPTIONAL: Web Chat Login
# ========================
# If Slack is not configured, Phantom can send you a magic link email
# to log into the web chat at /chat. Set your email and a Resend API key.
# Without Resend, a bootstrap token is printed to container logs instead.
# OWNER_EMAIL=
# RESEND_API_KEY is also used for the phantom_email tool (see below).
# ========================
# OPTIONAL: Identity
# ========================
# Agent name (default: phantom)
# PHANTOM_NAME=phantom
# Agent role (default: swe). Options: swe, base
# PHANTOM_ROLE=swe
# Model for the agent brain. Keep a Claude model ID here even when using a
# non-Anthropic provider: the bundled cli.js has hardcoded capability checks
# against Claude model names. Use `provider.model_mappings` in phantom.yaml
# to redirect the wire call to your actual model (e.g., glm-5.1).
# Options:
# claude-sonnet-4-6 - Fast, capable, lower cost (default, recommended)
# claude-opus-4-6 - Most capable, higher cost
# PHANTOM_MODEL=claude-sonnet-4-6
# Provider override via env var (alternative to editing phantom.yaml).
# Options: anthropic (default), zai, openrouter, vllm, ollama, litellm, custom
# Note: Provider type affects evolution judge timeouts. Z.AI gets 4x longer
# timeouts (240s/360s/600s) due to GLM-4.5-Air latency. See config/evolution.yaml.
# PHANTOM_PROVIDER_TYPE=anthropic
# PHANTOM_PROVIDER_BASE_URL=
# Domain for public URL (e.g., ghostwright.dev)
# When set with PHANTOM_NAME, derives public URL as https://<name>.<domain>
# PHANTOM_DOMAIN=
# Explicit public URL (overrides domain-based derivation)
# Use this for custom domains that don't follow the subdomain pattern.
# Examples: https://ai.company.com, https://phantom.internal:8443
# PHANTOM_PUBLIC_URL=
# ========================
# OPTIONAL: Ports
# ========================
# HTTP server port (default: 3100)
# PORT=3100
# ========================
# OPTIONAL: Memory
# ========================
# Qdrant URL (default: http://qdrant:6333 in Docker, http://localhost:6333 on bare metal)
# QDRANT_URL=http://qdrant:6333
# Ollama URL (default: http://ollama:11434 in Docker, http://localhost:11434 on bare metal)
# OLLAMA_URL=http://ollama:11434
# Embedding model (default: nomic-embed-text)
# EMBEDDING_MODEL=nomic-embed-text
# ========================
# OPTIONAL: Docker
# ========================
# Docker group ID on the host. The Phantom container needs this to access
# the Docker socket for creating sibling containers.
# Find yours with:
# Linux: stat -c '%g' /var/run/docker.sock
# macOS: stat -f '%g' /var/run/docker.sock
# Default 988 works for most Hetzner and cloud VMs.
# DOCKER_GID=988
# ========================
# OPTIONAL: Email (Resend)
# ========================
# Resend API key for sending email. If set, the agent can send email as
# {PHANTOM_NAME}@ghostwright.dev (or {PHANTOM_NAME}@{PHANTOM_DOMAIN}).
# Get a key at: https://resend.com/api-keys
# RESEND_API_KEY=
# Maximum emails per day (default: 50)
# PHANTOM_EMAIL_DAILY_LIMIT=50
# ========================
# OPTIONAL: NextCloud Talk (webhook)
# ========================
# NEXTCLOUD_SHARED_SECRET=
# NEXTCLOUD_ROOM_TOKEN=
# NEXTCLOUD_TALK_SERVER=nextcloud.server.com
# NEXTCLOUD_BOT_ID= (optional, retrieved from `nextcloud.occ talk:bot:list`)
# NEXTCLOUD_SESSION_WINDOW_MINUTES=30 (optional, session coalescing window)
# NEXTCLOUD_OWNER_USER_ID= (optional, restrict bot to this user only)
# NEXTCLOUD_SEND_INTRO=false (optional, send welcome message on first startup)
# NEXTCLOUD_ENABLE_PROGRESSIVE_UPDATES=true (optional, NOT SUPPORTED - API limitation)
# NEXTCLOUD_ENABLE_FEEDBACK=true (optional, collect feedback via reactions)
# NEXTCLOUD_PROGRESSIVE_UPDATE_THROTTLE_MS=1000 (optional, NOT SUPPORTED - see above)
# ========================
# OPTIONAL: Secret Encryption
# ========================
# 64-character hex string (32 bytes) for encrypting stored credentials.
# If not set, a key is auto-generated and saved to data/secret-encryption-key.
# Generate one with: openssl rand -hex 32
# SECRET_ENCRYPTION_KEY=