cade-cli 0.3.4__tar.gz → 0.5.0__tar.gz

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.
Files changed (61) hide show
  1. {cade_cli-0.3.4 → cade_cli-0.5.0}/.gitignore +3 -0
  2. cade_cli-0.5.0/LICENSE +21 -0
  3. cade_cli-0.5.0/PKG-INFO +385 -0
  4. cade_cli-0.3.4/PKG-INFO → cade_cli-0.5.0/README.md +91 -59
  5. {cade_cli-0.3.4 → cade_cli-0.5.0}/pyproject.toml +5 -5
  6. cade_cli-0.5.0/src/cadecoder/__init__.py +1 -0
  7. {cade_cli-0.3.4 → cade_cli-0.5.0}/src/cadecoder/cli/app.py +7 -0
  8. {cade_cli-0.3.4 → cade_cli-0.5.0}/src/cadecoder/cli/auth.py +0 -30
  9. {cade_cli-0.3.4 → cade_cli-0.5.0}/src/cadecoder/cli/commands/chat.py +99 -29
  10. cade_cli-0.5.0/src/cadecoder/cli/commands/context.py +333 -0
  11. {cade_cli-0.3.4 → cade_cli-0.5.0}/src/cadecoder/cli/commands/mcp.py +11 -2
  12. {cade_cli-0.3.4 → cade_cli-0.5.0}/src/cadecoder/cli/commands/model.py +5 -2
  13. {cade_cli-0.3.4 → cade_cli-0.5.0}/src/cadecoder/cli/commands/thread.py +55 -31
  14. cade_cli-0.5.0/src/cadecoder/cli/commands/tools.py +339 -0
  15. {cade_cli-0.3.4 → cade_cli-0.5.0}/src/cadecoder/core/config.py +16 -17
  16. {cade_cli-0.3.4 → cade_cli-0.5.0}/src/cadecoder/core/constants.py +0 -2
  17. {cade_cli-0.3.4 → cade_cli-0.5.0}/src/cadecoder/core/errors.py +19 -0
  18. {cade_cli-0.3.4 → cade_cli-0.5.0}/src/cadecoder/execution/orchestrator.py +5 -2
  19. {cade_cli-0.3.4 → cade_cli-0.5.0}/src/cadecoder/providers/__init__.py +35 -15
  20. {cade_cli-0.3.4 → cade_cli-0.5.0}/src/cadecoder/providers/base.py +1 -0
  21. cade_cli-0.5.0/src/cadecoder/providers/ollama.py +308 -0
  22. {cade_cli-0.3.4 → cade_cli-0.5.0}/src/cadecoder/providers/openai.py +5 -2
  23. {cade_cli-0.3.4 → cade_cli-0.5.0}/src/cadecoder/tools/__init__.py +9 -21
  24. {cade_cli-0.3.4 → cade_cli-0.5.0}/src/cadecoder/tools/manager/__init__.py +3 -10
  25. cade_cli-0.5.0/src/cadecoder/tools/manager/composite.py +267 -0
  26. {cade_cli-0.3.4 → cade_cli-0.5.0}/src/cadecoder/tools/manager/config.py +21 -0
  27. {cade_cli-0.3.4 → cade_cli-0.5.0}/src/cadecoder/tools/manager/mcp.py +243 -7
  28. {cade_cli-0.3.4 → cade_cli-0.5.0}/src/cadecoder/ui/session.py +23 -7
  29. cade_cli-0.3.4/README.md +0 -224
  30. cade_cli-0.3.4/src/cadecoder/__init__.py +0 -1
  31. cade_cli-0.3.4/src/cadecoder/cli/commands/tools.py +0 -226
  32. cade_cli-0.3.4/src/cadecoder/tools/manager/arcade.py +0 -277
  33. cade_cli-0.3.4/src/cadecoder/tools/manager/cache.py +0 -129
  34. cade_cli-0.3.4/src/cadecoder/tools/manager/composite.py +0 -157
  35. cade_cli-0.3.4/src/cadecoder/tools/manager/local.py +0 -122
  36. {cade_cli-0.3.4 → cade_cli-0.5.0}/src/cadecoder/ai/__init__.py +0 -0
  37. {cade_cli-0.3.4 → cade_cli-0.5.0}/src/cadecoder/ai/prompts.py +0 -0
  38. {cade_cli-0.3.4 → cade_cli-0.5.0}/src/cadecoder/cli/__init__.py +0 -0
  39. {cade_cli-0.3.4 → cade_cli-0.5.0}/src/cadecoder/cli/commands/__init__.py +0 -0
  40. {cade_cli-0.3.4 → cade_cli-0.5.0}/src/cadecoder/cli/commands/auth.py +0 -0
  41. {cade_cli-0.3.4 → cade_cli-0.5.0}/src/cadecoder/core/__init__.py +0 -0
  42. {cade_cli-0.3.4 → cade_cli-0.5.0}/src/cadecoder/core/logging.py +0 -0
  43. {cade_cli-0.3.4 → cade_cli-0.5.0}/src/cadecoder/core/names.py +0 -0
  44. {cade_cli-0.3.4 → cade_cli-0.5.0}/src/cadecoder/core/types.py +0 -0
  45. {cade_cli-0.3.4 → cade_cli-0.5.0}/src/cadecoder/execution/__init__.py +0 -0
  46. {cade_cli-0.3.4 → cade_cli-0.5.0}/src/cadecoder/execution/context_window.py +0 -0
  47. {cade_cli-0.3.4 → cade_cli-0.5.0}/src/cadecoder/execution/parallel.py +0 -0
  48. {cade_cli-0.3.4 → cade_cli-0.5.0}/src/cadecoder/providers/anthropic.py +0 -0
  49. {cade_cli-0.3.4 → cade_cli-0.5.0}/src/cadecoder/storage/__init__.py +0 -0
  50. {cade_cli-0.3.4 → cade_cli-0.5.0}/src/cadecoder/storage/threads.py +0 -0
  51. {cade_cli-0.3.4 → cade_cli-0.5.0}/src/cadecoder/templates/login_failed.html +0 -0
  52. {cade_cli-0.3.4 → cade_cli-0.5.0}/src/cadecoder/templates/login_success.html +0 -0
  53. {cade_cli-0.3.4 → cade_cli-0.5.0}/src/cadecoder/templates/styles.css +0 -0
  54. {cade_cli-0.3.4 → cade_cli-0.5.0}/src/cadecoder/tools/local/__init__.py +0 -0
  55. {cade_cli-0.3.4 → cade_cli-0.5.0}/src/cadecoder/tools/local/filesystem.py +0 -0
  56. {cade_cli-0.3.4 → cade_cli-0.5.0}/src/cadecoder/tools/local/git.py +0 -0
  57. {cade_cli-0.3.4 → cade_cli-0.5.0}/src/cadecoder/tools/local/search.py +0 -0
  58. {cade_cli-0.3.4 → cade_cli-0.5.0}/src/cadecoder/tools/local/shell.py +0 -0
  59. {cade_cli-0.3.4 → cade_cli-0.5.0}/src/cadecoder/tools/manager/base.py +0 -0
  60. {cade_cli-0.3.4 → cade_cli-0.5.0}/src/cadecoder/ui/__init__.py +0 -0
  61. {cade_cli-0.3.4 → cade_cli-0.5.0}/src/cadecoder/ui/display.py +0 -0
