clisbot 0.1.13 → 0.1.15

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,4 +1,4 @@
1
- # clisbot - Agentic Coding CLI & chat bot
1
+ # clisbot - Turn your favorite coding CLI into an agentic assistant and code on the go
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
@@ -7,7 +7,7 @@ Want to use OpenClaw but are struggling because:
7
7
 
8
8
  `clisbot` is the right solution for you.
9
9
 
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.
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. It is not just a tmux bridge with chat glued on top. `clisbot` adds channel-aware routing, durable conversation state, pairing and access control, follow-up behavior, and support for sending and receiving files through Slack and Telegram.
11
11
 
12
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.
13
13
 
@@ -16,10 +16,12 @@ It is a cheaper, simpler path to frontier agent workflows for teams and individu
16
16
  ## Why clisbot
17
17
 
18
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
+ - Learns from and integrates the two biggest strengths that made OpenClaw popular: memory and native channel integration with deep, channel-specific conversation and presentation capabilities.
19
20
  - 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
21
  - 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.
22
+ - Not just a tmux bridge. Slack and Telegram are treated as real channel surfaces with routing, thread or topic continuity, pairing, follow-up control, and attachment-aware interaction instead of plain text passthrough.
23
+ - Files and images can move through the chat surfaces too, not just text prompts: inbound Slack or Telegram attachments can land in the workspace, and outbound channel delivery is designed around real message and media actions rather than terminal-only output.
21
24
  - 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
25
  - 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.
24
26
 
25
27
  ## What to expect
@@ -28,6 +30,7 @@ It is a cheaper, simpler path to frontier agent workflows for teams and individu
28
30
  - The first-run path creates one default agent and only enables the channels you explicitly name.
29
31
  - DMs start with pairing so access stays explicit.
30
32
  - `--persist` lets later restarts use plain `clisbot start`.
33
+ - Slack and Telegram are not treated as plain-text sinks: routed conversations can carry thread or topic identity, pairing, and file-aware workflows.
31
34
  - Advanced multi-agent setup is available later, but it is not required for day one.
32
35
 
33
36
  ## Quick Start
@@ -45,6 +48,13 @@ clisbot start \
45
48
 
46
49
  If you want to try first without persisting the token yet, just remove `--persist`.
47
50
 
51
+ Need the step-by-step setup docs instead of the shortest path?
52
+
53
+ - Telegram: [Telegram Bot Setup](docs/user-guide/telegram-setup.md)
54
+ - Slack: [Slack App Setup](docs/user-guide/slack-setup.md)
55
+ - Slack app manifest template: [app-manifest.json](templates/slack/default/app-manifest.json)
56
+ - Slack app manifest guide: [app-manifest-guide.md](templates/slack/default/app-manifest-guide.md)
57
+
48
58
  What happens next:
49
59
 
50
60
  - `--bot-type personal` creates one assistant for one human
@@ -95,14 +105,10 @@ Fresh config also starts with no preconfigured Slack channels or Telegram groups
95
105
  `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
106
  If you want a separate dev instance beside your main bot, see the [Development Guide](docs/development/README.md).
97
107
 
98
- Gemini note:
99
-
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`
103
-
104
108
  ## Showcase
105
109
 
110
+ The goal is a real chat-native agent surface, not a terminal transcript mirror: threads, topics, follow-up behavior, and file-aware workflows should feel native to Slack and Telegram.
111
+
106
112
  Slack
107
113
 
