Repository navigation
Expand file tree
/
Copy path.env.example
More file actions
181 lines (140 loc) · 6.17 KB
/
Copy path.env.example
File metadata and controls
181 lines (140 loc) · 6.17 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
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
# Wingman Environment Configuration
# Copy this file to .env and fill in your values
# ============================================================================
# Slack Configuration
# ============================================================================
# Required: Bot User OAuth Token (starts with xoxb-)
# Used for: Posting messages, reading channels, bot operations
# Scope: See docs/slack-auth.md for required scopes
SLACK_BOT_TOKEN=xoxb-your-bot-token-here
# Required: App-Level Token (starts with xapp-)
# Used for: Socket Mode connection (recommended for development)
# Note: Only needed if using Socket Mode
SLACK_APP_TOKEN=xapp-your-app-token-here
# Required: Signing Secret
# Used for: Verifying requests from Slack
# Found in: Slack App Settings > Basic Information
SLACK_SIGNING_SECRET=your-signing-secret-here
# Optional: User OAuth Token (starts with xoxp-)
# Used for: User-level actions (reading private messages, etc.)
# Note: Only needed for specific user actions
SLACK_USER_TOKEN=
# Optional: Session Token for User Impersonation (starts with xoxc-)
# Used for: Posting messages as a user (e.g., testing scripts)
# Warning: Session tokens are personal and should be kept secret
SLACK_XOXC_TOKEN=
# Optional: Session Token D-Cookie (starts with xoxd-)
# Used with SLACK_XOXC_TOKEN for browser-authenticated requests
# Get from: Browser Storage > Cookies (web.slack.com)
SLACK_XOXD_TOKEN=
# Optional: Channel ID for Message Posting
# Used for: Scripts that post messages to a specific channel
# Format: C followed by alphanumeric (e.g., C0A22MB87HJ)
SLACK_CHANNEL_ID=
# Optional: Team/Workspace ID
# Used for: Session token authentication (required for user impersonation)
# Format: T followed by alphanumeric (e.g., TGVLNUB2S)
# Get from: Browser console: window.slackData.team_id
SLACK_TEAM_ID=
# Optional: Slack Organization URL
# Used for: API endpoints in messaging scripts
# Format: https://your-workspace.slack.com
# Example: https://johnnyhuy.slack.com
SLACK_ORG_URL=
# Optional: OAuth Credentials (for OAuth flow)
# Used for: Installing the app via OAuth
SLACK_CLIENT_ID=
SLACK_CLIENT_SECRET=
# ============================================================================
# Terraform Configuration
# ============================================================================
# Terraform Cloud organization and workspace
TF_CLOUD_ORGANIZATION=
TF_WORKSPACE=wingman
# Terraform Cloud authentication token
# Get from: https://app.terraform.io/app/settings/tokens
TF_TOKEN_app_terraform_io=
# Slack App Configuration tokens (for Terraform manifest management)
# Used by Terraform to manage Slack app manifest
SLACK_APP_CONFIGURATION_TOKEN=
SLACK_REFRESH_TOKEN=
# ============================================================================
# AI/LLM Configuration
# ============================================================================
# Option 1: OpenRouter (Recommended)
# Get your API key from: https://openrouter.ai/keys
OPENROUTER_API_KEY=sk-or-your-openrouter-key-here
# Option 2: OpenAI (Alternative)
# Get your API key from: https://platform.openai.com/api-keys
OPENAI_API_KEY=
# LLM Model to use
# OpenRouter format: "openai/gpt-4-turbo-preview", "anthropic/claude-3-opus"
# OpenAI format: "gpt-4-turbo-preview", "gpt-3.5-turbo"
LLM_MODEL=openai/gpt-4.1
# LLM Settings
LLM_TEMPERATURE=0.7
LLM_MAX_TOKENS=2000
# ============================================================================
# Database Configuration
# ============================================================================
# PostgreSQL connection (docker-compose handles this automatically)
DATABASE_URL=postgresql://wingman:wingman@postgres:5432/wingman
# For local development outside Docker:
# DATABASE_URL=postgresql://wingman:wingman@localhost:5432/wingman
# ============================================================================
# Vector Store Configuration
# ============================================================================
# Chroma settings (docker-compose handles this automatically)
CHROMA_HOST=chroma
CHROMA_PORT=8000
CHROMA_COLLECTION=slack_messages
# For local development outside Docker:
# CHROMA_HOST=localhost
# CHROMA_PORT=8001
# ============================================================================
# RAG Configuration
# ============================================================================
# Embedding model for vector search
EMBEDDING_MODEL=text-embedding-ada-002
# Text chunking settings
CHUNK_SIZE=1000
CHUNK_OVERLAP=200
# Retrieval settings
RETRIEVAL_TOP_K=5
# Optional inclusive cutoff for raw Chroma distance (lower is closer).
# Leave unset to keep all top-k matches. Calibrate against your own embeddings.
# RETRIEVAL_MAX_DISTANCE=0.5
# ============================================================================
# Operator Rules (deterministic canned answers, checked before RAG)
# ============================================================================
# Inline JSON list of rules. Each rule needs an id, keywords and a response.
# Optional per rule: match_type (contains, exact or regex), priority, enabled.
# Example: [{"id":"vpn-reset","keywords":["reset vpn"],"response":"Use the IT portal to reset VPN access."}]
OPERATOR_RULES_JSON=
# Or a path to a JSON file with the same list shape. Wins over the inline value.
OPERATOR_RULES_FILE=
# ============================================================================
# Application Configuration
# ============================================================================
# Debug mode (set to true for development)
DEBUG=false
# Server settings
HOST=0.0.0.0
PORT=8000
# Frontend API URL
NEXT_PUBLIC_API_URL=http://localhost:8000
# Logging (structured JSON wide events to stdout; see docs/logging.md)
LOG_LEVEL=INFO
LOG_FORMAT=json
ENVIRONMENT=development
LOG_WIDE_EVENT_SAMPLE_RATE=1.0
LOG_SLOW_MS=1000
# Pi Durable (set the same strong random token for Python and the runtime)
PI_RUNTIME_TOKEN=replace-with-a-random-local-secret
# Local development URL; Compose overrides this with http://runtime:8002
PI_RUNTIME_URL=http://localhost:8002
PI_WAIT_TIMEOUT_SECONDS=180
# Optional direct MiMo Singapore token plan (overrides automatic provider selection)
# PI_PROVIDER=mimo
# LLM_MODEL=mimo-v2.6-flash
# XIAOMI_TOKEN_PLAN_SGP_API_KEY=