@@ -41,3 +41,6 @@ build/
41
41
  .venv
42
42
  activate.sh
43
43
  docs/
44
+
45
+ # uv
46
+ uv.lock
cade_cli-0.5.0/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2024 Arcade AI Inc.
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,385 @@
1
+ Metadata-Version: 2.4
2
+ Name: cade-cli
3
+ Version: 0.5.0
4
+ Summary: Cade - The CLI Agent from Arcade.dev
5
+ Project-URL: Homepage, https://arcade.dev
6
+ Project-URL: Documentation, https://docs.arcade.dev
7
+ Project-URL: Repository, https://github.com/arcadeai-labs/cade
8
+ Project-URL: Issues, https://github.com/arcadeai-labs/cade/issues
9
+ Project-URL: Changelog, https://github.com/arcadeai-labs/cade/releases
10
+ Author-email: "Arcade AI Inc." <dev@arcade.dev>
11
+ License: MIT License
12
+
13
+ Copyright (c) 2024 Arcade AI Inc.
14
+
15
+ Permission is hereby granted, free of charge, to any person obtaining a copy
16
+ of this software and associated documentation files (the "Software"), to deal
17
+ in the Software without restriction, including without limitation the rights
18
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
19
+ copies of the Software, and to permit persons to whom the Software is
20
+ furnished to do so, subject to the following conditions:
21
+
22
+ The above copyright notice and this permission notice shall be included in all
23
+ copies or substantial portions of the Software.
24
+
25
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
26
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
27
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
28
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
29
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
30
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
31
+ SOFTWARE.
32
+ License-File: LICENSE
33
+ Keywords: agent,ai,arcade,cli,coding-assistant,llm,mcp
34
+ Classifier: Development Status :: 4 - Beta
35
+ Classifier: Environment :: Console
36
+ Classifier: Intended Audience :: Developers
37
+ Classifier: License :: OSI Approved :: MIT License
38
+ Classifier: Operating System :: OS Independent
39
+ Classifier: Programming Language :: Python :: 3
40
+ Classifier: Programming Language :: Python :: 3.11
41
+ Classifier: Programming Language :: Python :: 3.12
42
+ Classifier: Topic :: Software Development
43
+ Classifier: Topic :: Software Development :: Code Generators
44
+ Classifier: Typing :: Typed
45
+ Requires-Python: >=3.11
46
+ Requires-Dist: anthropic<1.0.0,>=0.34.0
47
+ Requires-Dist: arcade-core<5.0.0,>=4.1.0
48
+ Requires-Dist: arcade-mcp-server>=1.0.0
49
+ Requires-Dist: arcade-tdk>=2.0.0
50
+ Requires-Dist: authlib<2.0.0,>=1.6.0
51
+ Requires-Dist: httpx<1.0.0,>=0.27.0
52
+ Requires-Dist: openai<2.0.0,>=1.0.0
53
+ Requires-Dist: prompt-toolkit<4.0.0,>=3.0.52
54
+ Requires-Dist: pydantic[email]<3.0.0,>=2.0.0
55
+ Requires-Dist: pyperclip<2.0.0,>=1.8.0
56
+ Requires-Dist: pyyaml<7.0.0,>=6.0
57
+ Requires-Dist: rich<14.0.0,>=13.0.0
58
+ Requires-Dist: tiktoken<1.0.0,>=0.11.0
59
+ Requires-Dist: toml<1.0.0,>=0.10.0
60
+ Requires-Dist: typer>0.10.0
61
+ Requires-Dist: ulid==1.1
62
+ Provides-Extra: dev
63
+ Requires-Dist: mypy<2.0.0,>=1.10.0; extra == 'dev'
64
+ Requires-Dist: pytest-asyncio<1.0.0,>=0.24.0; extra == 'dev'
65
+ Requires-Dist: pytest-cov<5.0.0,>=4.0.0; extra == 'dev'
66
+ Requires-Dist: pytest-mock<4.0.0,>=3.11.0; extra == 'dev'
67
+ Requires-Dist: pytest<9.0.0,>=8.0.0; extra == 'dev'
68
+ Requires-Dist: ruff<1.0.0,>=0.5.0; extra == 'dev'
69
+ Provides-Extra: training
70
+ Requires-Dist: accelerate>=0.27.0; extra == 'training'
71
+ Requires-Dist: safetensors>=0.4.2; extra == 'training'
72
+ Requires-Dist: torch>=2.1.0; extra == 'training'
73
+ Requires-Dist: transformers>=4.38.0; extra == 'training'
74
+ Description-Content-Type: text/markdown
75
+
76
+ # Cade
77
+
78
+ An AI-powered CLI agent for coding and everyday tasks. Powered by [Arcade.dev](https://arcade.dev).
79
+
80
+ ## Installation
81
+
82
+ ### Prerequisites
83
+
84
+ - Python 3.11+
85
+ - Arcade account ([arcade.dev](https://arcade.dev))
86
+ - AI provider API key: `OPENAI_API_KEY` or `ANTHROPIC_API_KEY`
87
+
88
+ ### Homebrew (macOS/Linux)
89
+
90
+ ```bash
91
+ brew tap ArcadeAI/tap
92
+ brew install cade
93
+ ```
94
+
95
+ ### Install with uv
96
+
97
+ ```bash
98
+ curl -LsSf https://astral.sh/uv/install.sh | sh
99
+ uv tool install cade-cli
100
+ ```
101
+
102
+ ### Install with pip
103
+
104
+ ```bash
105
+ pip install cade-cli
106
+ ```
107
+
108
+ ### From Source
109
+
110
+ ```bash
111
+ git clone https://github.com/arcadeai-labs/cade.git
112
+ cd cade
113
+ uv venv --python 3.11
114
+ source .venv/bin/activate
115
+ uv sync
116
+ ```
117
+
118
+ ### Authenticate
119
+
120
+ ```bash
121
+ cade login
122
+ ```
123
+
124
+ ## Usage
125
+
126
+ ### Start a Chat
127
+
128
+ ```bash
129
+ cade
130
+ ```
131
+
132
+ ### Resume a Thread
133
+
134
+ ```bash
135
+ cade -r # Resume most recent
136
+ cade resume "my-project" # Resume by name
137
+ ```
138
+
139
+ ### Authentication
140
+
141
+ Cade uses Arcade Cloud for authentication and shares credentials with arcade-cli.
142
+
143
+ ```bash
144
+ cade login # Log in to Arcade Cloud
145
+ cade logout # Log out
146
+ cade whoami # Show current login status
147
+ ```
148
+
149
+ ### Context Management
150
+
151
+ Switch between organizations and projects for Arcade Cloud features.
152
+
153
+ ```bash
154
+ cade context show # Show current org/project
155
+ cade context list # List available orgs and projects
156
+ cade context switch -i # Interactive selection
157
+ cade context switch --org my-org --project my-project
158
+ ```
159
+
160
+ ### Single Message Mode
161
+
162
+ ```bash
163
+ cade -m "What files are in this directory?"
164
+ cat error.log | cade -m "What went wrong?"
165
+ ```
166
+
167
+ ### Options
168
+
169
+ | Option | Description |
170
+ |--------|-------------|
171
+ | `-r`, `--resume` | Resume the most recent thread |
172
+ | `-m`, `--message` | Single message mode (non-interactive) |
173
+ | `-L`, `--local-only` | Disable remote tools (use only local tools) |
174
+ | `-v`, `--verbose` | Enable debug logging |
175
+ | `--version` | Show version |
176
+
177
+ ### In-Chat Commands
178
+
179
+ | Command | Description |
180
+ |---------|-------------|
181
+ | `/help` | Show available commands |
182
+ | `/logs` | View recent log entries |
183
+ | `/clear` | Clear the screen |
184
+ | `/copy` | Copy last response to clipboard |
185
+ | `Ctrl+C` | Exit |
186
+
187
+ ## Thread Management
188
+
189
+ ```bash
190
+ cade thread list # List all threads
191
+ cade thread list --branch main # Filter by branch
192
+ cade thread get <thread-id> # Get thread details
193
+ cade thread get <thread-id> --messages # Show messages
194
+ cade thread delete <thread-id> # Delete thread
195
+ ```
196
+
197
+ ## Tool Management
198
+
199
+ Tools come from three sources: local, Arcade Cloud, and MCP servers.
200
+
201
+ ```bash
202
+ cade tool list # List all tools
203
+ cade tool list --source local # Filter by source
204
+ cade tool search "file" # Search tools
205
+ cade tool info Local_ReadFile # Tool details
206
+ ```
207
+
208
+ ### Built-in Tools
209
+
210
+ | Tool | Description |
211
+ |------|-------------|
212
+ | `Local_ReadFile` | Read file contents |
213
+ | `Local_WriteFile` | Write or append to files |
214
+ | `Local_ListFiles` | List directory contents |
215
+ | `Local_SearchText` | Search for text patterns |
216
+ | `Local_ExecuteShell` | Run shell commands |
217
+ | `Local_CreateDirectory` | Create directories |
218
+ | `Local_DeleteFile` | Delete files |
219
+ | `Local_GetGitStatus` | Get git status |
220
+
221
+ ## MCP Servers
222
+
223
+ Connect to [MCP](https://modelcontextprotocol.io/) servers for extended capabilities.
224
+
225
+ ```bash
226
+ cade mcp list # List servers
227
+ cade mcp add my-server http://localhost:8080 # Add server
228
+ cade mcp add my-server http://localhost:8080 --auth bearer -t <token> # With auth
229
+ cade mcp test my-server # Test connection
230
+ cade mcp enable my-server # Enable
231
+ cade mcp disable my-server # Disable
232
+ cade mcp rm my-server # Remove
233
+ ```
234
+
235
+ ## Configuration
236
+
237
+ Config is stored in `~/.cadecoder/`:
238
+
239
+ | File | Description |
240
+ |------|-------------|
241
+ | `cadecoder.toml` | Settings |
242
+ | `cadecoder_history.db` | Thread history |
243
+ | `cadecoder.log` | Logs |
244
+ | `mcp_servers.yaml` | MCP server configs |
245
+
246
+ ### Environment Variables
247
+
248
+ | Variable | Description |
249
+ |----------|-------------|
250
+ | `OPENAI_API_KEY` | OpenAI API key |
251
+ | `OPENAI_BASE_URL` | Custom OpenAI-compatible API endpoint |
252
+ | `ANTHROPIC_API_KEY` | Anthropic API key |
253
+ | `ARCADE_API_KEY` | Arcade API key (alternative to OAuth) |
254
+ | `ARCADE_BASE_URL` | Custom Arcade API endpoint |
255
+ | `CADE_LOCAL_ONLY` | Set to `1` to disable remote tools |
256
+ | `CADECODER_HOME` | Override config directory |
257
+
258
+ ### Example Config
259
+
260
+ ```toml
261
+ # ~/.cadecoder/cadecoder.toml
262
+
263
+ default_model = "gpt-4.1"
264
+ debug_mode = false
265
+ use_responses_api = true
266
+
267
+ [responses_config]
268
+ enabled = true
269
+ streaming_enabled = true
270
+
271
+ [model_settings]
272
+ provider = "openai"
273
+ model = "gpt-4.1"
274
+
275
+ [tool_settings]
276
+ # Tool filtering is managed via MCP server configuration
277
+ # See: cade mcp add --help
278
+ ```
279
+
280
+ ## Using Local or Custom LLMs
281
+
282
+ Cade works with any OpenAI-compatible API, including local servers (Ollama, vLLM, llama.cpp) and alternative cloud providers (Together AI, Groq, Fireworks).
283
+
284
+ ### Local-Only Mode
285
+
286
+ When using local LLMs, you can skip Arcade Cloud authentication entirely with `--local-only`:
287
+
288
+ ```bash
289
+ # Local Ollama server without Arcade Cloud
290
+ cade chat --local-only --endpoint "http://localhost:11434/v1" --model "llama3"
291
+
292
+ # Or via environment variable
293
+ CADE_LOCAL_ONLY=1 cade chat --endpoint "http://localhost:11434/v1" --model "llama3"
294
+ ```
295
+
296
+ This disables remote tools and uses only local tools. Cade will also gracefully fall back to local-only mode if Arcade Cloud authentication is not configured.
297
+
298
+ ### Via CLI Flags
299
+
300
+ ```bash
301
+ # Local Ollama server
302
+ cade chat --endpoint "http://localhost:11434/v1" --model "glm-4.7-flash:latest"
303
+
304
+ # vLLM server
305
+ cade chat -e http://localhost:8000/v1 -m mistral-7b
306
+ ```
307
+
308
+ ### Via Environment Variables
309
+
310
+ ```bash
311
+ export OPENAI_BASE_URL="http://localhost:11434/v1"
312
+ export OPENAI_API_KEY="ollama" # Dummy key for local model
313
+ cade chat --model glm-4.7-flash:latest
314
+ ```
315
+
316
+ ### Via Config File
317
+
318
+ ```toml
319
+ # ~/.cadecoder/cadecoder.toml
320
+
321
+ default_model = "glm-4.7-flash:latest"
322
+
323
+ [model_settings]
324
+ host = "http://localhost:11434/v1"
325
+ api_key = "ollama"
326
+ ```
327
+
328
+ After configuring the TOML file:
329
+
330
+ ```bash
331
+ cade chat
332
+ ```
333
+
334
+ ### `cade chat` Configuration Precedence
335
+
336
+ Settings are resolved in this order (first is used):
337
+
338
+ 1. CLI flags (`--endpoint`, `--model`)
339
+ 2. Environment variables (`OPENAI_BASE_URL`, `OPENAI_API_KEY`)
340
+ 3. Config file (`model_settings.host`, `model_settings.api_key`)
341
+ 4. Hardcoded defaults
342
+
343
+ ## Contributing
344
+
345
+ ### Development Setup
346
+
347
+ ```bash
348
+ git clone https://github.com/arcadeai-labs/cade.git
349
+ cd cade
350
+ uv sync --extra dev
351
+ ```
352
+
353
+ ### Run Tests
354
+
355
+ ```bash
356
+ pytest
357
+ ruff check src/
358
+ ruff format src/
359
+ ```
360
+
361
+ ### Code Style
362
+
363
+ - Python 3.11+ with modern type hints (`dict`, `list`, `| None`)
364
+ - Ruff for linting and formatting
365
+ - Pytest for testing
366
+ - Docstrings for public functions and classes
367
+
368
+ ### Submitting Changes
369
+
370
+ 1. Fork the repository
371
+ 2. Create a feature branch
372
+ 3. Make changes with tests
373
+ 4. Run `ruff check . && pytest`
374
+ 5. Open a Pull Request
375
+
376
+ ## Resources
377
+
378
+ - [arcade.dev](https://arcade.dev)
379
+ - [Documentation](https://docs.arcade.dev)
380
+ - [Issues](https://github.com/arcadeai-labs/cade/issues)
381
+ - [Releases](https://github.com/arcadeai-labs/cade/releases)
382
+
383
+ ## License
384
+
385
+ MIT
@@ -1,57 +1,3 @@
1
- Metadata-Version: 2.4
2
- Name: cade-cli
3
- Version: 0.3.4
4
- Summary: Cade - The CLI Agent from Arcade.dev
5
- Project-URL: Homepage, https://arcade.dev
6
- Project-URL: Documentation, https://docs.arcade.dev
7
- Project-URL: Repository, https://github.com/arcadeai-labs/cade
8
- Project-URL: Issues, https://github.com/arcadeai-labs/cade/issues
9
- Project-URL: Changelog, https://github.com/arcadeai-labs/cade/releases
10
- Author-email: "Arcade AI Inc." <dev@arcade.dev>
11
- License: MIT
12
- Keywords: agent,ai,arcade,cli,coding-assistant,llm,mcp
13
- Classifier: Development Status :: 4 - Beta
14
- Classifier: Environment :: Console
15
- Classifier: Intended Audience :: Developers
16
- Classifier: License :: OSI Approved :: MIT License
17
- Classifier: Operating System :: OS Independent
18
- Classifier: Programming Language :: Python :: 3
19
- Classifier: Programming Language :: Python :: 3.11
20
- Classifier: Programming Language :: Python :: 3.12
21
- Classifier: Topic :: Software Development
22
- Classifier: Topic :: Software Development :: Code Generators
23
- Classifier: Typing :: Typed
24
- Requires-Python: >=3.11
25
- Requires-Dist: anthropic<1.0.0,>=0.34.0
26
- Requires-Dist: arcade-core<5.0.0,>=4.1.0
27
- Requires-Dist: arcade-tdk>=2.0.0
28
- Requires-Dist: arcadepy>=1.3.1
29
- Requires-Dist: authlib<2.0.0,>=1.6.0
30
- Requires-Dist: httpx<1.0.0,>=0.27.0
31
- Requires-Dist: openai<2.0.0,>=1.0.0
32
- Requires-Dist: prompt-toolkit>=3.0.52
33
- Requires-Dist: pydantic[email]<3.0.0,>=2.0.0
34
- Requires-Dist: pyperclip<2.0.0,>=1.8.0
35
- Requires-Dist: pyyaml<7.0.0,>=6.0
36
- Requires-Dist: rich<14.0.0,>=13.0.0
37
- Requires-Dist: tiktoken>=0.11.0
38
- Requires-Dist: toml<1.0.0,>=0.10.0
39
- Requires-Dist: typer>0.10.0
40
- Requires-Dist: ulid==1.1
41
- Provides-Extra: dev
42
- Requires-Dist: mypy<2.0.0,>=1.10.0; extra == 'dev'
43
- Requires-Dist: pytest-asyncio<1.0.0,>=0.24.0; extra == 'dev'
44
- Requires-Dist: pytest-cov<5.0.0,>=4.0.0; extra == 'dev'
45
- Requires-Dist: pytest-mock<4.0.0,>=3.11.0; extra == 'dev'
46
- Requires-Dist: pytest<9.0.0,>=8.0.0; extra == 'dev'
47
- Requires-Dist: ruff<1.0.0,>=0.5.0; extra == 'dev'
48
- Provides-Extra: training
49
- Requires-Dist: accelerate>=0.27.0; extra == 'training'
50
- Requires-Dist: safetensors>=0.4.2; extra == 'training'
51
- Requires-Dist: torch>=2.1.0; extra == 'training'
52
- Requires-Dist: transformers>=4.38.0; extra == 'training'
53
- Description-Content-Type: text/markdown
54
-
55
1
  # Cade
56
2
 
57
3
  An AI-powered CLI agent for coding and everyday tasks. Powered by [Arcade.dev](https://arcade.dev).
@@ -75,7 +21,7 @@ brew install cade
75
21
 
76
22
  ```bash
77
23
  curl -LsSf https://astral.sh/uv/install.sh | sh
78
- uv pip install cade-cli
24
+ uv tool install cade-cli
79
25
  ```
80
26
 
81
27
  ### Install with pip
@@ -115,6 +61,27 @@ cade -r # Resume most recent
115
61
  cade resume "my-project" # Resume by name
116
62
  ```
117
63
 
64
+ ### Authentication
65
+
66
+ Cade uses Arcade Cloud for authentication and shares credentials with arcade-cli.
67
+
68
+ ```bash
69
+ cade login # Log in to Arcade Cloud
70
+ cade logout # Log out
71
+ cade whoami # Show current login status
72
+ ```
73
+
74
+ ### Context Management
75
+
76
+ Switch between organizations and projects for Arcade Cloud features.
77
+
78
+ ```bash
79
+ cade context show # Show current org/project
80
+ cade context list # List available orgs and projects
81
+ cade context switch -i # Interactive selection
82
+ cade context switch --org my-org --project my-project
83
+ ```
84
+
118
85
  ### Single Message Mode
119
86
 
120
87
  ```bash
@@ -128,6 +95,7 @@ cat error.log | cade -m "What went wrong?"
128
95
  |--------|-------------|
129
96
  | `-r`, `--resume` | Resume the most recent thread |
130
97
  | `-m`, `--message` | Single message mode (non-interactive) |
98
+ | `-L`, `--local-only` | Disable remote tools (use only local tools) |
131
99
  | `-v`, `--verbose` | Enable debug logging |
132
100
  | `--version` | Show version |
133
101
 
@@ -205,9 +173,11 @@ Config is stored in `~/.cadecoder/`:
205
173
  | Variable | Description |
206
174
  |----------|-------------|
207
175
  | `OPENAI_API_KEY` | OpenAI API key |
176
+ | `OPENAI_BASE_URL` | Custom OpenAI-compatible API endpoint |
208
177
  | `ANTHROPIC_API_KEY` | Anthropic API key |
209
178
  | `ARCADE_API_KEY` | Arcade API key (alternative to OAuth) |
210
179
  | `ARCADE_BASE_URL` | Custom Arcade API endpoint |
180
+ | `CADE_LOCAL_ONLY` | Set to `1` to disable remote tools |
211
181
  | `CADECODER_HOME` | Override config directory |
212
182
 
213
183
  ### Example Config
@@ -228,9 +198,73 @@ provider = "openai"
228
198
  model = "gpt-4.1"
229
199
 
230
200
  [tool_settings]
231
- disabled_tools = []
201
+ # Tool filtering is managed via MCP server configuration
202
+ # See: cade mcp add --help
203
+ ```
204
+
205
+ ## Using Local or Custom LLMs
206
+
207
+ Cade works with any OpenAI-compatible API, including local servers (Ollama, vLLM, llama.cpp) and alternative cloud providers (Together AI, Groq, Fireworks).
208
+
209
+ ### Local-Only Mode
210
+
211
+ When using local LLMs, you can skip Arcade Cloud authentication entirely with `--local-only`:
212
+
213
+ ```bash
214
+ # Local Ollama server without Arcade Cloud
215
+ cade chat --local-only --endpoint "http://localhost:11434/v1" --model "llama3"
216
+
217
+ # Or via environment variable
218
+ CADE_LOCAL_ONLY=1 cade chat --endpoint "http://localhost:11434/v1" --model "llama3"
219
+ ```
220
+
221
+ This disables remote tools and uses only local tools. Cade will also gracefully fall back to local-only mode if Arcade Cloud authentication is not configured.
222
+
223
+ ### Via CLI Flags
224
+
225
+ ```bash
226
+ # Local Ollama server
227
+ cade chat --endpoint "http://localhost:11434/v1" --model "glm-4.7-flash:latest"
228
+
229
+ # vLLM server
230
+ cade chat -e http://localhost:8000/v1 -m mistral-7b
231
+ ```
232
+
233
+ ### Via Environment Variables
234
+
235
+ ```bash
236
+ export OPENAI_BASE_URL="http://localhost:11434/v1"
237
+ export OPENAI_API_KEY="ollama" # Dummy key for local model
238
+ cade chat --model glm-4.7-flash:latest
232
239
  ```
233
240
 
241
+ ### Via Config File
242
+
243
+ ```toml
244
+ # ~/.cadecoder/cadecoder.toml
245
+
246
+ default_model = "glm-4.7-flash:latest"
247
+
248
+ [model_settings]
249
+ host = "http://localhost:11434/v1"
250
+ api_key = "ollama"
251
+ ```
252
+
253
+ After configuring the TOML file:
254
+
255
+ ```bash
256
+ cade chat
257
+ ```
258
+
259
+ ### `cade chat` Configuration Precedence
260
+
261
+ Settings are resolved in this order (first is used):
262
+
263
+ 1. CLI flags (`--endpoint`, `--model`)
264
+ 2. Environment variables (`OPENAI_BASE_URL`, `OPENAI_API_KEY`)
265
+ 3. Config file (`model_settings.host`, `model_settings.api_key`)
266
+ 4. Hardcoded defaults
267
+
234
268
  ## Contributing
235
269
 
236
270
  ### Development Setup
@@ -238,9 +272,7 @@ disabled_tools = []
238
272
  ```bash
239
273
  git clone https://github.com/arcadeai-labs/cade.git
240
274
  cd cade
241
- uv venv --python 3.11
242
- source .venv/bin/activate
243
- uv pip install -e '.[dev]'
275
+ uv sync --extra dev
244
276
  ```
245
277
 
246
278
  ### Run Tests
@@ -1,10 +1,10 @@
1
1
  [project]
2
2
  name = "cade-cli"
3
- version = "0.3.4"
3
+ version = "0.5.0"
4
4
  description = "Cade - The CLI Agent from Arcade.dev"
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.11"
7
- license = {text = "MIT"}
7
+ license = {file = "LICENSE"}
8
8
  authors = [
9
9
  { name = "Arcade AI Inc.", email = "dev@arcade.dev" },
10
10
  ]
@@ -28,16 +28,16 @@ dependencies = [
28
28
  "pydantic[email]>=2.0.0,<3.0.0",
29
29
  "toml>=0.10.0,<1.0.0",
30
30
  "pyyaml>=6.0,<7.0.0",
31
- "arcadepy>=1.3.1",
32
31
  "openai>=1.0.0,<2.0.0",
33
32
  "anthropic>=0.34.0,<1.0.0",
34
33
  "ulid==1.1",
35
34
  "arcade-tdk>=2.0.0",
35
+ "arcade-mcp-server>=1.0.0",
36
36
  "arcade-core>=4.1.0,<5.0.0",
37
37
  "authlib>=1.6.0,<2.0.0",
38
38
  "pyperclip>=1.8.0,<2.0.0",
39
- "prompt-toolkit>=3.0.52",
40
- "tiktoken>=0.11.0",
39
+ "prompt-toolkit>=3.0.52,<4.0.0",
40
+ "tiktoken>=0.11.0,<1.0.0",
41
41
  "httpx>=0.27.0,<1.0.0",
42
42
  ]
43
43
 
@@ -0,0 +1 @@
1
+ __version__ = "0.5.0"
@@ -13,6 +13,7 @@ from rich.console import Console
13
13
 
14
14
  from cadecoder import __version__
15
15
  from cadecoder.cli.commands import auth, chat
16
+ from cadecoder.cli.commands.context import context_app
16
17
  from cadecoder.cli.commands.mcp import mcp_app
17
18
  from cadecoder.cli.commands.model import model_app
18
19
  from cadecoder.cli.commands.thread import thread_app
@@ -41,6 +42,12 @@ app.command(name="resume", help="Resume the most recent thread or a specific thr
41
42
  )
42
43
 
43
44
  # Register sub-command groups
45
+ app.add_typer(
46
+ context_app,
47
+ name="context",
48
+ help="Manage organization and project context",
49
+ rich_help_panel="User",
50
+ )
44
51
  app.add_typer(mcp_app, name="mcp", help="Manage MCP servers", rich_help_panel="Tools")
45
52
  app.add_typer(model_app, name="model", help="Manage AI models", rich_help_panel="Tools")
46
53
  app.add_typer(tool_app, name="tools", help="View available tools", rich_help_panel="Tools")