clisbot 0.1.9 → 0.1.13
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 +148 -202
- package/dist/main.js +11641 -8391
- package/package.json +1 -1
- package/templates/customized/README.md +2 -0
- package/templates/customized/default/LOOP.md +17 -0
- package/templates/customized/personal-assistant/GEMINI.md +136 -0
- package/templates/customized/team-assistant/GEMINI.md +137 -0
- package/templates/slack/default/app-manifest.json +80 -0
package/README.md
CHANGED
|
@@ -1,103 +1,87 @@
|
|
|
1
1
|
# clisbot - Agentic Coding CLI & chat bot
|
|
2
|
-
|
|
2
|
+
Want to use OpenClaw but are struggling because:
|
|
3
3
|
|
|
4
|
-
|
|
4
|
+
- API cost is too high, so you end up looking for LLM proxy workarounds
|
|
5
|
+
- you have to switch between OpenClaw for daily work and Claude / Codex / Gemini for real coding
|
|
6
|
+
- you want to code on the go and work on the go
|
|
5
7
|
|
|
6
|
-
|
|
8
|
+
`clisbot` is the right solution for you.
|
|
7
9
|
|
|
8
|
-
|
|
10
|
+
`clisbot` turns native frontier agent CLIs like Claude Code, Codex, and Gemini CLI into durable Slack and Telegram bots. Each agent runs inside its own tmux session, keeps a real workspace, and can behave like a coding bot, a daily-work assistant, or a team assistant with SOUL, IDENTITY, and MEMORY.
|
|
9
11
|
|
|
10
|
-
|
|
12
|
+
It is a cheaper, simpler path to frontier agent workflows for teams and individuals because it reuses the CLI subscriptions you already have instead of forcing a separate API-heavy stack. If you already trust Claude Code, Codex, or Gemini CLI for real work, `clisbot` lets you keep those tools as the core runtime and add chat surfaces, follow-up control, team workflows, and on-the-go access around them.
|
|
11
13
|
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
## Important caution
|
|
15
|
-
|
|
16
|
-
Strong vendor investment in security and safety does not make frontier agentic CLI tools inherently safe. `clisbot` exposes those tools more broadly through chat and workflow surfaces, so you should treat the whole system as high-trust software and use it at your own risk.
|
|
17
|
-
|
|
18
|
-
## Acknowledgements
|
|
19
|
-
|
|
20
|
-
`clisbot` would not exist without the ideas, momentum, and practical inspiration created by OpenClaw. Many configuration, routing, and workspace concepts here were learned from studying OpenClaw, then adapted to `clisbot`'s own direction. Respect and thanks to the OpenClaw project and community.
|
|
14
|
+
`clisbot` is also meant to grow into a reusable agent runtime layer that can support many CLI tools, many channels, and many workflow shapes on top of the same durable agent session.
|
|
21
15
|
|
|
22
16
|
## Why clisbot
|
|
23
17
|
|
|
24
|
-
-
|
|
25
|
-
-
|
|
26
|
-
-
|
|
27
|
-
- Team-first by design, with
|
|
28
|
-
-
|
|
29
|
-
- Useful
|
|
30
|
-
- Strong team support in Slack, with Telegram already supported as another first-class channel.
|
|
31
|
-
- Configurable follow-up policy instead of a fixed TTL model, with a 5-minute default window and route-level controls so teams can tune behavior to how they actually work. Smart follow-up controls help avoid unwanted bot interruption in active threads: keep natural continuation when useful, or pause it when you want the bot to stay quiet until explicitly called again.
|
|
32
|
-
- Fast operator shortcuts for shell execution: `!<command>` or `/bash <command>`, plus slash-prefix mappings such as `\bash` or `::bash` when Slack slash-command handling is incompatible. Turns Slack / Telegram into a terminal interface on the go.
|
|
33
|
-
- The proof of concept already shows high potential beyond internal coding workflows, including customer chatbot use cases once messaging MCP or CLI-based skills let the agent send messages proactively in a cleaner way.
|
|
34
|
-
|
|
35
|
-
## Current Focus
|
|
36
|
-
|
|
37
|
-
`clisbot` is growing toward a broader agent runtime layer:
|
|
38
|
-
|
|
39
|
-
- more CLI tool support beyond Claude Code and Codex, including Gemini CLI, OpenCode, Qwen, Kilo, and other agentic CLIs
|
|
40
|
-
- more communication channels beyond Slack and Telegram, including Zalo, WhatsApp, Facebook, Discord, and future API-compatible surfaces
|
|
41
|
-
- simple workflow building blocks such as cronjobs, heartbeat jobs, lightweight Ralph-style loops, and prompt combinations that just work
|
|
42
|
-
- durable agent sessions, workspaces, follow-up policy, commands, attachments, and operator controls that stay reusable across all those surfaces
|
|
43
|
-
|
|
44
|
-
tmux is still the current stability boundary. One agent maps to one durable runner session in one workspace, and every CLI, channel, or workflow layer should route onto that durable runtime instead of recreating the agent from scratch.
|
|
45
|
-
|
|
46
|
-
## Showcase
|
|
47
|
-
|
|
48
|
-
Slack
|
|
49
|
-
|
|
50
|
-

