clisbot 0.1.9 → 0.1.11
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 +86 -116
- package/dist/main.js +11302 -8401
- package/package.json +1 -1
- package/templates/customized/README.md +2 -0
- package/templates/customized/default/LOOP.md +17 -0
package/README.md
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
# clisbot - Agentic Coding CLI & chat bot
|
|
2
2
|
The cheapest, simplest path to frontier LLMs and agentic CLI workflows for teams and individuals.
|
|
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
|
+
`clisbot` is not just another tmux bridge, as many GitHub projects already are. It 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, just as OpenClaw, not just a coding tool.
|
|
5
5
|
|
|
6
|
-
|
|
6
|
+
`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.
|
|
7
7
|
|
|
8
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.
|
|
9
9
|
|
|
@@ -43,6 +43,27 @@ Strong vendor investment in security and safety does not make frontier agentic C
|
|
|
43
43
|
|
|
44
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
45
|
|
|
46
|
+
## Launch MVP Path
|
|
47
|
+
|
|
48
|
+
See [docs/overview/launch-mvp-path.md](docs/overview/launch-mvp-path.md) for the full current launch order.
|
|
49
|
+
|
|
50
|
+
Short snapshot:
|
|
51
|
+
|
|
52
|
+
1. Foundations first:
|
|
53
|
+
- frictionless start and credential persistence
|
|
54
|
+
- runtime stability and truthful status or debug UX
|
|
55
|
+
- `/loop` as the current differentiating workflow feature
|
|
56
|
+
2. International launch gate:
|
|
57
|
+
- Claude, Codex, and Gemini as the well-tested core CLI trio
|
|
58
|
+
- current shared channel package remains Slack plus Telegram
|
|
59
|
+
3. Vietnam launch package:
|
|
60
|
+
- add Zalo Official Account and Zalo Personal on top of the same core trio
|
|
61
|
+
4. Next expansion wave:
|
|
62
|
+
- more CLIs such as Cursor, Amp, OpenCode, Qwen, Kilo, and Minimax, prioritized by real userbase demand
|
|
63
|
+
- more channels such as Discord, WhatsApp, Google Workspace, and Microsoft Teams
|
|
64
|
+
5. Open launch decision:
|
|
65
|
+
- whether native CLI slash-command compatibility, override, and customization should ship before broader push
|
|
66
|
+
|
|
46
67
|
## Showcase
|
|
47
68
|
|
|
48
69
|
Slack
|
|
@@ -59,108 +80,81 @@ Telegram
|
|
|
59
80
|
|
|
60
81
|
## Quick Start
|
|
61
82
|
|
|
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:
|
|
72
|
-
|
|
73
|
-
```bash
|
|
74
|
-
npm install -g clisbot
|
|
75
|
-
```
|
|
76
|
-
|
|
77
|
-
2. Add the required environment variables to your shell startup file, then reload it.
|
|
78
|
-
|
|
79
|
-
```bash
|
|
80
|
-
# ~/.zshrc or ~/.bashrc
|
|
81
|
-
export SLACK_APP_TOKEN=...
|
|
82
|
-
export SLACK_BOT_TOKEN=...
|
|
83
|
-
export TELEGRAM_BOT_TOKEN=...
|
|
84
|
-
```
|
|
83
|
+
Fastest first-run path for the first Telegram bot:
|
|
85
84
|
|
|
86
85
|
```bash
|
|
87
|
-
|
|
88
|
-
|
|
86
|
+
clisbot start \
|
|
87
|
+
--cli codex \
|
|
88
|
+
--bot-type personal \
|
|
89
|
+
--telegram-bot-token <your-telegram-bot-token>
|
|
89
90
|
```
|
|
90
91
|
|
|
91
|
-
|
|
92
|
+
If you want later runs to work with plain `clisbot start`, persist that token immediately:
|
|
92
93
|
|
|
93
94
|
```bash
|
|
94
|
-
clisbot start
|
|
95
|
-
|
|
95
|
+
clisbot start \
|
|
96
|
+
--cli codex \
|
|
97
|
+
--bot-type personal \
|
|
98
|
+
--telegram-bot-token <your-telegram-bot-token> \
|
|
99
|
+
--persist
|
|
96
100
|
```
|
|
97
101
|
|
|
98
|
-
|
|
102
|
+
What this does:
|
|
99
103
|
|
|
100
|
-
|
|
104
|
+
- `--bot-type personal` creates one assistant for one human
|
|
105
|
+
- `--bot-type team` creates one shared assistant for a team, channel, or group workflow
|
|
106
|
+
- literal token input stays in memory unless you also pass `--persist`
|
|
107
|
+
- `--persist` promotes the token into the canonical credential file so the next `clisbot start` can reuse it without retyping
|
|
108
|
+
- fresh bootstrap only enables the channels you name explicitly
|
|
109
|
+
- after the persisted first run, later restarts can use plain `clisbot start`
|
|
101
110
|
|
|
102
|
-
|
|
111
|
+
Packaged CLI path:
|
|
103
112
|
|
|
104
113
|
```bash
|
|
105
|
-
|
|
106
|
-
clisbot
|
|
114
|
+
npm install -g clisbot
|
|
115
|
+
clisbot start --cli codex --bot-type personal --telegram-bot-token <your-telegram-bot-token> --persist
|
|
107
116
|
```
|
|
108
117
|
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
If you do not want to install globally, you can also run it directly with `npx`:
|
|
118
|
+
Short alias:
|
|
112
119
|
|
|
113
120
|
```bash
|
|
114
|
-
|
|
121
|
+
clis start --cli codex --bot-type personal --telegram-bot-token <your-telegram-bot-token>
|
|
115
122
|
```
|
|
116
123
|
|
|
117
124
|
Local repo path:
|
|
118
125
|
|
|
119
|
-
Requires Bun for development commands in this repo.
|
|
120
|
-
|
|
121
|
-
1. Install dependencies.
|
|
122
|
-
|
|
123
126
|
```bash
|
|
124
127
|
bun install
|
|
128
|
+
bun run start --cli codex --bot-type personal --telegram-bot-token <your-telegram-bot-token> --persist
|
|
125
129
|
```
|
|
126
130
|
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
```bash
|
|
130
|
-
# ~/.zshrc or ~/.bashrc
|
|
131
|
-
export SLACK_APP_TOKEN=...
|
|
132
|
-
export SLACK_BOT_TOKEN=...
|
|
133
|
-
export TELEGRAM_BOT_TOKEN=...
|
|
134
|
-
```
|
|
131
|
+
If you prefer Slack first:
|
|
135
132
|
|
|
136
133
|
```bash
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
```bash
|
|
144
|
-
bun run start --cli codex --bootstrap personal-assistant
|
|
134
|
+
clisbot start \
|
|
135
|
+
--cli codex \
|
|
136
|
+
--bot-type team \
|
|
137
|
+
--slack-app-token SLACK_APP_TOKEN \
|
|
138
|
+
--slack-bot-token SLACK_BOT_TOKEN
|
|
145
139
|
```
|
|
146
140
|
|
|
147
|
-
|
|
141
|
+
First conversation path:
|
|
148
142
|
|
|
149
|
-
|
|
143
|
+
- send a DM to the bot in Slack or Telegram
|
|
144
|
+
- `clisbot` defaults DMs to pairing mode
|
|
145
|
+
- the bot replies with a pairing code and approval command
|
|
150
146
|
|
|
151
147
|
Approve it with:
|
|
152
148
|
|
|
153
149
|
```bash
|
|
154
|
-
|
|
155
|
-
|
|
150
|
+
clisbot pairing approve slack <CODE>
|
|
151
|
+
clisbot pairing approve telegram <CODE>
|
|
156
152
|
```
|
|
157
153
|
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
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.
|
|
154
|
+
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.
|
|
155
|
+
Fresh config also starts with no preconfigured Slack channels or Telegram groups or topics. Add those routes manually in `~/.clisbot/clisbot.json`.
|
|
156
|
+
`clisbot start` requires explicit channel token input before it bootstraps anything. You can pass raw values, env names such as `TELEGRAM_BOT_TOKEN`, or placeholders such as `'${CUSTOM_TELEGRAM_BOT_TOKEN}'`.
|
|
157
|
+
Set `CLISBOT_HOME` if you want a fully separate local config, state, tmux socket, wrapper, and workspace root, for example when running a dev instance beside your main bot.
|
|
164
158
|
|
|
165
159
|
## Setup Guide
|
|
166
160
|
|
|
@@ -177,7 +171,17 @@ If you prefer to configure things yourself:
|
|
|
177
171
|
1. Read the full config template in [config/clisbot.json.template](config/clisbot.json.template).
|
|
178
172
|
2. Copy it to `~/.clisbot/clisbot.json` and adjust channels, bindings, workspaces, and policies for your environment.
|
|
179
173
|
3. Add agents through the CLI so tool defaults, startup options, and bootstrap templates stay consistent.
|
|
180
|
-
4.
|
|
174
|
+
4. Optionally move stable channel secrets into env vars or canonical credential files after your first successful run.
|
|
175
|
+
|
|
176
|
+
Separate dev home example:
|
|
177
|
+
|
|
178
|
+
```bash
|
|
179
|
+
export CLISBOT_HOME=~/.clisbot-dev
|
|
180
|
+
clisbot start --cli codex --bot-type team --telegram-bot-token TELEGRAM_BOT_TOKEN
|
|
181
|
+
```
|
|
182
|
+
|
|
183
|
+
- `CLISBOT_HOME` changes the default config path, runtime state dir, tmux socket, local wrapper path, and default workspaces together
|
|
184
|
+
- `CLISBOT_CONFIG_PATH` still works when you want to point at one exact config file manually
|
|
181
185
|
|
|
182
186
|
Channel route setup is manual by design:
|
|
183
187
|
|
|
@@ -189,7 +193,7 @@ Channel route setup is manual by design:
|
|
|
189
193
|
Example agent setup:
|
|
190
194
|
|
|
191
195
|
```bash
|
|
192
|
-
clisbot start --cli codex --
|
|
196
|
+
clisbot start --cli codex --bot-type personal --telegram-bot-token <your-telegram-bot-token>
|
|
193
197
|
```
|
|
194
198
|
|
|
195
199
|
```bash
|
|
@@ -201,70 +205,36 @@ clisbot agents list --bindings
|
|
|
201
205
|
Agent setup rules:
|
|
202
206
|
|
|
203
207
|
- `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`
|
|
208
|
+
- `--bootstrap` accepts `personal-assistant` or `team-assistant` and seeds the workspace from `templates/openclaw`, `templates/customized/default`, and the selected customized template.
|
|
205
209
|
- `personal-assistant` fits one assistant for one human.
|
|
206
210
|
- `team-assistant` fits one shared assistant for a team, channel, or group workflow.
|
|
207
211
|
- `agents bootstrap <agentId> --mode <personal-assistant|team-assistant>` bootstraps an existing agent workspace using the agent's configured CLI tool.
|
|
208
212
|
- 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
213
|
- 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.
|
|
210
214
|
|
|
211
|
-
|
|
215
|
+
Env-backed setup is still supported when you want config to reference an env name instead of persisting a credential file:
|
|
212
216
|
|
|
213
217
|
```bash
|
|
214
218
|
clisbot start \
|
|
215
219
|
--cli codex \
|
|
216
|
-
--
|
|
220
|
+
--bot-type personal \
|
|
217
221
|
--slack-app-token CUSTOM_SLACK_APP_TOKEN \
|
|
218
222
|
--slack-bot-token CUSTOM_SLACK_BOT_TOKEN
|
|
219
223
|
```
|
|
220
224
|
|
|
221
|
-
- these flags are written into `~/.clisbot/clisbot.json`
|
|
225
|
+
- these flags are written into `~/.clisbot/clisbot.json` as `${ENV_NAME}` placeholders
|
|
222
226
|
- 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
|
-
```
|
|
227
|
+
- use this path when your environment variable names differ from `SLACK_APP_TOKEN`, `SLACK_BOT_TOKEN`, or `TELEGRAM_BOT_TOKEN`
|
|
228
|
+
- 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
229
|
|
|
260
230
|
## Troubleshooting
|
|
261
231
|
|
|
262
232
|
- 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
|
|
233
|
+
- 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 bot type choice.
|
|
264
234
|
- 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`,
|
|
235
|
+
- If `clisbot start` says no agents are configured, prefer `clisbot start --cli codex --bot-type personal --telegram-bot-token <your-telegram-bot-token>`.
|
|
236
|
+
- If you want later runs to work with plain `clisbot start`, rerun your successful first-run command with `--persist`.
|
|
237
|
+
- 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
238
|
- If you use custom env names, pass them explicitly with `--slack-app-token`, `--slack-bot-token`, or `--telegram-bot-token`.
|
|
269
239
|
- 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
240
|
- 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.
|
|
@@ -307,7 +277,7 @@ trust_level = "trusted"
|
|
|
307
277
|
- `clisbot channels privilege allow-user <target> <userId>`
|
|
308
278
|
- `clisbot channels privilege remove-user <target> <userId>`
|
|
309
279
|
- `clisbot agents list --bindings`
|
|
310
|
-
- `clisbot start --cli codex --
|
|
280
|
+
- `clisbot start --cli codex --bot-type personal --telegram-bot-token <your-telegram-bot-token> --persist`
|
|
311
281
|
- `clisbot agents bootstrap default --mode personal-assistant`
|
|
312
282
|
- `clisbot agents bind --agent default --bind telegram`
|
|
313
283
|
- `clisbot agents bindings`
|