@oneciel-ai/claude-any 0.1.68 → 0.1.69
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 +110 -3
- package/claude-any-tool-guard.py +13 -12
- package/claude_any.py +783 -13
- package/claude_any_support/observability.py +5 -1
- package/docs/README.ja.md +12 -1
- package/docs/README.ko.md +18 -1
- package/docs/README.zh.md +12 -1
- package/docs/manual.md +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -25,6 +25,12 @@
|
|
|
25
25
|
|
|
26
26
|
## Today's Top 3 Benefits
|
|
27
27
|
|
|
28
|
+
### 2026-05-18
|
|
29
|
+
|
|
30
|
+
1. **Realtime channel bridge for external agents** — Claude Any now exposes `/ca/channel/*` endpoints and an SSE connector so systems like AI-Net can push live agent messages into Claude Code sessions.
|
|
31
|
+
2. **Advisor feedback is visible and actionable** — Advisor reviews can be surfaced in the Claude Code transcript and fed back into the executor model before plan approval or risky continuation points.
|
|
32
|
+
3. **Better non-Anthropic workflow parity** — Cron-style task scheduling, channel polling, and router-native coordination commands are modeled more closely to Claude Code's native behavior for Ollama, Ollama Cloud, NVIDIA hosted, vLLM, and NIM.
|
|
33
|
+
|
|
28
34
|
### 2026-05-15
|
|
29
35
|
|
|
30
36
|
1. **Router management is now navigable** — the built-in router home page is split into top-menu sections for Overview, LLM Settings, Events, and Endpoints instead of crowding everything into one long screen.
|
|
@@ -62,7 +68,7 @@ arguments through unchanged.
|
|
|
62
68
|
|
|
63
69
|
Credits: One Ciel LLC
|
|
64
70
|
|
|
65
|
-
Current version: `0.1.
|
|
71
|
+
Current version: `0.1.69`
|
|
66
72
|
|
|
67
73
|
## Why This Exists
|
|
68
74
|
|
|
@@ -129,6 +135,33 @@ claude-any --ca-provider ollama-cloud --ca-model glm-5.1
|
|
|
129
135
|
claude-any --ca-provider ollama --ca-base-url http://127.0.0.1:11434 --ca-model qwen3-coder
|
|
130
136
|
```
|
|
131
137
|
|
|
138
|
+
Apply settings only, without launching Claude Code:
|
|
139
|
+
|
|
140
|
+
```sh
|
|
141
|
+
claude-any --ca-provider ollama-cloud --ca-model deepseek-v4-flash --ca-context-window 1048576 --ca-request-timeout-ms 300000 --ca-no-launch
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
Apply the recommended LLM options for the saved provider/model, then exit:
|
|
145
|
+
|
|
146
|
+
```sh
|
|
147
|
+
claude-any --ca-auto-llm-options --ca-no-launch
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
Apply the recommended LLM options for a specific model name, then exit:
|
|
151
|
+
|
|
152
|
+
```sh
|
|
153
|
+
claude-any --ca-provider ollama-cloud --ca-auto-llm-options deepseek-v4-flash --ca-no-launch
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
```sh
|
|
157
|
+
claude-any --ca-env-file .env.claude-any --ca-no-launch
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
This is useful for remote provisioning, CI setup, base image preparation, or a
|
|
161
|
+
parent agent that wants to configure Claude Any once and launch Claude Code in a
|
|
162
|
+
separate step. Without `--ca-no-launch`, Claude Any applies the settings and
|
|
163
|
+
then launches Claude Code as usual.
|
|
164
|
+
|
|
132
165
|
Run one non-interactive Claude Code prompt:
|
|
133
166
|
|
|
134
167
|
```sh
|
|
@@ -147,6 +180,30 @@ Configure every launch option with flags:
|
|
|
147
180
|
claude-any --ca-provider nvidia-hosted --ca-base-url https://integrate.api.nvidia.com/v1 --ca-model z-ai/glm-4.7 --ca-advisor-model deepseek-ai/deepseek-v4-pro --ca-api-key-env NVIDIA_API_KEY --ca-max-output-tokens 4096 --ca-context-window 65536 --ca-request-timeout-ms 120000 --ca-rate-limit-rpm 40 --ca-rate-limit-status on --ca-no-update-check -p "Reply with OK only." --output-format text
|
|
148
181
|
```
|
|
149
182
|
|
|
183
|
+
Full Ollama Cloud 1M-context setup with flags:
|
|
184
|
+
|
|
185
|
+
```sh
|
|
186
|
+
claude-any --ca-provider ollama-cloud --ca-base-url https://ollama.com --ca-model deepseek-v4-flash --ca-advisor-model deepseek-v4-pro --ca-api-key-env OLLAMA_API_KEY --ca-context-window 1048576 --ca-max-output-tokens 8192 --ca-request-timeout-ms 300000 --ca-stream on --ca-stream-word-chunking off --ca-rate-limit-rpm 0 --ca-rate-limit-status on -p "Create an implementation plan." --output-format text
|
|
187
|
+
```
|
|
188
|
+
|
|
189
|
+
The same setup can let Claude Any choose the model's recommended LLM options:
|
|
190
|
+
|
|
191
|
+
```sh
|
|
192
|
+
claude-any --ca-provider ollama-cloud --ca-base-url https://ollama.com --ca-auto-llm-options deepseek-v4-flash --ca-advisor-model deepseek-v4-pro --ca-api-key-env OLLAMA_API_KEY --ca-stream on --ca-rate-limit-status on -p "Create an implementation plan." --output-format text
|
|
193
|
+
```
|
|
194
|
+
|
|
195
|
+
Full local Ollama setup with flags:
|
|
196
|
+
|
|
197
|
+
```sh
|
|
198
|
+
claude-any --ca-provider ollama --ca-base-url http://127.0.0.1:11434 --ca-model qwen3-coder --ca-ollama-num-ctx auto --ca-ollama-ctx-range 65536 262144 --ca-request-timeout-ms 180000 --ca-stream on --ca-no-update-check -p "Inspect the current project and summarize risks." --output-format text
|
|
199
|
+
```
|
|
200
|
+
|
|
201
|
+
Full NVIDIA hosted setup with rate-limit management:
|
|
202
|
+
|
|
203
|
+
```sh
|
|
204
|
+
claude-any --ca-provider nvidia-hosted --ca-base-url https://integrate.api.nvidia.com/v1 --ca-model z-ai/glm-4.7 --ca-advisor-model deepseek-ai/deepseek-v4-pro --ca-api-key-env NVIDIA_API_KEY --ca-context-window 65536 --ca-max-output-tokens 4096 --ca-request-timeout-ms 180000 --ca-stream on --ca-rate-limit-rpm 40 --ca-rate-limit-status on -p "Review this repository and list next actions." --output-format text
|
|
205
|
+
```
|
|
206
|
+
|
|
150
207
|
Or put the same values in environment variables:
|
|
151
208
|
|
|
152
209
|
```sh
|
|
@@ -164,18 +221,57 @@ export CLAUDE_ANY_RATE_LIMIT_STATUS=on
|
|
|
164
221
|
claude-any -p "Reply with OK only." --output-format text
|
|
165
222
|
```
|
|
166
223
|
|
|
167
|
-
For `.env` driven runs, save the same `CLAUDE_ANY_*` values in a file
|
|
168
|
-
|
|
224
|
+
For `.env` driven runs, save the same `CLAUDE_ANY_*` values in a file:
|
|
225
|
+
|
|
226
|
+
```dotenv
|
|
227
|
+
CLAUDE_ANY_SKIP_MENU=1
|
|
228
|
+
CLAUDE_ANY_PROVIDER=ollama-cloud
|
|
229
|
+
CLAUDE_ANY_BASE_URL=https://ollama.com
|
|
230
|
+
CLAUDE_ANY_MODEL=deepseek-v4-flash
|
|
231
|
+
CLAUDE_ANY_ADVISOR_MODEL=deepseek-v4-pro
|
|
232
|
+
CLAUDE_ANY_API_KEY_ENV=OLLAMA_API_KEY
|
|
233
|
+
CLAUDE_ANY_CONTEXT_WINDOW=1048576
|
|
234
|
+
CLAUDE_ANY_MAX_OUTPUT_TOKENS=8192
|
|
235
|
+
CLAUDE_ANY_REQUEST_TIMEOUT_MS=300000
|
|
236
|
+
CLAUDE_ANY_STREAM=on
|
|
237
|
+
CLAUDE_ANY_STREAM_WORD_CHUNKING=off
|
|
238
|
+
CLAUDE_ANY_RATE_LIMIT_RPM=0
|
|
239
|
+
CLAUDE_ANY_RATE_LIMIT_STATUS=on
|
|
240
|
+
CLAUDE_ANY_WEB_SEARCH=on
|
|
241
|
+
CLAUDE_ANY_WEB_FETCH=on
|
|
242
|
+
CLAUDE_ANY_SELF_UPDATE_CHECK=off
|
|
243
|
+
CLAUDE_ANY_UPDATE_CHECK=off
|
|
244
|
+
```
|
|
245
|
+
|
|
246
|
+
Then apply and launch:
|
|
169
247
|
|
|
170
248
|
```sh
|
|
171
249
|
claude-any --ca-env-file .env.claude-any -p "Reply with OK only." --output-format text
|
|
172
250
|
```
|
|
173
251
|
|
|
252
|
+
Or apply only and exit:
|
|
253
|
+
|
|
254
|
+
```sh
|
|
255
|
+
claude-any --ca-env-file .env.claude-any --ca-no-launch
|
|
256
|
+
```
|
|
257
|
+
|
|
258
|
+
You can also use a CLI flag to override one `.env` value for a single run:
|
|
259
|
+
|
|
260
|
+
```sh
|
|
261
|
+
claude-any --ca-env-file .env.claude-any --ca-model glm-5.1 -p "Use the overridden model for this run." --output-format text
|
|
262
|
+
```
|
|
263
|
+
|
|
174
264
|
Override order is deterministic: saved user choices from the menu are the
|
|
175
265
|
baseline, OS environment variables override them, `--ca-env-file` values
|
|
176
266
|
override the OS environment, CLI `--ca-*` parameters override the env file, and
|
|
177
267
|
`--ca-menu` lets the final interactive menu choice override everything.
|
|
178
268
|
|
|
269
|
+
Quietly upgrade Claude Any and Claude Code, then exit without launching Claude:
|
|
270
|
+
|
|
271
|
+
```sh
|
|
272
|
+
claude-any --ca-upgrade-and-exit
|
|
273
|
+
```
|
|
274
|
+
|
|
179
275
|
Headless coverage checklist: provider, base URL, model, Advisor model, API key
|
|
180
276
|
or API-key environment variable, max output, context window, request timeout,
|
|
181
277
|
RPM limit, RPM status display, streaming, web search, web fetch, Claude skills,
|
|
@@ -399,6 +495,17 @@ steps under that larger model's supervision.
|
|
|
399
495
|
|
|
400
496
|
## Changelog
|
|
401
497
|
|
|
498
|
+
### 0.1.69
|
|
499
|
+
|
|
500
|
+
- **Realtime channel bridge**: added `/ca/channel/messages`, `/ca/channel/wait`,
|
|
501
|
+
`/ca/channel/stream`, `/ca/channel/notify`, and runtime SSE connector controls
|
|
502
|
+
so external systems can deliver live messages into Claude Any.
|
|
503
|
+
- **`/channel` slash command**: Claude Code can inspect bridge status, poll,
|
|
504
|
+
wait, send messages, and check SSE connector state without leaving the session.
|
|
505
|
+
- **Advisor and coordination parity**: Advisor feedback is summarized back into
|
|
506
|
+
the visible transcript/executor flow, while channel and Cron-compatible tool
|
|
507
|
+
schemas make third-party model sessions behave closer to native Claude Code.
|
|
508
|
+
|
|
402
509
|
### 0.1.68
|
|
403
510
|
|
|
404
511
|
- **Tabbed router management page**: the router root page now has top-menu
|
package/claude-any-tool-guard.py
CHANGED
|
@@ -740,9 +740,16 @@ def main() -> int:
|
|
|
740
740
|
except Exception:
|
|
741
741
|
return 0
|
|
742
742
|
name = str(event.get("hook_event_name") or "")
|
|
743
|
+
provider = os.environ.get("CLAUDE_ANY_PROVIDER", "").strip()
|
|
744
|
+
is_active = active()
|
|
745
|
+
if not is_active:
|
|
746
|
+
if provider:
|
|
747
|
+
log_event(f"inactive provider={provider}")
|
|
748
|
+
return 0
|
|
743
749
|
|
|
744
|
-
#
|
|
745
|
-
#
|
|
750
|
+
# Claude Any hooks are installed in Claude Code's global settings, so they
|
|
751
|
+
# must be silent for native Claude sessions. Only alter worktree, stop, and
|
|
752
|
+
# tool behavior when Claude Any launched the process with an active provider.
|
|
746
753
|
if name == "WorktreeCreate":
|
|
747
754
|
return handle_worktree_create(event)
|
|
748
755
|
if name == "WorktreeRemove":
|
|
@@ -753,19 +760,13 @@ def main() -> int:
|
|
|
753
760
|
# Lightweight observation for events we do not act on. Skip when inactive
|
|
754
761
|
# to avoid touching disk on every event.
|
|
755
762
|
if name in OBSERVE_ONLY_EVENTS:
|
|
756
|
-
|
|
757
|
-
|
|
758
|
-
|
|
759
|
-
|
|
760
|
-
pass
|
|
763
|
+
try:
|
|
764
|
+
log_json_event(event)
|
|
765
|
+
except Exception:
|
|
766
|
+
pass
|
|
761
767
|
return 0
|
|
762
768
|
|
|
763
769
|
# Tool/task events: keep existing provider gating.
|
|
764
|
-
provider = os.environ.get("CLAUDE_ANY_PROVIDER", "").strip()
|
|
765
|
-
if not active():
|
|
766
|
-
if provider:
|
|
767
|
-
log_event(f"inactive provider={provider}")
|
|
768
|
-
return 0
|
|
769
770
|
if name == "PreToolUse":
|
|
770
771
|
tool = str(event.get("tool_name") or "")
|
|
771
772
|
raw = event.get("tool_input")
|