|
|
51
|
-
|
|
52
|
-
Telegram
|
|
18
|
+
- One frontier-agent stack for both daily work and real coding. You do not need one product for assistant work and another for actual engineering work.
|
|
19
|
+
- Reuses native CLI subscriptions you already pay for, such as Claude Code, Codex, and Gemini CLI, instead of pushing you toward a separate API-cost-heavy stack.
|
|
20
|
+
- Strong chat-first support in Slack and Telegram, with durable tmux-backed sessions behind the bot, so you can work from your laptop or on the go without giving up a real coding workspace.
|
|
21
|
+
- Team-first by design, with `AGENTS`, `USER`, and `MEMORY` context bootstrapping shaped for shared team reality instead of only personal solo-assistant flows.
|
|
22
|
+
- Compatible with OpenClaw-style ideas where useful, but centered on native coding agents, team workflows, and practical operator control.
|
|
23
|
+
- Useful for coding, operations, teamwork, and general assistant work, with fast shell shortcuts such as `!<command>` and `/bash <command>` when you need terminal-like control from chat.
|
|
53
24
|
|
|
54
|
-
|
|
25
|
+
## What to expect
|
|
55
26
|
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
27
|
+
- You can get the first Telegram bot running in one command.
|
|
28
|
+
- The first-run path creates one default agent and only enables the channels you explicitly name.
|
|
29
|
+
- DMs start with pairing so access stays explicit.
|
|
30
|
+
- `--persist` lets later restarts use plain `clisbot start`.
|
|
31
|
+
- Advanced multi-agent setup is available later, but it is not required for day one.
|
|
59
32
|
|
|
60
33
|
## Quick Start
|
|
61
34
|
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
Packaged CLI path:
|
|
65
|
-
|
|
66
|
-
Requires Node 20+ in the shell where you run `clisbot`.
|
|
67
|
-
|
|
68
|
-
Primary command: `clisbot`
|
|
69
|
-
Short alias: `clis`
|
|
70
|
-
|
|
71
|
-
1. Install globally:
|
|
35
|
+
Most people should start here:
|
|
72
36
|
|
|
73
37
|
```bash
|
|
74
38
|
npm install -g clisbot
|
|
39
|
+
clisbot start \
|
|
40
|
+
--cli codex \
|
|
41
|
+
--bot-type personal \
|
|
42
|
+
--telegram-bot-token <your-telegram-bot-token> \
|
|
43
|
+
--persist
|
|
75
44
|
```
|
|
76
45
|
|
|
77
|
-
|
|
46
|
+
If you want to try first without persisting the token yet, just remove `--persist`.
|
|
47
|
+
|
|
48
|
+
What happens next:
|
|
49
|
+
|
|
50
|
+
- `--bot-type personal` creates one assistant for one human
|
|
51
|
+
- `--bot-type team` creates one shared assistant for a team, channel, or group workflow
|
|
52
|
+
- literal token input stays in memory unless you also pass `--persist`
|
|
53
|
+
- `--persist` promotes the token into the canonical credential file so the next `clisbot start` can reuse it without retyping
|
|
54
|
+
- fresh bootstrap only enables the channels you name explicitly
|
|
55
|
+
- after the persisted first run, later restarts can use plain `clisbot start`
|
|
56
|
+
|
|
57
|
+
If you prefer Slack first:
|
|
78
58
|
|
|
79
59
|
```bash
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
60
|
+
clisbot start \
|
|
61
|
+
--cli codex \
|
|
62
|
+
--bot-type team \
|
|
63
|
+
--slack-app-token SLACK_APP_TOKEN \
|
|
64
|
+
--slack-bot-token SLACK_BOT_TOKEN
|
|
84
65
|
```
|
|
85
66
|
|
|
67
|
+
Short alias:
|
|
68
|
+
|
|
86
69
|
```bash
|
|
87
|
-
|
|
88
|
-
# or: source ~/.bashrc
|
|
70
|
+
clis start --cli codex --bot-type personal --telegram-bot-token <your-telegram-bot-token>
|
|
89
71
|
```
|
|
90
72
|
|
|
91
|
-
|
|
73
|
+
Local repo path:
|
|
92
74
|
|
|
93
75
|
```bash
|
|
94
|
-
|
|
95
|
-
|
|
76
|
+
bun install
|
|
77
|
+
bun run start --cli codex --bot-type personal --telegram-bot-token <your-telegram-bot-token> --persist
|
|
96
78
|
```
|
|
97
79
|
|
|
98
|
-
|
|
80
|
+
First conversation path:
|
|
99
81
|
|
|
100
|
-
|
|
82
|
+
- send a DM to the bot in Slack or Telegram
|
|
83
|
+
- `clisbot` defaults DMs to pairing mode
|
|
84
|
+
- the bot replies with a pairing code and approval command
|
|
101
85
|
|
|
102
86
|
Approve it with:
|
|
103
87
|
|
|
@@ -106,78 +90,62 @@ clisbot pairing approve slack <CODE>
|
|
|
106
90
|
clisbot pairing approve telegram <CODE>
|
|
107
91
|
```
|
|
108
92
|
|
|
109
|
-
|
|
93
|
+
Fresh config starts with no configured agents, so first-run `clisbot start` requires both `--cli` and `--bot-type` before it creates the first `default` agent.
|
|
94
|
+
Fresh config also starts with no preconfigured Slack channels or Telegram groups or topics. Add those routes manually in `~/.clisbot/clisbot.json`.
|
|
95
|
+
`clisbot start` requires explicit channel token input before it bootstraps anything. You can pass raw values, env names such as `MY_TELEGRAM_BOT_TOKEN`, or placeholders such as `'${MY_TELEGRAM_BOT_TOKEN}'`.
|
|
96
|
+
If you want a separate dev instance beside your main bot, see the [Development Guide](docs/development/README.md).
|
|
110
97
|
|
|
111
|
-
|
|
98
|
+
Gemini note:
|
|
112
99
|
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
Local repo path:
|
|
100
|
+
- `clisbot` supports Gemini CLI as a routed runner target
|
|
101
|
+
- Gemini still needs its own reusable auth before routed prompts can succeed
|
|
102
|
+
- for headless or detached use, prefer `GEMINI_API_KEY` or Vertex AI credentials, or log in once directly with `gemini`
|
|
118
103
|
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
1. Install dependencies.
|
|
104
|
+
## Showcase
|
|
122
105
|
|
|
123
|
-
|
|
124
|
-
bun install
|
|
125
|
-
```
|
|
106
|
+
Slack
|
|
126
107
|
|
|
127
|
-
|
|
108
|
+

