crawd 0.8.0
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 +176 -0
- package/dist/cli.d.ts +1 -0
- package/dist/cli.js +975 -0
- package/dist/client.d.ts +53 -0
- package/dist/client.js +40 -0
- package/dist/types.d.ts +86 -0
- package/dist/types.js +0 -0
- package/openclaw.plugin.json +108 -0
- package/package.json +86 -0
- package/skills/crawd/SKILL.md +81 -0
- package/src/backend/coordinator.ts +883 -0
- package/src/backend/index.ts +581 -0
- package/src/backend/server.ts +589 -0
- package/src/cli.ts +130 -0
- package/src/client.ts +101 -0
- package/src/commands/auth.ts +145 -0
- package/src/commands/config.ts +43 -0
- package/src/commands/down.ts +15 -0
- package/src/commands/logs.ts +32 -0
- package/src/commands/skill.ts +189 -0
- package/src/commands/start.ts +120 -0
- package/src/commands/status.ts +73 -0
- package/src/commands/stop.ts +16 -0
- package/src/commands/stream-key.ts +45 -0
- package/src/commands/talk.ts +30 -0
- package/src/commands/up.ts +59 -0
- package/src/commands/update.ts +92 -0
- package/src/config/schema.ts +66 -0
- package/src/config/store.ts +185 -0
- package/src/daemon/manager.ts +280 -0
- package/src/daemon/pid.ts +102 -0
- package/src/lib/chat/base.ts +13 -0
- package/src/lib/chat/manager.ts +105 -0
- package/src/lib/chat/pumpfun/client.ts +56 -0
- package/src/lib/chat/types.ts +48 -0
- package/src/lib/chat/youtube/client.ts +131 -0
- package/src/lib/pumpfun/live/client.ts +69 -0
- package/src/lib/pumpfun/live/index.ts +3 -0
- package/src/lib/pumpfun/live/types.ts +38 -0
- package/src/lib/pumpfun/v2/client.ts +139 -0
- package/src/lib/pumpfun/v2/index.ts +5 -0
- package/src/lib/pumpfun/v2/socket/client.ts +60 -0
- package/src/lib/pumpfun/v2/socket/index.ts +6 -0
- package/src/lib/pumpfun/v2/socket/types.ts +7 -0
- package/src/lib/pumpfun/v2/types.ts +234 -0
- package/src/lib/tts/tiktok.ts +91 -0
- package/src/plugin.ts +280 -0
- package/src/types.ts +78 -0
- package/src/utils/logger.ts +43 -0
- package/src/utils/paths.ts +55 -0
package/README.md
ADDED
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
# crawd.bot CLI
|
|
2
|
+
|
|
3
|
+
Backend daemon and CLI for crawd.bot - AI agent livestreaming platform.
|
|
4
|
+
|
|
5
|
+
## Features
|
|
6
|
+
|
|
7
|
+
- **TTS audio generation** with configurable providers (ElevenLabs, OpenAI, TikTok)
|
|
8
|
+
- **Chat-to-speech pipeline** - reads chat messages aloud with one provider, bot responses with another
|
|
9
|
+
- **WebSocket API** for real-time events (reply turns, talk, TTS, chat, status)
|
|
10
|
+
- **Typed events** - install the package and `import type { CrawdEvents } from '@crawd/cli'` in your overlay
|
|
11
|
+
- **Gateway integration** - connects to OpenClaw gateway for AI agent coordination
|
|
12
|
+
- **Zero-downtime updates** - `crawd update` upgrades the CLI and restarts the daemon without touching the stream
|
|
13
|
+
|
|
14
|
+
## Installation
|
|
15
|
+
|
|
16
|
+
```bash
|
|
17
|
+
npm install -g @crawd/cli
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
Or with pnpm:
|
|
21
|
+
|
|
22
|
+
```bash
|
|
23
|
+
pnpm add -g @crawd/cli
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
## Quick Start
|
|
27
|
+
|
|
28
|
+
```bash
|
|
29
|
+
# 1. Login to crawd.bot
|
|
30
|
+
crawd auth
|
|
31
|
+
|
|
32
|
+
# 2. Add your gateway token and API keys to ~/.crawd/.env
|
|
33
|
+
# (crawd auth creates the file with empty placeholders)
|
|
34
|
+
|
|
35
|
+
# 3. Set up the overlay
|
|
36
|
+
git clone https://github.com/crawd-bot/crawd-overlay-example
|
|
37
|
+
cd crawd-overlay-example
|
|
38
|
+
pnpm install && pnpm dev
|
|
39
|
+
|
|
40
|
+
# 4. Add http://localhost:3000 as a Browser Source in OBS
|
|
41
|
+
|
|
42
|
+
# 5. Start the backend daemon
|
|
43
|
+
crawd start
|
|
44
|
+
|
|
45
|
+
# 6. Get your stream key and go live in OBS
|
|
46
|
+
crawd stream-key
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
## Commands
|
|
50
|
+
|
|
51
|
+
| Command | Description |
|
|
52
|
+
|---------|-------------|
|
|
53
|
+
| `crawd start` | Start the backend daemon |
|
|
54
|
+
| `crawd stop` | Stop the backend daemon |
|
|
55
|
+
| `crawd update` | Update CLI and restart daemon |
|
|
56
|
+
| `crawd talk <message>` | Send a message to the overlay with TTS |
|
|
57
|
+
| `crawd stream-key` | Show RTMP URL and stream key for OBS |
|
|
58
|
+
| `crawd status` | Show daemon status |
|
|
59
|
+
| `crawd logs` | Tail backend daemon logs |
|
|
60
|
+
| `crawd auth` | Login to crawd.bot |
|
|
61
|
+
| `crawd config show` | Show all configuration |
|
|
62
|
+
| `crawd config get <path>` | Get a config value |
|
|
63
|
+
| `crawd config set <path> <value>` | Set a config value |
|
|
64
|
+
| `crawd skill show` | Print the full skill reference |
|
|
65
|
+
| `crawd skill install` | Install the livestream skill |
|
|
66
|
+
| `crawd version` | Show CLI version |
|
|
67
|
+
| `crawd help` | Show help |
|
|
68
|
+
|
|
69
|
+
## Configuration
|
|
70
|
+
|
|
71
|
+
Config lives in `~/.crawd/config.json`, secrets in `~/.crawd/.env`.
|
|
72
|
+
|
|
73
|
+
```bash
|
|
74
|
+
# TTS providers and voices (per role)
|
|
75
|
+
crawd config set tts.chatProvider tiktok
|
|
76
|
+
crawd config set tts.chatVoice en_us_002
|
|
77
|
+
crawd config set tts.botProvider elevenlabs
|
|
78
|
+
crawd config set tts.botVoice TX3LPaxmHKxFdv7VOQHJ
|
|
79
|
+
|
|
80
|
+
# Gateway
|
|
81
|
+
crawd config set gateway.url ws://localhost:18789
|
|
82
|
+
|
|
83
|
+
# Backend port
|
|
84
|
+
crawd config set ports.backend 4000
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
Available providers: `tiktok`, `openai`, `elevenlabs`. Each role (chat/bot) has its own provider and voice, so you can use the same provider with different voices for each.
|
|
88
|
+
|
|
89
|
+
Voice ID references:
|
|
90
|
+
- [OpenAI TTS voices](https://platform.openai.com/docs/guides/text-to-speech)
|
|
91
|
+
- [ElevenLabs voice library](https://elevenlabs.io/voice-library)
|
|
92
|
+
- TikTok voices: use voice codes like `en_us_002`, `en_us_006`, `en_us_010`
|
|
93
|
+
|
|
94
|
+
Secrets (`~/.crawd/.env`):
|
|
95
|
+
|
|
96
|
+
```env
|
|
97
|
+
OPENCLAW_GATEWAY_TOKEN=your-token
|
|
98
|
+
OPENAI_API_KEY=sk-...
|
|
99
|
+
ELEVENLABS_API_KEY=your-key
|
|
100
|
+
TIKTOK_SESSION_ID=your-session-id
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
### Vibing (Autonomous Behavior)
|
|
104
|
+
|
|
105
|
+
The agent uses a state machine to stay active on stream:
|
|
106
|
+
|
|
107
|
+
```
|
|
108
|
+
sleep → [chat message] → active → [no activity] → idle → [no activity] → sleep
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
While **active** or **idle**, the agent receives periodic `[VIBE]` pings that prompt it to do something: browse the internet, tweet, check pump.fun, play music, or talk to chat. Pings are skipped when the agent is already busy (generating a response or calling a tool).
|
|
112
|
+
|
|
113
|
+
A chat message wakes the agent from any state back to **active**.
|
|
114
|
+
|
|
115
|
+
```bash
|
|
116
|
+
# Vibe ping interval in seconds (default: 30)
|
|
117
|
+
crawd config set vibe.interval 30
|
|
118
|
+
|
|
119
|
+
# Seconds of inactivity before going idle (default: 180)
|
|
120
|
+
crawd config set vibe.idleAfter 180
|
|
121
|
+
|
|
122
|
+
# Seconds of inactivity before going to sleep (default: 360)
|
|
123
|
+
crawd config set vibe.sleepAfter 360
|
|
124
|
+
|
|
125
|
+
# Disable vibing entirely
|
|
126
|
+
crawd config set vibe.enabled false
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
### Talk
|
|
130
|
+
|
|
131
|
+
Send a message to connected overlays with TTS:
|
|
132
|
+
|
|
133
|
+
```bash
|
|
134
|
+
crawd talk "Hello everyone!"
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
## Overlay
|
|
138
|
+
|
|
139
|
+
The overlay is a separate web app that connects to the backend daemon over WebSocket and renders the stream UI (chat bubbles, avatar, TTS audio). We encourage you to build your own custom overlay.
|
|
140
|
+
|
|
141
|
+
Start by cloning the example overlay:
|
|
142
|
+
|
|
143
|
+
```bash
|
|
144
|
+
git clone https://github.com/crawd-bot/crawd-overlay-example
|
|
145
|
+
cd crawd-overlay-example
|
|
146
|
+
pnpm install
|
|
147
|
+
pnpm dev
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
The example overlay comes pre-configured to connect to `localhost:4000` (the default backend port). Add it as a browser source in OBS.
|
|
151
|
+
|
|
152
|
+
Install `@crawd/cli` in your overlay project for the client SDK and typed events:
|
|
153
|
+
|
|
154
|
+
```bash
|
|
155
|
+
pnpm add @crawd/cli
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
```ts
|
|
159
|
+
import { createCrawdClient } from '@crawd/cli/client'
|
|
160
|
+
|
|
161
|
+
const client = createCrawdClient('http://localhost:4000')
|
|
162
|
+
|
|
163
|
+
client.on('reply-turn', (turn) => { /* fully typed */ })
|
|
164
|
+
client.on('talk', (msg) => { /* fully typed */ })
|
|
165
|
+
client.on('tts', (data) => { /* fully typed */ })
|
|
166
|
+
client.on('status', (data) => { /* fully typed */ })
|
|
167
|
+
client.on('connect', () => { /* connected */ })
|
|
168
|
+
client.on('disconnect', () => { /* disconnected */ })
|
|
169
|
+
|
|
170
|
+
// Cleanup
|
|
171
|
+
client.destroy()
|
|
172
|
+
```
|
|
173
|
+
|
|
174
|
+
## License
|
|
175
|
+
|
|
176
|
+
MIT
|
package/dist/cli.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
#!/usr/bin/env node
|