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 CHANGED
@@ -1,103 +1,87 @@
1
1
  # clisbot - Agentic Coding CLI & chat bot
2
- The cheapest, simplest path to frontier LLMs and agentic CLI workflows for teams and individuals.
2
+ Want to use OpenClaw but are struggling because:
3
3
 
4
- `clisbot` exposes native agentic AI tool CLIs like Claude Code / Codex through multi-channel chat surfaces, with each agent running inside its own durable tmux session and ready to behave like a real bot, a real assistant - with SOUL, IDENTITY & MEMORY, not just a coding tool.
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
- It is not just another tmux bridge or Telegram bridge. `clisbot` is 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.
8
+ `clisbot` is the right solution for you.
7
9
 
8
- Agentic AI is powerful, but only with frontier models. OpenClaw took off because people found many ways to access strong frontier models cheaply through subscription-based OAuth. Recent Anthropic enforcement around third-party and proxy-style usage made that risk harder to ignore.
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
- Meanwhile, the strongest agentic coding tools already come from serious enterprise teams with real investment in model quality, security, safety, and operator controls, especially Claude Code, Codex, and Gemini CLI. That naturally leads to a simple question: why not reuse those agents as they already are, keep them alive in tmux, and add communication channels, team workflows, and more toys around them?
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
- Every company will likely need an OpenClaw-style strategy over time: a personal agentic assistant for each employee, plus shared agents for each team. `clisbot` starts from a team-first angle, with Slack and shared agent workflows as the default center of gravity instead of treating team collaboration as a later add-on.
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
- - Reuses the native CLI tools you already know and subscribe to, such as Claude Code, Codex, and Gemini CLI, then extends them across coding, chatbot, and non-dev workflows without forcing you to switch tools.
25
- - Optimized for cheap subscription-backed usage with tools like Codex CLI and Claude CLI... A practical response to the reality that high-quality frontier models are expensive and vendor policies can tighten around third-party usage.
26
- - Compatible with OpenClaw-style configuration, commands and some concepts, agent personality for bot usecases, and workspace bootstrap templates, help Openclaw users to quickly get started.
27
- - Team-first by design, with agent bootstrap templates that fit shared team agents as well as personal ones.
28
- - Fits the emerging pattern of one personal assistant per employee and shared assistants per team.
29
- - Useful as a bot for coding, operations, teamwork, and general work in team environment, or on the go
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
- ![Slack showcase](https://raw.githubusercontent.com/longbkit/clisbot/main/docs/pics/slack-01.jpg)
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
- ![Telegram topic showcase 1](https://raw.githubusercontent.com/longbkit/clisbot/main/docs/pics/telegram-01.jpg)
25
+ ## What to expect
55
26
 
56
- ![Telegram topic showcase 2](https://raw.githubusercontent.com/longbkit/clisbot/main/docs/pics/telegram-02.jpg)
57
-
58
- ![Telegram topic showcase 3](https://raw.githubusercontent.com/longbkit/clisbot/main/docs/pics/telegram-03.jpg)
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
- Choose one setup path.
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
- 2. Add the required environment variables to your shell startup file, then reload it.
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
- # ~/.zshrc or ~/.bashrc
81
- export SLACK_APP_TOKEN=...
82
- export SLACK_BOT_TOKEN=...
83
- export TELEGRAM_BOT_TOKEN=...
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
- source ~/.zshrc
88
- # or: source ~/.bashrc
70
+ clis start --cli codex --bot-type personal --telegram-bot-token <your-telegram-bot-token>
89
71
  ```
90
72
 
91
- 3. Start the service directly.
73
+ Local repo path:
92
74
 
93
75
  ```bash
94
- clisbot start --cli codex --bootstrap personal-assistant
95
- clis start --cli codex --bootstrap personal-assistant
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
- 4. Fastest first conversation path: send a direct message to the bot in Slack or Telegram.
80
+ First conversation path:
99
81
 
100
- `clisbot` defaults direct messages to pairing mode. The bot will reply with a pairing code and approval command.
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
- After approval, keep chatting with the bot in that DM or add shared channel or topic routes later.
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
- If you do not want to install globally, you can also run it directly with `npx`:
98
+ Gemini note:
112
99
 
113
- ```bash
114
- npx clisbot start --cli codex --bootstrap personal-assistant
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
- Requires Bun for development commands in this repo.
120
-
121
- 1. Install dependencies.
104
+ ## Showcase
122
105
 
123
- ```bash
124
- bun install
125
- ```
106
+ Slack
126
107
 
127
- 2. Add the required environment variables to your shell startup file, then reload it.
108
+ ![Slack showcase](https://raw.githubusercontent.com/longbkit/clisbot/main/docs/pics/slack-01.jpg)
128
109
 
129
- ```bash
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
- ```bash
137
- source ~/.zshrc
138
- # or: source ~/.bashrc
139
- ```
112
+ ![Telegram topic showcase 1](https://raw.githubusercontent.com/longbkit/clisbot/main/docs/pics/telegram-01.jpg)
140
113
 
141
- 3. Start the service directly.
114
+ ![Telegram topic showcase 2](https://raw.githubusercontent.com/longbkit/clisbot/main/docs/pics/telegram-02.jpg)
142
115
 
143
- ```bash
144
- bun run start --cli codex --bootstrap personal-assistant
145
- ```
116
+ ![Telegram topic showcase 3](https://raw.githubusercontent.com/longbkit/clisbot/main/docs/pics/telegram-03.jpg)
146
117
 
147
- 4. Fastest first conversation path: send a direct message to the bot in Slack or Telegram.
118
+ ## Important caution
148
119
 
149
- `clisbot` defaults direct messages to pairing mode. The bot will reply with a pairing code and approval command.
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
- Approve it with:
122
+ ## Acknowledgements
152
123
 
153
- ```bash
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
- After approval, keep chatting with the bot in that DM or add shared channel or topic routes later.
126
+ ## Setup Guide
159
127
 
160
- Fresh config now starts with no configured agents, and first-run `clisbot start` requires both `--cli` and `--bootstrap` before it creates the first `default` agent.
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
- ## Setup Guide
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
- The easiest setup flow is:
135
+ If you want the repo-guided setup path:
168
136
 
169
137
  1. Clone this repo.
170
- 2. Open Claude Code or Codex in this repo.
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 things yourself:
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. Set the required environment variables in your shell startup file so `clisbot` can read them consistently.
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
- Example agent setup:
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
- - `agents add` requires `--cli` and currently supports `codex` and `claude`.
204
- - `--bootstrap` accepts `personal-assistant` or `team-assistant` and seeds the workspace from `templates/openclaw` plus the selected customized template.
205
- - `personal-assistant` fits one assistant for one human.
206
- - `team-assistant` fits one shared assistant for a team, channel, or group workflow.
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
- Custom token placeholder setup:
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
- --bootstrap personal-assistant \
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` exactly as provided
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
- - `clisbot` does not expand or print the token values during config generation
224
- - use them when your environment variable names differ from `SLACK_APP_TOKEN`, `SLACK_BOT_TOKEN`, or `TELEGRAM_BOT_TOKEN`
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
- - If setup feels unclear, open Claude Code or Codex in this repo and ask it to help using the local docs.
263
- - If you are still in doubt, clone `https://github.com/longbkit/clisbot`, open the repo in Codex or Claude Code, and ask questions about setup or the bootstrap mode choice.
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 --bootstrap personal-assistant`.
266
- - If `clisbot start` says no default tokens were found, set Slack or Telegram tokens first using [docs/user-guide/channel-accounts.md](docs/user-guide/channel-accounts.md).
267
- - If `clisbot start` prints token refs as `missing`, set those exact env vars in `~/.bashrc` or `~/.zshrc`, reload the shell, then start again.
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`, the workspace is missing the tool-specific bootstrap file or `IDENTITY.md`; run `clisbot agents bootstrap <agentId> --mode <mode>`.
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
- ## Commands
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
- - Webhook and OpenAI-compatible completion API to integrate with more workflows.
380
- - Heartbeat and cronjob support, with the note that Claude already has a useful cronjob path today through loop-style workflows.
381
- - Autodrive / hardwork mode.
382
- - Support more native CLIs such as Gemini, OpenCode, and others.
383
- - Experiment with json output mode from codex / claude code, Agent Client Protocol and native Codex SDK integration.
384
- - Experiment with native messaging tools so the bot can send Slack or Telegram messages through MCP or CLI-based skills instead of tmux pane capture, for more stable and natural public-facing behavior over time.
385
- - Add more channels on demand.
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 Claude sessions with streaming on/off support.
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, short but addresses some common drawbacks of AI models as of 2026
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