|
|
128
109
|
|
|
129
|
-
|
|
130
|
-
# ~/.zshrc or ~/.bashrc
|
|
131
|
-
export SLACK_APP_TOKEN=...
|
|
132
|
-
export SLACK_BOT_TOKEN=...
|
|
133
|
-
export TELEGRAM_BOT_TOKEN=...
|
|
134
|
-
```
|
|
110
|
+
Telegram
|
|
135
111
|
|
|
136
|
-
|
|
137
|
-
source ~/.zshrc
|
|
138
|
-
# or: source ~/.bashrc
|
|
139
|
-
```
|
|
112
|
+

|
|
140
113
|
|
|
141
|
-
|
|
114
|
+

|
|
142
115
|
|
|
143
|
-
|
|
144
|
-
bun run start --cli codex --bootstrap personal-assistant
|
|
145
|
-
```
|
|
116
|
+

|
|
146
117
|
|
|
147
|
-
|
|
118
|
+
## Important caution
|
|
148
119
|
|
|
149
|
-
`clisbot`
|
|
120
|
+
Strong vendor investment in security and safety does not make frontier agentic CLI tools inherently safe. `clisbot` exposes those tools more broadly through chat and workflow surfaces, so you should treat the whole system as high-trust software and use it at your own risk.
|
|
150
121
|
|
|
151
|
-
|
|
122
|
+
## Acknowledgements
|
|
152
123
|
|
|
153
|
-
|
|
154
|
-
bun run pairing -- approve slack <CODE>
|
|
155
|
-
bun run pairing -- approve telegram <CODE>
|
|
156
|
-
```
|
|
124
|
+
`clisbot` would not exist without the ideas, momentum, and practical inspiration created by OpenClaw. Many configuration, routing, and workspace concepts here were learned from studying OpenClaw, then adapted to `clisbot`'s own direction. Respect and thanks to the OpenClaw project and community.
|
|
157
125
|
|
|
158
|
-
|
|
126
|
+
## Setup Guide
|
|
159
127
|
|
|
160
|
-
|
|
161
|
-
Fresh config also starts with no preconfigured Slack channels or Telegram groups/topics. Add those routes manually in `~/.clisbot/clisbot.json`.
|
|
162
|
-
`clisbot start` now also requires Slack or Telegram token references before it bootstraps anything. By default it looks for `SLACK_APP_TOKEN`, `SLACK_BOT_TOKEN`, and `TELEGRAM_BOT_TOKEN`, but you can pass custom placeholders such as `--slack-app-token '${CUSTOM_SLACK_APP_TOKEN}'`.
|
|
163
|
-
On startup, `clisbot` now prints which token env names it is checking and whether each one is set or missing.
|
|
128
|
+
The easiest setup flow is still:
|
|
164
129
|
|
|
165
|
-
|
|
130
|
+
1. Install `clisbot`.
|
|
131
|
+
2. Run the quick start command above.
|
|
132
|
+
3. DM the bot and approve pairing.
|
|
133
|
+
4. Only move into advanced config after the first successful run.
|
|
166
134
|
|
|
167
|
-
|
|
135
|
+
If you want the repo-guided setup path:
|
|
168
136
|
|
|
169
137
|
1. Clone this repo.
|
|
170
|
-
2. Open Claude Code or
|
|
138
|
+
2. Open Claude Code, Codex, or Gemini CLI in this repo.
|
|
171
139
|
3. Ask it to help you set up `clisbot`.
|
|
172
140
|
|
|
173
141
|
The docs in this repo are kept current, including the [User Guide](docs/user-guide/README.md), so the agent should have enough context to walk you through setup, configuration, and troubleshooting directly inside the repo.
|
|
174
142
|
|
|
175
|
-
If you prefer to configure
|
|
143
|
+
If you prefer to configure everything yourself:
|
|
176
144
|
|
|
177
145
|
1. Read the full config template in [config/clisbot.json.template](config/clisbot.json.template).
|
|
178
146
|
2. Copy it to `~/.clisbot/clisbot.json` and adjust channels, bindings, workspaces, and policies for your environment.
|
|
179
147
|
3. Add agents through the CLI so tool defaults, startup options, and bootstrap templates stay consistent.
|
|
180
|
-
4.
|
|
148
|
+
4. Optionally move stable channel secrets into env vars or canonical credential files after your first successful run.
|
|
181
149
|
|
|
182
150
|
Channel route setup is manual by design:
|
|
183
151
|
|
|
@@ -186,88 +154,39 @@ Channel route setup is manual by design:
|
|
|
186
154
|
- add only the exact channel, group, topic, or DM routing you want to expose
|
|
187
155
|
- default channel account setup lives in [docs/user-guide/channel-accounts.md](docs/user-guide/channel-accounts.md)
|
|
188
156
|
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
```bash
|
|
192
|
-
clisbot start --cli codex --bootstrap personal-assistant
|
|
193
|
-
```
|
|
194
|
-
|
|
195
|
-
```bash
|
|
196
|
-
clisbot agents add claude --cli claude --bootstrap team-assistant --bind telegram
|
|
197
|
-
clisbot agents bootstrap claude --mode team-assistant --force
|
|
198
|
-
clisbot agents list --bindings
|
|
199
|
-
```
|
|
200
|
-
|
|
201
|
-
Agent setup rules:
|
|
157
|
+
Advanced agent management:
|
|
202
158
|
|
|
203
|
-
-
|
|
204
|
-
-
|
|
205
|
-
-
|
|
206
|
-
- `
|
|
207
|
-
- `agents bootstrap <agentId> --mode <personal-assistant|team-assistant>` bootstraps an existing agent workspace using the agent's configured CLI tool.
|
|
208
|
-
- bootstrap runs a dry check first; if any template markdown file already exists in the workspace, it stops and asks you to rerun with `--force`.
|
|
209
|
-
- Fresh channel config still points at the `default` agent. If your first agent is not named `default`, update `defaultAgentId` and any route `agentId` values in config.
|
|
159
|
+
- most users should stay on `clisbot start --cli ... --bot-type ...` and let first-run create the default agent
|
|
160
|
+
- if you need more than one agent, custom bindings, or manual workspace bootstrap flows, use the `clisbot agents ...` commands described in [docs/user-guide/README.md](docs/user-guide/README.md)
|
|
161
|
+
- README intentionally keeps that low-level surface out of the main onboarding path because the public first-run model is `--bot-type personal|team`, not internal template-mode naming
|
|
162
|
+
- fresh channel config still points at the `default` agent; if your first agent uses another id, update `defaultAgentId` and any route `agentId` values in config
|
|
210
163
|
|
|
211
|
-
|
|
164
|
+
Env-backed setup is still supported when you want config to reference an env name instead of persisting a credential file:
|
|
212
165
|
|
|
213
166
|
```bash
|
|
214
167
|
clisbot start \
|
|
215
168
|
--cli codex \
|
|
216
|
-
--
|
|
169
|
+
--bot-type personal \
|
|
217
170
|
--slack-app-token CUSTOM_SLACK_APP_TOKEN \
|
|
218
171
|
--slack-bot-token CUSTOM_SLACK_BOT_TOKEN
|
|
219
172
|
```
|
|
220
173
|
|
|
221
|
-
- these flags are written into `~/.clisbot/clisbot.json`
|
|
174
|
+
- these flags are written into `~/.clisbot/clisbot.json` as `${ENV_NAME}` placeholders
|
|
222
175
|
- you can pass either `CUSTOM_SLACK_APP_TOKEN` or `'${CUSTOM_SLACK_APP_TOKEN}'`
|
|
223
|
-
-
|
|
224
|
-
-
|
|
225
|
-
- the env var itself still needs a real value in your shell before `clisbot start` can launch
|
|
226
|
-
|
|
227
|
-
Examples:
|
|
228
|
-
|
|
229
|
-
```bash
|
|
230
|
-
# ~/.bashrc
|
|
231
|
-
export SLACK_APP_TOKEN=...
|
|
232
|
-
export SLACK_BOT_TOKEN=...
|
|
233
|
-
export TELEGRAM_BOT_TOKEN=...
|
|
234
|
-
```
|
|
235
|
-
|
|
236
|
-
```bash
|
|
237
|
-
# ~/.zshrc
|
|
238
|
-
export SLACK_APP_TOKEN=...
|
|
239
|
-
export SLACK_BOT_TOKEN=...
|
|
240
|
-
export TELEGRAM_BOT_TOKEN=...
|
|
241
|
-
```
|
|
242
|
-
|
|
243
|
-
```bash
|
|
244
|
-
# custom names are also valid
|
|
245
|
-
export CUSTOM_SLACK_APP_TOKEN=...
|
|
246
|
-
export CUSTOM_SLACK_BOT_TOKEN=...
|
|
247
|
-
export CUSTOM_TELEGRAM_BOT_TOKEN=...
|
|
248
|
-
```
|
|
249
|
-
|
|
250
|
-
Then reload your shell:
|
|
251
|
-
|
|
252
|
-
```bash
|
|
253
|
-
source ~/.bashrc
|
|
254
|
-
```
|
|
255
|
-
|
|
256
|
-
```bash
|
|
257
|
-
source ~/.zshrc
|
|
258
|
-
```
|
|
176
|
+
- use this path when you want config to point at env variable names you chose yourself
|
|
177
|
+
- keep env export details in [docs/user-guide/channel-accounts.md](docs/user-guide/channel-accounts.md) instead of front-loading them into quick start
|
|
259
178
|
|
|
260
179
|
## Troubleshooting
|
|
261
180
|
|
|
262
|
-
|
|
263
|
-
|
|
181
|
+
If the quick start does not work, check these in order:
|
|
182
|
+
|
|
183
|
+
- If setup feels unclear, open Claude Code, Codex, or Gemini CLI in this repo and ask it to help using the local docs.
|
|
264
184
|
- If config behavior is confusing, inspect [config/clisbot.json.template](config/clisbot.json.template) first, then compare it with [docs/user-guide/README.md](docs/user-guide/README.md).
|
|
265
|
-
- If `clisbot start` says no agents are configured, prefer `clisbot start --cli codex --
|
|
266
|
-
- If
|
|
267
|
-
- If `clisbot start` prints token refs as `missing`,
|
|
185
|
+
- If `clisbot start` says no agents are configured, prefer `clisbot start --cli codex --bot-type personal --telegram-bot-token <your-telegram-bot-token>`.
|
|
186
|
+
- If you want later runs to work with plain `clisbot start`, rerun your successful first-run command with `--persist`.
|
|
187
|
+
- If `clisbot start` prints token refs as `missing`, either pass the token explicitly on the command line or switch to env-backed setup described in [docs/user-guide/channel-accounts.md](docs/user-guide/channel-accounts.md).
|
|
268
188
|
- If you use custom env names, pass them explicitly with `--slack-app-token`, `--slack-bot-token`, or `--telegram-bot-token`.
|
|
269
|
-
- If `clisbot status` shows `bootstrap=...:missing
|
|
270
|
-
- If `clisbot status` shows `bootstrap=...:not-bootstrapped`, finish the workspace bootstrap by reviewing `BOOTSTRAP.md`, `SOUL.md`, `IDENTITY.md`, and the mode-specific files in that workspace.
|
|
189
|
+
- If `clisbot status` shows `bootstrap=...:missing` or `bootstrap=...:not-bootstrapped`, follow the advanced agent bootstrap steps in [docs/user-guide/README.md](docs/user-guide/README.md).
|
|
271
190
|
- If Codex shows `Do you trust the contents of this directory?`, keep `trustWorkspace: true` in clisbot config and also mark the workspace as trusted in `~/.codex/config.toml`, for example:
|
|
272
191
|
|
|
273
192
|
```toml
|
|
@@ -276,6 +195,7 @@ trust_level = "trusted"
|
|
|
276
195
|
```
|
|
277
196
|
|
|
278
197
|
- If that trust screen is still blocking, attach directly and continue from tmux with `tmux -S ~/.clisbot/state/clisbot.sock attach -t agent-default-main`.
|
|
198
|
+
- If Gemini startup says it is waiting for manual authorization, authenticate Gemini directly first or provide a headless auth path such as `GEMINI_API_KEY` or Vertex AI credentials; `clisbot` now treats that screen as a startup blocker instead of a healthy ready session.
|
|
279
199
|
- If Codex warns that `bubblewrap` is missing on Linux, install `bubblewrap` in the runtime environment.
|
|
280
200
|
- If the bot does not answer, check that your shell environment really contains the expected tokens and restart `clisbot` after changing them.
|
|
281
201
|
- If runtime startup still fails, run `clisbot logs` and inspect the recent log tail that `clisbot` now prints automatically on startup failure.
|
|
@@ -284,34 +204,29 @@ trust_level = "trusted"
|
|
|
284
204
|
- If Slack thread behavior feels too eager, use `/followup pause` or `/followup mention-only`.
|
|
285
205
|
- If Slack slash commands conflict with Slack-native command handling, add a leading space, for example ` /bash ls -la`.
|
|
286
206
|
|
|
287
|
-
##
|
|
207
|
+
## Common CLI commands
|
|
208
|
+
|
|
209
|
+
Most users only need a small set of commands at first:
|
|
288
210
|
|
|
289
211
|
- `clisbot start`
|
|
290
212
|
- `clisbot restart`
|
|
291
213
|
- `clisbot stop`
|
|
292
|
-
- `clisbot stop --hard`
|
|
293
214
|
- `clisbot status`
|
|
294
215
|
- `clisbot logs`
|
|
216
|
+
- `clisbot pairing approve slack <CODE>`
|
|
217
|
+
- `clisbot pairing approve telegram <CODE>`
|
|
295
218
|
- `clisbot channels enable slack`
|
|
296
219
|
- `clisbot channels enable telegram`
|
|
297
220
|
- `clisbot channels add telegram-group <chatId> [--topic <topicId>] [--agent <id>] [--require-mention true|false]`
|
|
298
|
-
- `clisbot channels remove telegram-group <chatId> [--topic <topicId>]`
|
|
299
221
|
- `clisbot channels add slack-channel <channelId> [--agent <id>] [--require-mention true|false]`
|
|
300
|
-
- `clisbot channels remove slack-channel <channelId>`
|
|
301
|
-
- `clisbot channels add slack-group <groupId> [--agent <id>] [--require-mention true|false]`
|
|
302
|
-
- `clisbot channels remove slack-group <groupId>`
|
|
303
|
-
- `clisbot channels set-token <slack-app|slack-bot|telegram-bot> <value>`
|
|
304
|
-
- `clisbot channels clear-token <slack-app|slack-bot|telegram-bot>`
|
|
305
222
|
- `clisbot channels privilege enable <target>`
|
|
306
|
-
- `clisbot channels privilege disable <target>`
|
|
307
223
|
- `clisbot channels privilege allow-user <target> <userId>`
|
|
308
|
-
- `clisbot channels privilege remove-user <target> <userId>`
|
|
309
224
|
- `clisbot agents list --bindings`
|
|
310
|
-
- `clisbot start --cli codex --bootstrap personal-assistant`
|
|
311
|
-
- `clisbot agents bootstrap default --mode personal-assistant`
|
|
312
|
-
- `clisbot agents bind --agent default --bind telegram`
|
|
313
225
|
- `clisbot agents bindings`
|
|
314
226
|
- `clisbot --help`
|
|
227
|
+
|
|
228
|
+
If you are running from the repo instead of the global package:
|
|
229
|
+
|
|
315
230
|
- `bun run dev`
|
|
316
231
|
- `bun run start`
|
|
317
232
|
- `bun run restart`
|
|
@@ -370,23 +285,54 @@ Follow-up behavior matters in team threads:
|
|
|
370
285
|
|
|
371
286
|
- [Overview](docs/overview/README.md)
|
|
372
287
|
- [Architecture](docs/architecture/README.md)
|
|
288
|
+
- [Development Guide](docs/development/README.md)
|
|
373
289
|
- [Feature Tables](docs/features/feature-tables.md)
|
|
374
290
|
- [Backlog](docs/tasks/backlog.md)
|
|
375
291
|
- [User Guide](docs/user-guide/README.md)
|
|
376
292
|
|
|
377
293
|
## Roadmap
|
|
378
294
|
|
|
379
|
-
-
|
|
380
|
-
-
|
|
381
|
-
-
|
|
382
|
-
-
|
|
383
|
-
-
|
|
384
|
-
|
|
385
|
-
|
|
295
|
+
- Add more native CLIs, starting with a stronger Claude, Codex, and Gemini launch trio.
|
|
296
|
+
- Add more channels, starting from Slack and Telegram, then moving toward Zalo and other expansion surfaces.
|
|
297
|
+
- Add better workflow building blocks such as heartbeat, cron-style jobs, and stronger loop automation.
|
|
298
|
+
- Explore structured output, ACP, and native SDK integrations where they improve truthfulness or operator control.
|
|
299
|
+
- Explore more stable native messaging paths beyond tmux-pane capture over time.
|
|
300
|
+
|
|
301
|
+
## Current Focus
|
|
302
|
+
|
|
303
|
+
`clisbot` is growing toward a broader agent runtime layer:
|
|
304
|
+
|
|
305
|
+
- more CLI tool support beyond Claude Code, Codex, and Gemini CLI
|
|
306
|
+
- more communication channels beyond Slack and Telegram
|
|
307
|
+
- simple workflow building blocks such as cron jobs, heartbeat jobs, and loops
|
|
308
|
+
- durable agent sessions, workspaces, follow-up policy, commands, attachments, and operator controls that stay reusable across all those surfaces
|
|
309
|
+
|
|
310
|
+
tmux is still the current stability boundary. One agent maps to one durable runner session in one workspace, and every CLI, channel, or workflow layer should route onto that durable runtime instead of recreating the agent from scratch.
|
|
311
|
+
|
|
312
|
+
## Launch MVP Path
|
|
313
|
+
|
|
314
|
+
See [docs/overview/launch-mvp-path.md](docs/overview/launch-mvp-path.md) for the full current launch order.
|
|
315
|
+
|
|
316
|
+
Short snapshot:
|
|
317
|
+
|
|
318
|
+
1. Foundations first:
|
|
319
|
+
- frictionless start and credential persistence
|
|
320
|
+
- runtime stability and truthful status or debug UX
|
|
321
|
+
- `/loop` as the current differentiating workflow feature
|
|
322
|
+
2. International launch gate:
|
|
323
|
+
- Claude, Codex, and Gemini as the well-tested core CLI trio
|
|
324
|
+
- current shared channel package remains Slack plus Telegram
|
|
325
|
+
3. Vietnam launch package:
|
|
326
|
+
- add Zalo Official Account and Zalo Personal on top of the same core trio
|
|
327
|
+
4. Next expansion wave:
|
|
328
|
+
- more CLIs such as Cursor, Amp, OpenCode, Qwen, Kilo, and Minimax, prioritized by real userbase demand
|
|
329
|
+
- more channels such as Discord, WhatsApp, Google Workspace, and Microsoft Teams
|
|
330
|
+
5. Open launch decision:
|
|
331
|
+
- whether native CLI slash-command compatibility, override, and customization should ship before broader push
|
|
386
332
|
|
|
387
333
|
## Completed
|
|
388
334
|
|
|
389
|
-
- [x] Multiple Codex and
|
|
335
|
+
- [x] Multiple Codex, Claude, and Gemini sessions with streaming on/off support.
|
|
390
336
|
- [x] Stale tmux session cleanup and session resume.
|
|
391
337
|
- [x] OpenClaw-compatible configuration system.
|
|
392
338
|
- [x] Slack channel support with streaming and attachments, smart follow mode
|
|
@@ -396,7 +342,7 @@ Follow-up behavior matters in team threads:
|
|
|
396
342
|
|
|
397
343
|
This repo also serves as a small example of an AI-native engineering workflow:
|
|
398
344
|
|
|
399
|
-
- simple `AGENTS.md` and `CLAUDE.md`-style operating rules
|
|
345
|
+
- simple `AGENTS.md` and `CLAUDE.md`-style operating rules
|
|
400
346
|
- lessons-learned docs to capture repeated feedback and pitfalls
|
|
401
347
|
- architecture docs used as a stable implementation contract
|
|
402
348
|
- end-to-end validation expectations to close the feedback loop for AI agents
|