108
114
  ![Slack showcase](https://raw.githubusercontent.com/longbkit/clisbot/main/docs/pics/slack-01.jpg)
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "meta": {
3
3
  "schemaVersion": 1,
4
- "lastTouchedAt": "2026-04-07T00:00:00.000Z"
4
+ "lastTouchedAt": "2026-04-15T00:00:00.000Z"
5
5
  },
6
6
  "tmux": {
7
7
  "socketPath": "~/.clisbot/state/clisbot.sock"
@@ -12,9 +12,81 @@
12
12
  "identityLinks": {},
13
13
  "storePath": "~/.clisbot/state/sessions.json"
14
14
  },
15
+ "app": {
16
+ "auth": {
17
+ "ownerClaimWindowMinutes": 30,
18
+ "defaultRole": "member",
19
+ "roles": {
20
+ "owner": {
21
+ "allow": [
22
+ "configManage",
23
+ "appAuthManage",
24
+ "agentAuthManage",
25
+ "promptGovernanceManage"
26
+ ],
27
+ "users": []
28
+ },
29
+ "admin": {
30
+ "allow": [
31
+ "configManage",
32
+ "appAuthManage",
33
+ "agentAuthManage",
34
+ "promptGovernanceManage"
35
+ ],
36
+ "users": []
37
+ },
38
+ "member": {
39
+ "allow": [],
40
+ "users": []
41
+ }
42
+ }
43
+ }
44
+ },
15
45
  "agents": {
16
46
  "defaults": {
17
47
  "workspace": "~/.clisbot/workspaces/{agentId}",
48
+ "auth": {
49
+ "defaultRole": "member",
50
+ "roles": {
51
+ "admin": {
52
+ "allow": [
53
+ "sendMessage",
54
+ "helpView",
55
+ "statusView",
56
+ "identityView",
57
+ "transcriptView",
58
+ "runObserve",
59
+ "runInterrupt",
60
+ "streamingManage",
61
+ "queueManage",
62
+ "steerManage",
63
+ "loopManage",
64
+ "shellExecute",
65
+ "runNudge",
66
+ "followupManage",
67
+ "responseModeManage",
68
+ "additionalMessageModeManage"
69
+ ],
70
+ "users": []
71
+ },
72
+ "member": {
73
+ "allow": [
74
+ "sendMessage",
75
+ "helpView",
76
+ "statusView",
77
+ "identityView",
78
+ "transcriptView",
79
+ "runObserve",
80
+ "runInterrupt",
81
+ "streamingManage",
82
+ "queueManage",
83
+ "steerManage",
84
+ "loopManage"
85
+ ],
86
+ "users": []
87
+ }
88
+ }
89
+ },
18
90
  "runner": {
19
91
  "command": "codex",
20
92
  "args": [
@@ -72,11 +144,20 @@
72
144
  "configReload": {
73
145
  "watch": true,
74
146
  "watchDebounceMs": 250
147
+ },
148
+ "sessionCleanup": {
149
+ "enabled": true,
150
+ "intervalMinutes": 5
151
+ },
152
+ "loop": {
153
+ "maxRunsPerLoop": 20,
154
+ "maxActiveLoops": 10,
155
+ "defaultTimezone": "UTC"
75
156
  }
76
157
  },
77
158
  "channels": {
78
159
  "slack": {
79
- "enabled": true,
160
+ "enabled": false,
80
161
  "mode": "socket",
81
162
  "appToken": "${SLACK_APP_TOKEN}",
82
163
  "botToken": "${SLACK_BOT_TOKEN}",
@@ -104,10 +185,6 @@
104
185
  "channelPolicy": "allowlist",
105
186
  "groupPolicy": "allowlist",
106
187
  "defaultAgentId": "default",
107
- "privilegeCommands": {
108
- "enabled": false,
109
- "allowUsers": []
110
- },
111
188
  "commandPrefixes": {
112
189
  "slash": [
113
190
  "::",
@@ -121,6 +198,7 @@
121
198
  "response": "final",
122
199
  "responseMode": "message-tool",
123
200
  "additionalMessageMode": "steer",
201
+ "verbose": "minimal",
124
202
  "followUp": {
125
203
  "mode": "auto",
126
204
  "participationTtlMin": 5
@@ -132,15 +210,11 @@
132
210
  "policy": "pairing",
133
211
  "allowFrom": [],
134
212
  "requireMention": false,
135
- "agentId": "default",
136
- "privilegeCommands": {
137
- "enabled": false,
138
- "allowUsers": []
139
- }
213
+ "agentId": "default"
140
214
  }
141
215
  },
142
216
  "telegram": {
143
- "enabled": true,
217
+ "enabled": false,
144
218
  "mode": "polling",
145
219
  "botToken": "${TELEGRAM_BOT_TOKEN}",
146
220
  "defaultAccount": "default",
@@ -157,10 +231,6 @@
157
231
  "allowBots": false,
158
232
  "groupPolicy": "allowlist",
159
233
  "defaultAgentId": "default",
160
- "privilegeCommands": {
161
- "enabled": false,
162
- "allowUsers": []
163
- },
164
234
  "commandPrefixes": {
165
235
  "slash": [
166
236
  "::",
@@ -174,6 +244,7 @@
174
244
  "response": "final",
175
245
  "responseMode": "message-tool",
176
246
  "additionalMessageMode": "steer",
247
+ "verbose": "minimal",
177
248
  "followUp": {
178
249
  "mode": "auto",
179
250
  "participationTtlMin": 5
@@ -189,11 +260,7 @@
189
260
  "allowFrom": [],
190
261
  "requireMention": false,
191
262
  "allowBots": false,
192
- "agentId": "default",
193
- "privilegeCommands": {
194
- "enabled": false,
195
- "allowUsers": []
196
- }
263
+ "agentId": "default"
197
264
  }
198
265
  }
199
266
  }