mercury-agent 0.5.0 → 0.5.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +452 -451
- package/container/Dockerfile +127 -127
- package/container/Dockerfile.base +109 -109
- package/container/Dockerfile.power +17 -17
- package/container/agent-package.json +8 -8
- package/container/build.sh +54 -54
- package/docs/ROADMAP.md +3 -4
- package/docs/archive/summarization/2026-07-02-recent-dev-summary.md +71 -0
- package/docs/auth/dashboard.md +28 -28
- package/docs/auth/overview.md +109 -109
- package/docs/auth/whatsapp.md +173 -173
- package/docs/authoring-profiles.md +174 -174
- package/docs/configuration.md +54 -54
- package/docs/container-lifecycle.md +349 -349
- package/docs/{bugs/bwrap-privileged-linux-docker.md → debug/major/2026-07-02-bwrap-privileged-linux-docker.md} +21 -1
- package/docs/{bugs/e2big-prompt-delivery-fix.md → debug/major/2026-07-02-e2big-prompt-delivery-fix.md} +27 -1
- package/docs/{bugs/registry-pull-no-local-fallback.md → debug/major/2026-07-02-registry-pull-no-local-fallback.md} +27 -1
- package/docs/debug/summarization/2026-07-02-common-bug-patterns.md +72 -0
- package/docs/deployment.md +199 -199
- package/docs/extensions.md +375 -375
- package/docs/graceful-shutdown.md +62 -62
- package/docs/kb-distillation.md +77 -77
- package/docs/media/overview.md +140 -140
- package/docs/media/whatsapp.md +171 -171
- package/docs/memory.md +137 -137
- package/docs/permissions.md +217 -217
- package/docs/pipeline.md +228 -228
- package/docs/prd-chat-memory.md +76 -76
- package/docs/prd-config-load.md +82 -82
- package/docs/rate-limiting.md +229 -229
- package/docs/runbooks/publish-checklist.md +9 -1
- package/docs/scheduler.md +288 -288
- package/docs/setup-discord.md +100 -100
- package/docs/setup-slack.md +119 -119
- package/docs/setup-whatsapp.md +94 -94
- package/docs/subagents.md +166 -166
- package/docs/web-search.md +62 -62
- package/examples/extensions/README.md +12 -12
- package/examples/extensions/charts/index.ts +13 -13
- package/examples/extensions/charts/skill/SKILL.md +98 -98
- package/examples/extensions/gws/README.md +52 -52
- package/examples/extensions/gws/skill/SKILL.md +57 -57
- package/examples/extensions/gws/skill/references/calendar.md +101 -101
- package/examples/extensions/gws/skill/references/docs.md +65 -65
- package/examples/extensions/gws/skill/references/drive.md +79 -79
- package/examples/extensions/gws/skill/references/gmail.md +85 -85
- package/examples/extensions/gws/skill/references/sheets.md +60 -60
- package/examples/extensions/napkin/skill/SKILL.md +728 -728
- package/examples/extensions/pdf/skill/LICENSE.txt +30 -30
- package/examples/extensions/pdf/skill/SKILL.md +314 -314
- package/examples/extensions/pdf/skill/forms.md +294 -294
- package/examples/extensions/pdf/skill/reference.md +611 -611
- package/examples/extensions/pdf/skill/scripts/check_bounding_boxes.py +65 -65
- package/examples/extensions/pdf/skill/scripts/check_fillable_fields.py +11 -11
- package/examples/extensions/pdf/skill/scripts/convert_pdf_to_images.py +33 -33
- package/examples/extensions/pdf/skill/scripts/create_validation_image.py +37 -37
- package/examples/extensions/pdf/skill/scripts/extract_form_field_info.py +122 -122
- package/examples/extensions/pdf/skill/scripts/extract_form_structure.py +115 -115
- package/examples/extensions/pdf/skill/scripts/fill_fillable_fields.py +98 -98
- package/examples/extensions/pdf/skill/scripts/fill_pdf_form_with_annotations.py +107 -107
- package/examples/extensions/permission-guard/index.ts +65 -65
- package/examples/extensions/pinchtab/skill/SKILL.md +224 -224
- package/examples/extensions/pinchtab/skill/TRUST.md +69 -69
- package/examples/extensions/pinchtab/skill/references/api.md +297 -297
- package/examples/extensions/pinchtab/skill/references/env.md +45 -45
- package/examples/extensions/pinchtab/skill/references/profiles.md +107 -107
- package/examples/extensions/tradestation/host/refresh.ts +102 -102
- package/examples/extensions/tradestation/index.ts +153 -153
- package/examples/extensions/tradestation/skill/SKILL.md +67 -67
- package/examples/extensions/voice-synth/index.ts +94 -94
- package/examples/extensions/voice-synth/skill/SKILL.md +38 -38
- package/examples/extensions/voice-transcribe/requirements.txt +8 -8
- package/examples/extensions/voice-transcribe/scripts/transcribe.py +179 -179
- package/examples/extensions/voice-transcribe/skill/SKILL.md +53 -53
- package/examples/extensions/yahoo-mail/cli/package.json +13 -13
- package/examples/extensions/yahoo-mail/skill/SKILL.md +78 -78
- package/package.json +106 -106
- package/resources/agents/explore.md +50 -50
- package/resources/agents/worker.md +24 -24
- package/resources/connection-env-vars.json +25 -25
- package/resources/pi-extensions/subagent/agents.ts +126 -126
- package/resources/pi-extensions/subagent/index.ts +964 -964
- package/resources/profiles/coding/AGENTS.md +43 -43
- package/resources/profiles/coding/mercury-profile.yaml +15 -15
- package/resources/profiles/general/AGENTS.md +31 -31
- package/resources/profiles/general/mercury-profile.yaml +15 -15
- package/resources/profiles/research/AGENTS.md +40 -40
- package/resources/profiles/research/mercury-profile.yaml +15 -15
- package/resources/skills/config/SKILL.md +25 -25
- package/resources/skills/context/SKILL.md +33 -33
- package/resources/skills/conversation-recap/SKILL.md +19 -19
- package/resources/skills/mutes/SKILL.md +31 -31
- package/resources/skills/permissions/SKILL.md +19 -19
- package/resources/skills/preferences/SKILL.md +31 -31
- package/resources/skills/recall/SKILL.md +24 -24
- package/resources/skills/roles/SKILL.md +18 -18
- package/resources/skills/spaces/SKILL.md +18 -18
- package/resources/skills/tasks/SKILL.md +45 -45
- package/resources/templates/AGENTS.md +157 -157
- package/resources/templates/env.template +38 -38
- package/resources/templates/mercury.example.yaml +99 -99
- package/src/agent/container-entry.ts +1 -1
- package/src/agent/container-runner.ts +1345 -1346
- package/src/cli/mercury.ts +39 -7
- package/src/cli/mrctl.ts +636 -636
- package/src/config-file.ts +540 -540
- package/src/config.ts +339 -339
- package/src/core/api.ts +125 -125
- package/src/core/caller-token.ts +101 -101
- package/src/core/permissions.ts +228 -228
- package/src/core/profiles.ts +271 -271
- package/src/core/routes/capability.ts +70 -70
- package/src/core/routes/index.ts +15 -15
- package/src/core/runtime.ts +1530 -1530
- package/src/dashboard/index.html +729 -729
- package/src/extensions/api.ts +273 -273
- package/src/extensions/loader.ts +286 -286
- package/src/extensions/types.ts +517 -517
- package/src/main.ts +605 -605
- package/docs/pending-updates/applicative-profiles.md +0 -15
- package/docs/pending-updates/caller-bound-capability-token.md +0 -15
- package/docs/pending-updates/dm-auto-space.md +0 -15
- /package/docs/archive/{2026-07-01-applicative-profiles.md → applicative-profiles/2026-07-01-applicative-profiles.md} +0 -0
- /package/docs/archive/{2026-07-01-caller-bound-capability-token.md → applicative-profiles/2026-07-01-caller-bound-capability-token.md} +0 -0
- /package/docs/archive/{2026-07-01-dm-auto-space.md → applicative-profiles/2026-07-01-dm-auto-space.md} +0 -0
package/docs/auth/whatsapp.md
CHANGED
|
@@ -1,173 +1,173 @@
|
|
|
1
|
-
# WhatsApp Authentication
|
|
2
|
-
|
|
3
|
-
Mercury connects to WhatsApp using the [Baileys](https://github.com/WhiskeySockets/Baileys) library, which implements the WhatsApp Web protocol. This means you need to link your WhatsApp account just like you would link WhatsApp Web.
|
|
4
|
-
|
|
5
|
-
## Initial Setup
|
|
6
|
-
|
|
7
|
-
### QR Code Mode (Recommended)
|
|
8
|
-
|
|
9
|
-
The simplest way to authenticate:
|
|
10
|
-
|
|
11
|
-
```bash
|
|
12
|
-
mercury auth whatsapp
|
|
13
|
-
```
|
|
14
|
-
|
|
15
|
-
This will:
|
|
16
|
-
1. Display a QR code in your terminal
|
|
17
|
-
2. Wait for you to scan it with WhatsApp
|
|
18
|
-
3. Save credentials to `.mercury/whatsapp-auth/`
|
|
19
|
-
4. Exit when authentication is complete
|
|
20
|
-
|
|
21
|
-
**To scan:**
|
|
22
|
-
1. Open WhatsApp on your phone
|
|
23
|
-
2. Tap **Settings → Linked Devices → Link a Device**
|
|
24
|
-
3. Point your camera at the QR code
|
|
25
|
-
|
|
26
|
-
### Pairing Code Mode
|
|
27
|
-
|
|
28
|
-
If you can't scan QR codes (e.g., running on a remote server), use pairing code mode:
|
|
29
|
-
|
|
30
|
-
```bash
|
|
31
|
-
mercury auth whatsapp --pairing-code --phone 14155551234
|
|
32
|
-
```
|
|
33
|
-
|
|
34
|
-
Replace `14155551234` with your phone number (country code + number, no `+` or spaces).
|
|
35
|
-
|
|
36
|
-
This will:
|
|
37
|
-
1. Request a pairing code from WhatsApp
|
|
38
|
-
2. Display an 8-character code
|
|
39
|
-
3. Wait for you to enter it on your phone
|
|
40
|
-
|
|
41
|
-
**To pair:**
|
|
42
|
-
1. Open WhatsApp on your phone
|
|
43
|
-
2. Tap **Settings → Linked Devices → Link a Device**
|
|
44
|
-
3. Tap **"Link with phone number instead"**
|
|
45
|
-
4. Enter the code shown in your terminal
|
|
46
|
-
|
|
47
|
-
## Session Lifecycle
|
|
48
|
-
|
|
49
|
-
### Session Duration
|
|
50
|
-
|
|
51
|
-
WhatsApp linked device sessions typically last **~14-20 days** before requiring re-authentication. This is controlled by WhatsApp, not Mercury.
|
|
52
|
-
|
|
53
|
-
Signs your session has expired:
|
|
54
|
-
- WhatsApp stops receiving messages
|
|
55
|
-
- Logs show `connection closed` with `loggedOut` reason
|
|
56
|
-
- Status file shows `failed:logged_out`
|
|
57
|
-
|
|
58
|
-
### Re-authentication
|
|
59
|
-
|
|
60
|
-
If your session expires:
|
|
61
|
-
|
|
62
|
-
1. **Stop Mercury** (if running):
|
|
63
|
-
```bash
|
|
64
|
-
# Ctrl+C in the terminal running mercury, or
|
|
65
|
-
pkill -f "bun.*chat-sdk"
|
|
66
|
-
```
|
|
67
|
-
|
|
68
|
-
2. **Delete old credentials**:
|
|
69
|
-
```bash
|
|
70
|
-
rm -rf .mercury/whatsapp-auth/
|
|
71
|
-
```
|
|
72
|
-
|
|
73
|
-
3. **Re-authenticate**:
|
|
74
|
-
```bash
|
|
75
|
-
mercury auth whatsapp
|
|
76
|
-
```
|
|
77
|
-
|
|
78
|
-
4. **Restart Mercury**:
|
|
79
|
-
```bash
|
|
80
|
-
mercury run
|
|
81
|
-
```
|
|
82
|
-
|
|
83
|
-
## Status Files
|
|
84
|
-
|
|
85
|
-
The auth script writes status files for external monitoring (useful for headless deployments):
|
|
86
|
-
|
|
87
|
-
| File | Description |
|
|
88
|
-
|------|-------------|
|
|
89
|
-
| `.mercury/whatsapp-status.txt` | Current status (`authenticated`, `waiting_qr`, `pairing_code:XXXX`, `failed:reason`) |
|
|
90
|
-
| `.mercury/whatsapp-qr.txt` | Raw QR data for external rendering (deleted after successful auth) |
|
|
91
|
-
|
|
92
|
-
### Status Values
|
|
93
|
-
|
|
94
|
-
- `authenticated` — Successfully connected
|
|
95
|
-
- `already_authenticated` — Existing valid session found
|
|
96
|
-
- `waiting_qr` — Waiting for QR code scan
|
|
97
|
-
- `pairing_code:XXXXXXXX` — Waiting for pairing code entry
|
|
98
|
-
- `failed:logged_out` — Session was logged out by WhatsApp
|
|
99
|
-
- `failed:qr_timeout` — QR code expired before scan
|
|
100
|
-
- `failed:515` — Stream error (usually recovers automatically)
|
|
101
|
-
- `failed:unknown` — Other connection failure
|
|
102
|
-
|
|
103
|
-
## Auth Status API Endpoint
|
|
104
|
-
|
|
105
|
-
When Mercury is running, you can check auth status via the API:
|
|
106
|
-
|
|
107
|
-
```bash
|
|
108
|
-
curl http://localhost:8787/auth/whatsapp
|
|
109
|
-
```
|
|
110
|
-
|
|
111
|
-
**Responses:**
|
|
112
|
-
|
|
113
|
-
```json
|
|
114
|
-
// Authenticated and connected
|
|
115
|
-
{ "status": "authenticated" }
|
|
116
|
-
|
|
117
|
-
// Waiting for QR scan (includes raw QR data)
|
|
118
|
-
{ "status": "waiting", "qr": "2@AbCdEf123..." }
|
|
119
|
-
|
|
120
|
-
// Disconnected or not yet connected
|
|
121
|
-
{ "status": "disconnected" }
|
|
122
|
-
```
|
|
123
|
-
|
|
124
|
-
This endpoint requires no authentication, making it suitable for headless monitoring dashboards.
|
|
125
|
-
|
|
126
|
-
## Troubleshooting
|
|
127
|
-
|
|
128
|
-
### "Already authenticated"
|
|
129
|
-
|
|
130
|
-
If you see this but WhatsApp isn't working:
|
|
131
|
-
```bash
|
|
132
|
-
rm -rf .mercury/whatsapp-auth/
|
|
133
|
-
mercury auth whatsapp
|
|
134
|
-
```
|
|
135
|
-
|
|
136
|
-
### QR code times out too quickly
|
|
137
|
-
|
|
138
|
-
WhatsApp QR codes expire after ~20 seconds. If you're having trouble:
|
|
139
|
-
1. Have your phone ready before running the command
|
|
140
|
-
2. Use `--pairing-code` mode instead
|
|
141
|
-
|
|
142
|
-
### "Stream error (515)"
|
|
143
|
-
|
|
144
|
-
This is usually transient and the auth script will automatically reconnect. If it persists:
|
|
145
|
-
```bash
|
|
146
|
-
rm -rf .mercury/whatsapp-auth/
|
|
147
|
-
mercury auth whatsapp
|
|
148
|
-
```
|
|
149
|
-
|
|
150
|
-
### WhatsApp shows "Linked Device" but Mercury doesn't receive messages
|
|
151
|
-
|
|
152
|
-
1. Check that `MERCURY_ENABLE_WHATSAPP=true` is set in `.env`
|
|
153
|
-
2. Check logs for connection errors
|
|
154
|
-
3. Try re-authenticating
|
|
155
|
-
|
|
156
|
-
### Messages from before startup appear
|
|
157
|
-
|
|
158
|
-
Mercury ignores messages that were sent before it connected to prevent processing old backlog. This is intentional.
|
|
159
|
-
|
|
160
|
-
## Environment Variables
|
|
161
|
-
|
|
162
|
-
| Variable | Default | Description |
|
|
163
|
-
|----------|---------|-------------|
|
|
164
|
-
| `MERCURY_ENABLE_WHATSAPP` | `false` | Enable WhatsApp adapter |
|
|
165
|
-
| `MERCURY_WHATSAPP_AUTH_DIR` | `.mercury/whatsapp-auth` | Directory for auth credentials |
|
|
166
|
-
| `MERCURY_DATA_DIR` | `.mercury` | Base data directory (auth dir is relative to this) |
|
|
167
|
-
|
|
168
|
-
## Security Notes
|
|
169
|
-
|
|
170
|
-
- Auth credentials in `.mercury/whatsapp-auth/` are sensitive — treat them like passwords
|
|
171
|
-
- Anyone with access to these files can impersonate your WhatsApp account
|
|
172
|
-
- The `/auth/whatsapp` endpoint is unauthenticated — only expose your API port to trusted networks
|
|
173
|
-
- Consider using a dedicated WhatsApp number for your bot
|
|
1
|
+
# WhatsApp Authentication
|
|
2
|
+
|
|
3
|
+
Mercury connects to WhatsApp using the [Baileys](https://github.com/WhiskeySockets/Baileys) library, which implements the WhatsApp Web protocol. This means you need to link your WhatsApp account just like you would link WhatsApp Web.
|
|
4
|
+
|
|
5
|
+
## Initial Setup
|
|
6
|
+
|
|
7
|
+
### QR Code Mode (Recommended)
|
|
8
|
+
|
|
9
|
+
The simplest way to authenticate:
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
mercury auth whatsapp
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
This will:
|
|
16
|
+
1. Display a QR code in your terminal
|
|
17
|
+
2. Wait for you to scan it with WhatsApp
|
|
18
|
+
3. Save credentials to `.mercury/whatsapp-auth/`
|
|
19
|
+
4. Exit when authentication is complete
|
|
20
|
+
|
|
21
|
+
**To scan:**
|
|
22
|
+
1. Open WhatsApp on your phone
|
|
23
|
+
2. Tap **Settings → Linked Devices → Link a Device**
|
|
24
|
+
3. Point your camera at the QR code
|
|
25
|
+
|
|
26
|
+
### Pairing Code Mode
|
|
27
|
+
|
|
28
|
+
If you can't scan QR codes (e.g., running on a remote server), use pairing code mode:
|
|
29
|
+
|
|
30
|
+
```bash
|
|
31
|
+
mercury auth whatsapp --pairing-code --phone 14155551234
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
Replace `14155551234` with your phone number (country code + number, no `+` or spaces).
|
|
35
|
+
|
|
36
|
+
This will:
|
|
37
|
+
1. Request a pairing code from WhatsApp
|
|
38
|
+
2. Display an 8-character code
|
|
39
|
+
3. Wait for you to enter it on your phone
|
|
40
|
+
|
|
41
|
+
**To pair:**
|
|
42
|
+
1. Open WhatsApp on your phone
|
|
43
|
+
2. Tap **Settings → Linked Devices → Link a Device**
|
|
44
|
+
3. Tap **"Link with phone number instead"**
|
|
45
|
+
4. Enter the code shown in your terminal
|
|
46
|
+
|
|
47
|
+
## Session Lifecycle
|
|
48
|
+
|
|
49
|
+
### Session Duration
|
|
50
|
+
|
|
51
|
+
WhatsApp linked device sessions typically last **~14-20 days** before requiring re-authentication. This is controlled by WhatsApp, not Mercury.
|
|
52
|
+
|
|
53
|
+
Signs your session has expired:
|
|
54
|
+
- WhatsApp stops receiving messages
|
|
55
|
+
- Logs show `connection closed` with `loggedOut` reason
|
|
56
|
+
- Status file shows `failed:logged_out`
|
|
57
|
+
|
|
58
|
+
### Re-authentication
|
|
59
|
+
|
|
60
|
+
If your session expires:
|
|
61
|
+
|
|
62
|
+
1. **Stop Mercury** (if running):
|
|
63
|
+
```bash
|
|
64
|
+
# Ctrl+C in the terminal running mercury, or
|
|
65
|
+
pkill -f "bun.*chat-sdk"
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
2. **Delete old credentials**:
|
|
69
|
+
```bash
|
|
70
|
+
rm -rf .mercury/whatsapp-auth/
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
3. **Re-authenticate**:
|
|
74
|
+
```bash
|
|
75
|
+
mercury auth whatsapp
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
4. **Restart Mercury**:
|
|
79
|
+
```bash
|
|
80
|
+
mercury run
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
## Status Files
|
|
84
|
+
|
|
85
|
+
The auth script writes status files for external monitoring (useful for headless deployments):
|
|
86
|
+
|
|
87
|
+
| File | Description |
|
|
88
|
+
|------|-------------|
|
|
89
|
+
| `.mercury/whatsapp-status.txt` | Current status (`authenticated`, `waiting_qr`, `pairing_code:XXXX`, `failed:reason`) |
|
|
90
|
+
| `.mercury/whatsapp-qr.txt` | Raw QR data for external rendering (deleted after successful auth) |
|
|
91
|
+
|
|
92
|
+
### Status Values
|
|
93
|
+
|
|
94
|
+
- `authenticated` — Successfully connected
|
|
95
|
+
- `already_authenticated` — Existing valid session found
|
|
96
|
+
- `waiting_qr` — Waiting for QR code scan
|
|
97
|
+
- `pairing_code:XXXXXXXX` — Waiting for pairing code entry
|
|
98
|
+
- `failed:logged_out` — Session was logged out by WhatsApp
|
|
99
|
+
- `failed:qr_timeout` — QR code expired before scan
|
|
100
|
+
- `failed:515` — Stream error (usually recovers automatically)
|
|
101
|
+
- `failed:unknown` — Other connection failure
|
|
102
|
+
|
|
103
|
+
## Auth Status API Endpoint
|
|
104
|
+
|
|
105
|
+
When Mercury is running, you can check auth status via the API:
|
|
106
|
+
|
|
107
|
+
```bash
|
|
108
|
+
curl http://localhost:8787/auth/whatsapp
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
**Responses:**
|
|
112
|
+
|
|
113
|
+
```json
|
|
114
|
+
// Authenticated and connected
|
|
115
|
+
{ "status": "authenticated" }
|
|
116
|
+
|
|
117
|
+
// Waiting for QR scan (includes raw QR data)
|
|
118
|
+
{ "status": "waiting", "qr": "2@AbCdEf123..." }
|
|
119
|
+
|
|
120
|
+
// Disconnected or not yet connected
|
|
121
|
+
{ "status": "disconnected" }
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
This endpoint requires no authentication, making it suitable for headless monitoring dashboards.
|
|
125
|
+
|
|
126
|
+
## Troubleshooting
|
|
127
|
+
|
|
128
|
+
### "Already authenticated"
|
|
129
|
+
|
|
130
|
+
If you see this but WhatsApp isn't working:
|
|
131
|
+
```bash
|
|
132
|
+
rm -rf .mercury/whatsapp-auth/
|
|
133
|
+
mercury auth whatsapp
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
### QR code times out too quickly
|
|
137
|
+
|
|
138
|
+
WhatsApp QR codes expire after ~20 seconds. If you're having trouble:
|
|
139
|
+
1. Have your phone ready before running the command
|
|
140
|
+
2. Use `--pairing-code` mode instead
|
|
141
|
+
|
|
142
|
+
### "Stream error (515)"
|
|
143
|
+
|
|
144
|
+
This is usually transient and the auth script will automatically reconnect. If it persists:
|
|
145
|
+
```bash
|
|
146
|
+
rm -rf .mercury/whatsapp-auth/
|
|
147
|
+
mercury auth whatsapp
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
### WhatsApp shows "Linked Device" but Mercury doesn't receive messages
|
|
151
|
+
|
|
152
|
+
1. Check that `MERCURY_ENABLE_WHATSAPP=true` is set in `.env`
|
|
153
|
+
2. Check logs for connection errors
|
|
154
|
+
3. Try re-authenticating
|
|
155
|
+
|
|
156
|
+
### Messages from before startup appear
|
|
157
|
+
|
|
158
|
+
Mercury ignores messages that were sent before it connected to prevent processing old backlog. This is intentional.
|
|
159
|
+
|
|
160
|
+
## Environment Variables
|
|
161
|
+
|
|
162
|
+
| Variable | Default | Description |
|
|
163
|
+
|----------|---------|-------------|
|
|
164
|
+
| `MERCURY_ENABLE_WHATSAPP` | `false` | Enable WhatsApp adapter |
|
|
165
|
+
| `MERCURY_WHATSAPP_AUTH_DIR` | `.mercury/whatsapp-auth` | Directory for auth credentials |
|
|
166
|
+
| `MERCURY_DATA_DIR` | `.mercury` | Base data directory (auth dir is relative to this) |
|
|
167
|
+
|
|
168
|
+
## Security Notes
|
|
169
|
+
|
|
170
|
+
- Auth credentials in `.mercury/whatsapp-auth/` are sensitive — treat them like passwords
|
|
171
|
+
- Anyone with access to these files can impersonate your WhatsApp account
|
|
172
|
+
- The `/auth/whatsapp` endpoint is unauthenticated — only expose your API port to trusted networks
|
|
173
|
+
- Consider using a dedicated WhatsApp number for your bot
|