kubrick-cli 0.1.6__tar.gz → 0.2.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.
- kubrick_cli-0.2.0/PKG-INFO +191 -0
- kubrick_cli-0.2.0/README.md +158 -0
- kubrick_cli-0.2.0/kubrick_cli/__init__.py +3 -0
- kubrick_cli-0.2.0/kubrick_cli/agent_loop.py +386 -0
- kubrick_cli-0.2.0/kubrick_cli/aws_credentials.py +130 -0
- kubrick_cli-0.2.0/kubrick_cli/config.py +352 -0
- kubrick_cli-0.2.0/kubrick_cli/context_manager.py +267 -0
- kubrick_cli-0.2.0/kubrick_cli/credentials.py +330 -0
- kubrick_cli-0.2.0/kubrick_cli/display.py +213 -0
- kubrick_cli-0.2.0/kubrick_cli/glyphs.py +56 -0
- kubrick_cli-0.2.0/kubrick_cli/main.py +983 -0
- kubrick_cli-0.2.0/kubrick_cli/messages.py +226 -0
- kubrick_cli-0.2.0/kubrick_cli/permissions.py +336 -0
- kubrick_cli-0.2.0/kubrick_cli/prompts.py +138 -0
- kubrick_cli-0.2.0/kubrick_cli/providers/anthropic_provider.py +546 -0
- kubrick_cli-0.2.0/kubrick_cli/providers/base.py +159 -0
- kubrick_cli-0.2.0/kubrick_cli/providers/bedrock_provider.py +760 -0
- kubrick_cli-0.2.0/kubrick_cli/providers/factory.py +192 -0
- kubrick_cli-0.2.0/kubrick_cli/providers/http.py +146 -0
- kubrick_cli-0.2.0/kubrick_cli/providers/openai_provider.py +641 -0
- kubrick_cli-0.2.0/kubrick_cli/providers/triton_provider.py +99 -0
- {kubrick_cli-0.1.6 → kubrick_cli-0.2.0}/kubrick_cli/safety.py +9 -7
- kubrick_cli-0.2.0/kubrick_cli/setup_wizard.py +651 -0
- kubrick_cli-0.2.0/kubrick_cli/tool_protocol.py +141 -0
- kubrick_cli-0.2.0/kubrick_cli/tools.py +614 -0
- {kubrick_cli-0.1.6 → kubrick_cli-0.2.0}/kubrick_cli/triton_client.py +32 -15
- kubrick_cli-0.2.0/kubrick_cli/ui.py +312 -0
- kubrick_cli-0.2.0/kubrick_cli/updater.py +293 -0
- kubrick_cli-0.2.0/kubrick_cli/widgets.py +441 -0
- kubrick_cli-0.2.0/kubrick_cli.egg-info/PKG-INFO +191 -0
- {kubrick_cli-0.1.6 → kubrick_cli-0.2.0}/kubrick_cli.egg-info/SOURCES.txt +24 -9
- kubrick_cli-0.2.0/kubrick_cli.egg-info/requires.txt +23 -0
- {kubrick_cli-0.1.6 → kubrick_cli-0.2.0}/pyproject.toml +9 -4
- kubrick_cli-0.2.0/tests/test_agent_loop.py +273 -0
- kubrick_cli-0.2.0/tests/test_anthropic_provider.py +592 -0
- kubrick_cli-0.2.0/tests/test_aws_credentials.py +75 -0
- kubrick_cli-0.2.0/tests/test_bedrock_provider.py +663 -0
- kubrick_cli-0.2.0/tests/test_config.py +76 -0
- kubrick_cli-0.2.0/tests/test_context_manager.py +109 -0
- kubrick_cli-0.2.0/tests/test_credentials.py +92 -0
- kubrick_cli-0.2.0/tests/test_end_to_end.py +133 -0
- kubrick_cli-0.2.0/tests/test_openai_provider.py +216 -0
- kubrick_cli-0.2.0/tests/test_permissions.py +166 -0
- {kubrick_cli-0.1.6 → kubrick_cli-0.2.0}/tests/test_safety.py +14 -0
- kubrick_cli-0.2.0/tests/test_tool_calling.py +104 -0
- {kubrick_cli-0.1.6 → kubrick_cli-0.2.0}/tests/test_tool_executor.py +70 -0
- {kubrick_cli-0.1.6 → kubrick_cli-0.2.0}/tests/test_triton_client_unit.py +62 -0
- kubrick_cli-0.2.0/tests/test_triton_provider.py +103 -0
- kubrick_cli-0.2.0/tests/test_ui.py +358 -0
- kubrick_cli-0.2.0/tests/test_updater.py +170 -0
- kubrick_cli-0.1.6/PKG-INFO +0 -122
- kubrick_cli-0.1.6/README.md +0 -98
- kubrick_cli-0.1.6/kubrick_cli/__init__.py +0 -47
- kubrick_cli-0.1.6/kubrick_cli/agent_loop.py +0 -520
- kubrick_cli-0.1.6/kubrick_cli/animated_display.py +0 -250
- kubrick_cli-0.1.6/kubrick_cli/classifier.py +0 -199
- kubrick_cli-0.1.6/kubrick_cli/config.py +0 -291
- kubrick_cli-0.1.6/kubrick_cli/context_manager.py +0 -456
- kubrick_cli-0.1.6/kubrick_cli/display.py +0 -154
- kubrick_cli-0.1.6/kubrick_cli/evaluator.py +0 -281
- kubrick_cli-0.1.6/kubrick_cli/execution_strategy.py +0 -195
- kubrick_cli-0.1.6/kubrick_cli/main.py +0 -1369
- kubrick_cli-0.1.6/kubrick_cli/planning.py +0 -319
- kubrick_cli-0.1.6/kubrick_cli/progress.py +0 -162
- kubrick_cli-0.1.6/kubrick_cli/providers/anthropic_provider.py +0 -209
- kubrick_cli-0.1.6/kubrick_cli/providers/base.py +0 -153
- kubrick_cli-0.1.6/kubrick_cli/providers/factory.py +0 -161
- kubrick_cli-0.1.6/kubrick_cli/providers/openai_provider.py +0 -181
- kubrick_cli-0.1.6/kubrick_cli/providers/triton_provider.py +0 -96
- kubrick_cli-0.1.6/kubrick_cli/scheduler.py +0 -183
- kubrick_cli-0.1.6/kubrick_cli/setup_wizard.py +0 -161
- kubrick_cli-0.1.6/kubrick_cli/tools.py +0 -542
- kubrick_cli-0.1.6/kubrick_cli/ui.py +0 -342
- kubrick_cli-0.1.6/kubrick_cli.egg-info/PKG-INFO +0 -122
- kubrick_cli-0.1.6/kubrick_cli.egg-info/requires.txt +0 -11
- kubrick_cli-0.1.6/tests/test_completion_detector.py +0 -345
- kubrick_cli-0.1.6/tests/test_config.py +0 -130
- kubrick_cli-0.1.6/tests/test_tool_calling.py +0 -126
- {kubrick_cli-0.1.6 → kubrick_cli-0.2.0}/LICENSE +0 -0
- {kubrick_cli-0.1.6 → kubrick_cli-0.2.0}/kubrick_cli/providers/__init__.py +0 -0
- {kubrick_cli-0.1.6 → kubrick_cli-0.2.0}/kubrick_cli.egg-info/dependency_links.txt +0 -0
- {kubrick_cli-0.1.6 → kubrick_cli-0.2.0}/kubrick_cli.egg-info/entry_points.txt +0 -0
- {kubrick_cli-0.1.6 → kubrick_cli-0.2.0}/kubrick_cli.egg-info/top_level.txt +0 -0
- {kubrick_cli-0.1.6 → kubrick_cli-0.2.0}/setup.cfg +0 -0
|
@@ -0,0 +1,191 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: kubrick-cli
|
|
3
|
+
Version: 0.2.0
|
|
4
|
+
Summary: Agentic coding CLI for local models (Ollama, vLLM, llama.cpp), Anthropic, OpenAI, Bedrock, and Triton
|
|
5
|
+
Author-email: Russell Land <rcland12@gmail.com>
|
|
6
|
+
License: MIT
|
|
7
|
+
Project-URL: Homepage, https://github.com/rcland12/kubrick-cli
|
|
8
|
+
Project-URL: Repository, https://github.com/rcland12/kubrick-cli
|
|
9
|
+
Project-URL: Issues, https://github.com/rcland12/kubrick-cli/issues
|
|
10
|
+
Requires-Python: >=3.9
|
|
11
|
+
Description-Content-Type: text/markdown
|
|
12
|
+
License-File: LICENSE
|
|
13
|
+
Requires-Dist: rich>=13.0.0
|
|
14
|
+
Requires-Dist: prompt_toolkit>=3.0.36
|
|
15
|
+
Requires-Dist: cryptography>=42.0.0
|
|
16
|
+
Provides-Extra: bedrock
|
|
17
|
+
Requires-Dist: boto3>=1.34.0; extra == "bedrock"
|
|
18
|
+
Provides-Extra: keyring
|
|
19
|
+
Requires-Dist: keyring>=24.0.0; extra == "keyring"
|
|
20
|
+
Provides-Extra: all
|
|
21
|
+
Requires-Dist: boto3>=1.34.0; extra == "all"
|
|
22
|
+
Requires-Dist: keyring>=24.0.0; extra == "all"
|
|
23
|
+
Provides-Extra: dev
|
|
24
|
+
Requires-Dist: boto3>=1.34.0; extra == "dev"
|
|
25
|
+
Requires-Dist: pytest>=7.0.0; extra == "dev"
|
|
26
|
+
Requires-Dist: pytest-cov>=4.0.0; extra == "dev"
|
|
27
|
+
Requires-Dist: pytest-mock>=3.10.0; extra == "dev"
|
|
28
|
+
Requires-Dist: black>=22.0.0; extra == "dev"
|
|
29
|
+
Requires-Dist: flake8>=6.0.0; extra == "dev"
|
|
30
|
+
Requires-Dist: build>=1.0.0; extra == "dev"
|
|
31
|
+
Requires-Dist: twine>=5.0.0; extra == "dev"
|
|
32
|
+
Dynamic: license-file
|
|
33
|
+
|
|
34
|
+
# <img src="https://raw.githubusercontent.com/rcland12/kubrick-cli/master/docs/images/logo.svg" alt="" width="34" align="top"> Kubrick CLI
|
|
35
|
+
|
|
36
|
+
[](https://github.com/rcland12/kubrick-cli/actions/workflows/ci.yml)
|
|
37
|
+
[](https://github.com/rcland12/kubrick-cli/actions/workflows/cd.yml)
|
|
38
|
+
[](https://github.com/rcland12/kubrick-cli/actions/workflows/security.yml)
|
|
39
|
+
[](https://badge.fury.io/py/kubrick-cli)
|
|
40
|
+
[](https://pypi.org/project/kubrick-cli/)
|
|
41
|
+
[](https://pepy.tech/project/kubrick-cli)
|
|
42
|
+
[](https://hub.docker.com/r/rcland12/kubrick-cli)
|
|
43
|
+
[](https://hub.docker.com/r/rcland12/kubrick-cli)
|
|
44
|
+
[](https://codecov.io/gh/rcland12/kubrick-cli)
|
|
45
|
+
[](https://securityscorecards.dev/viewer/?uri=github.com/rcland12/kubrick-cli)
|
|
46
|
+
[](https://opensource.org/licenses/MIT)
|
|
47
|
+
[](https://github.com/psf/black)
|
|
48
|
+
|
|
49
|
+
An agentic coding CLI in the spirit of Claude Code — but provider-agnostic and built to work
|
|
50
|
+
well with **local models**. Kubrick reads and edits your code, runs commands, and iterates until
|
|
51
|
+
the task is done, using native tool calling on Ollama, vLLM, llama.cpp, LM Studio, Anthropic,
|
|
52
|
+
OpenAI, and Amazon Bedrock (Triton is supported with a text-based tool protocol).
|
|
53
|
+
|
|
54
|
+
## Installation
|
|
55
|
+
|
|
56
|
+
```bash
|
|
57
|
+
pip install kubrick-cli # core (local servers, Anthropic, OpenAI, Triton)
|
|
58
|
+
pip install 'kubrick-cli[bedrock]' # + Amazon Bedrock (boto3)
|
|
59
|
+
pip install 'kubrick-cli[keyring]' # + store API keys in the OS keychain
|
|
60
|
+
pip install 'kubrick-cli[all]' # everything
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
Requires Python 3.9+. A Docker image is also available — see [DOCKER.md](docs/DOCKER.md).
|
|
64
|
+
`uv tool install kubrick-cli` or `pipx install kubrick-cli` keeps it in its own environment.
|
|
65
|
+
|
|
66
|
+
**Updating:** `kubrick update` (or `/update` in a session) checks PyPI and runs the right
|
|
67
|
+
upgrade for how Kubrick was installed: `uv tool upgrade`, `pipx upgrade`, or pip in its
|
|
68
|
+
virtualenv. Docker and source checkouts get the command to run instead. `kubrick update
|
|
69
|
+
--check` only reports. Kubrick also checks once a day and mentions new releases at startup;
|
|
70
|
+
turn that off with `/config check_for_updates false`.
|
|
71
|
+
|
|
72
|
+
## Quick start
|
|
73
|
+
|
|
74
|
+
Run `kubrick` and the setup wizard walks you through choosing a provider. Or configure it
|
|
75
|
+
directly:
|
|
76
|
+
|
|
77
|
+
**Local model (Ollama, vLLM, llama.cpp, LM Studio)** — any OpenAI-compatible server:
|
|
78
|
+
|
|
79
|
+
```bash
|
|
80
|
+
# On the GPU box (Ollama example): serve on the LAN with a usable context window
|
|
81
|
+
OLLAMA_HOST=0.0.0.0 OLLAMA_CONTEXT_LENGTH=32768 ollama serve
|
|
82
|
+
|
|
83
|
+
# On your machine
|
|
84
|
+
kubrick setup # "Local model server" > Ollama > type gpu-box:11434 > pick a model
|
|
85
|
+
kubrick
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
**Anthropic**
|
|
89
|
+
|
|
90
|
+
```bash
|
|
91
|
+
kubrick auth login anthropic # stored encrypted (or in the OS keychain)
|
|
92
|
+
kubrick --provider anthropic # default model: claude-opus-5-5
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
**OpenAI**
|
|
96
|
+
|
|
97
|
+
```bash
|
|
98
|
+
export OPENAI_API_KEY=... # env vars work too and take precedence
|
|
99
|
+
kubrick --provider openai # default model: gpt-5
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
**Amazon Bedrock** — uses your normal AWS credentials (profiles, SSO); Kubrick stores none:
|
|
103
|
+
|
|
104
|
+
```bash
|
|
105
|
+
aws sso login --profile work
|
|
106
|
+
kubrick setup # choose "Amazon Bedrock", enter a model / inference profile ID
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
**Triton Inference Server** — see [TRITON.md](docs/TRITON.md).
|
|
110
|
+
|
|
111
|
+
## Usage
|
|
112
|
+
|
|
113
|
+
```
|
|
114
|
+
> fix the failing test in tests/test_parser.py
|
|
115
|
+
|
|
116
|
+
● Bash(pytest -q tests/test_parser.py)
|
|
117
|
+
└ Exit code: 1 ...
|
|
118
|
+
● Read(src/parser.py)
|
|
119
|
+
└ Read 212 lines
|
|
120
|
+
● Edit(src/parser.py)
|
|
121
|
+
└ Edited src/parser.py (1 replacement(s))
|
|
122
|
+
● Bash(pytest -q tests/test_parser.py)
|
|
123
|
+
└ Exit code: 0
|
|
124
|
+
|
|
125
|
+
Fixed the off-by-one in parse_range (src/parser.py:88); the test now passes.
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
Kubrick asks before editing files or running commands (read-only commands like `git status`
|
|
129
|
+
run without asking). Pick "Yes, and allow ..." (or press `a`) to allow that kind of action for
|
|
130
|
+
the rest of the session, or start with `--permission-mode accept_edits`. `/plan` switches to a
|
|
131
|
+
read-only planning mode.
|
|
132
|
+
|
|
133
|
+
Type `/` to open the command menu. It filters as you type (`/pr` shows `/provider`); press
|
|
134
|
+
↑/↓ to pick one, Tab to complete, Esc to close, or just keep typing and Enter sends what you
|
|
135
|
+
typed. `/provider`, `/model` and `/permissions` without an argument open a picker.
|
|
136
|
+
|
|
137
|
+
**Terminals.** Kubrick works in any terminal, including tmux/screen, Windows Terminal, and
|
|
138
|
+
Emacs (`vterm`, `eat`, `ansi-term`; in `M-x shell` and other dumb terminals menus become
|
|
139
|
+
numbered prompts). Set `KUBRICK_ASCII=1` if your font is missing symbols,
|
|
140
|
+
`KUBRICK_SIMPLE_UI=1` to always use numbered prompts, `NO_COLOR=1` to drop color, and
|
|
141
|
+
`/config editing_mode vi` for vi key bindings.
|
|
142
|
+
|
|
143
|
+
Non-interactive / scripting:
|
|
144
|
+
|
|
145
|
+
```bash
|
|
146
|
+
kubrick -p "summarize what this repo does"
|
|
147
|
+
git diff | kubrick -p "review this diff for bugs"
|
|
148
|
+
kubrick -p "update the changelog" --permission-mode accept_edits
|
|
149
|
+
kubrick -c # continue the most recent conversation
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
Put project-specific instructions (build/test commands, conventions) in a `KUBRICK.md` at the
|
|
153
|
+
repo root — `CLAUDE.md` and `AGENTS.md` are read too. `/init` generates one for you.
|
|
154
|
+
|
|
155
|
+
## Development
|
|
156
|
+
|
|
157
|
+
```bash
|
|
158
|
+
make dev # .venv with an editable install + dev tools (needs uv)
|
|
159
|
+
make run # run it against a throwaway playground project, with its own ~/.kubrick
|
|
160
|
+
make test # tests; `make lint` runs the CI checks
|
|
161
|
+
make sandbox # run it in Docker: only the project is visible, installs stay inside
|
|
162
|
+
make reset # delete .venv and .dev/ (everything above lives there)
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
`make run DIR=~/src/project` points it at a real project; `make reset-home` re-runs the setup
|
|
166
|
+
wizard. See [CONTRIBUTING.md](CONTRIBUTING.md).
|
|
167
|
+
|
|
168
|
+
## Features
|
|
169
|
+
|
|
170
|
+
- Native tool calling on every provider, with automatic fallback to a text protocol for models
|
|
171
|
+
or servers that don't support tools
|
|
172
|
+
- Claude Code-style permission modes, plan mode, and project instruction files
|
|
173
|
+
- Local-model friendly: context-window auto-detection (vLLM, Ollama), reasoning/`<think>`
|
|
174
|
+
display, recovery of unparsed `<tool_call>` output
|
|
175
|
+
- Automatic context compaction, conversation history (`-c`, `-r`, `/list`, `/load`)
|
|
176
|
+
- API keys kept out of config files: env vars, OS keychain, or a machine-bound encrypted store
|
|
177
|
+
- Streaming output, parallel read-only tools, ripgrep-backed search
|
|
178
|
+
|
|
179
|
+
## Documentation
|
|
180
|
+
|
|
181
|
+
- [WIKI.md](docs/WIKI.md) — commands, flags, permissions, configuration, troubleshooting
|
|
182
|
+
- [PROVIDERS.md](docs/PROVIDERS.md) — setting up each provider and local servers
|
|
183
|
+
- [SECURITY.md](docs/SECURITY.md) — credential storage and security policy
|
|
184
|
+
- [DOCKER.md](docs/DOCKER.md) — running in Docker
|
|
185
|
+
- [TRITON.md](docs/TRITON.md) — Triton backend setup
|
|
186
|
+
- [TESTING.md](docs/TESTING.md) — development and testing
|
|
187
|
+
- [CICD.md](docs/CICD.md) — CI, releases, and publishing
|
|
188
|
+
|
|
189
|
+
## License
|
|
190
|
+
|
|
191
|
+
MIT License - See [LICENSE](LICENSE)
|
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
# <img src="https://raw.githubusercontent.com/rcland12/kubrick-cli/master/docs/images/logo.svg" alt="" width="34" align="top"> Kubrick CLI
|
|
2
|
+
|
|
3
|
+
[](https://github.com/rcland12/kubrick-cli/actions/workflows/ci.yml)
|
|
4
|
+
[](https://github.com/rcland12/kubrick-cli/actions/workflows/cd.yml)
|
|
5
|
+
[](https://github.com/rcland12/kubrick-cli/actions/workflows/security.yml)
|
|
6
|
+
[](https://badge.fury.io/py/kubrick-cli)
|
|
7
|
+
[](https://pypi.org/project/kubrick-cli/)
|
|
8
|
+
[](https://pepy.tech/project/kubrick-cli)
|
|
9
|
+
[](https://hub.docker.com/r/rcland12/kubrick-cli)
|
|
10
|
+
[](https://hub.docker.com/r/rcland12/kubrick-cli)
|
|
11
|
+
[](https://codecov.io/gh/rcland12/kubrick-cli)
|
|
12
|
+
[](https://securityscorecards.dev/viewer/?uri=github.com/rcland12/kubrick-cli)
|
|
13
|
+
[](https://opensource.org/licenses/MIT)
|
|
14
|
+
[](https://github.com/psf/black)
|
|
15
|
+
|
|
16
|
+
An agentic coding CLI in the spirit of Claude Code — but provider-agnostic and built to work
|
|
17
|
+
well with **local models**. Kubrick reads and edits your code, runs commands, and iterates until
|
|
18
|
+
the task is done, using native tool calling on Ollama, vLLM, llama.cpp, LM Studio, Anthropic,
|
|
19
|
+
OpenAI, and Amazon Bedrock (Triton is supported with a text-based tool protocol).
|
|
20
|
+
|
|
21
|
+
## Installation
|
|
22
|
+
|
|
23
|
+
```bash
|
|
24
|
+
pip install kubrick-cli # core (local servers, Anthropic, OpenAI, Triton)
|
|
25
|
+
pip install 'kubrick-cli[bedrock]' # + Amazon Bedrock (boto3)
|
|
26
|
+
pip install 'kubrick-cli[keyring]' # + store API keys in the OS keychain
|
|
27
|
+
pip install 'kubrick-cli[all]' # everything
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
Requires Python 3.9+. A Docker image is also available — see [DOCKER.md](docs/DOCKER.md).
|
|
31
|
+
`uv tool install kubrick-cli` or `pipx install kubrick-cli` keeps it in its own environment.
|
|
32
|
+
|
|
33
|
+
**Updating:** `kubrick update` (or `/update` in a session) checks PyPI and runs the right
|
|
34
|
+
upgrade for how Kubrick was installed: `uv tool upgrade`, `pipx upgrade`, or pip in its
|
|
35
|
+
virtualenv. Docker and source checkouts get the command to run instead. `kubrick update
|
|
36
|
+
--check` only reports. Kubrick also checks once a day and mentions new releases at startup;
|
|
37
|
+
turn that off with `/config check_for_updates false`.
|
|
38
|
+
|
|
39
|
+
## Quick start
|
|
40
|
+
|
|
41
|
+
Run `kubrick` and the setup wizard walks you through choosing a provider. Or configure it
|
|
42
|
+
directly:
|
|
43
|
+
|
|
44
|
+
**Local model (Ollama, vLLM, llama.cpp, LM Studio)** — any OpenAI-compatible server:
|
|
45
|
+
|
|
46
|
+
```bash
|
|
47
|
+
# On the GPU box (Ollama example): serve on the LAN with a usable context window
|
|
48
|
+
OLLAMA_HOST=0.0.0.0 OLLAMA_CONTEXT_LENGTH=32768 ollama serve
|
|
49
|
+
|
|
50
|
+
# On your machine
|
|
51
|
+
kubrick setup # "Local model server" > Ollama > type gpu-box:11434 > pick a model
|
|
52
|
+
kubrick
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
**Anthropic**
|
|
56
|
+
|
|
57
|
+
```bash
|
|
58
|
+
kubrick auth login anthropic # stored encrypted (or in the OS keychain)
|
|
59
|
+
kubrick --provider anthropic # default model: claude-opus-5-5
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
**OpenAI**
|
|
63
|
+
|
|
64
|
+
```bash
|
|
65
|
+
export OPENAI_API_KEY=... # env vars work too and take precedence
|
|
66
|
+
kubrick --provider openai # default model: gpt-5
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
**Amazon Bedrock** — uses your normal AWS credentials (profiles, SSO); Kubrick stores none:
|
|
70
|
+
|
|
71
|
+
```bash
|
|
72
|
+
aws sso login --profile work
|
|
73
|
+
kubrick setup # choose "Amazon Bedrock", enter a model / inference profile ID
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
**Triton Inference Server** — see [TRITON.md](docs/TRITON.md).
|
|
77
|
+
|
|
78
|
+
## Usage
|
|
79
|
+
|
|
80
|
+
```
|
|
81
|
+
> fix the failing test in tests/test_parser.py
|
|
82
|
+
|
|
83
|
+
● Bash(pytest -q tests/test_parser.py)
|
|
84
|
+
└ Exit code: 1 ...
|
|
85
|
+
● Read(src/parser.py)
|
|
86
|
+
└ Read 212 lines
|
|
87
|
+
● Edit(src/parser.py)
|
|
88
|
+
└ Edited src/parser.py (1 replacement(s))
|
|
89
|
+
● Bash(pytest -q tests/test_parser.py)
|
|
90
|
+
└ Exit code: 0
|
|
91
|
+
|
|
92
|
+
Fixed the off-by-one in parse_range (src/parser.py:88); the test now passes.
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
Kubrick asks before editing files or running commands (read-only commands like `git status`
|
|
96
|
+
run without asking). Pick "Yes, and allow ..." (or press `a`) to allow that kind of action for
|
|
97
|
+
the rest of the session, or start with `--permission-mode accept_edits`. `/plan` switches to a
|
|
98
|
+
read-only planning mode.
|
|
99
|
+
|
|
100
|
+
Type `/` to open the command menu. It filters as you type (`/pr` shows `/provider`); press
|
|
101
|
+
↑/↓ to pick one, Tab to complete, Esc to close, or just keep typing and Enter sends what you
|
|
102
|
+
typed. `/provider`, `/model` and `/permissions` without an argument open a picker.
|
|
103
|
+
|
|
104
|
+
**Terminals.** Kubrick works in any terminal, including tmux/screen, Windows Terminal, and
|
|
105
|
+
Emacs (`vterm`, `eat`, `ansi-term`; in `M-x shell` and other dumb terminals menus become
|
|
106
|
+
numbered prompts). Set `KUBRICK_ASCII=1` if your font is missing symbols,
|
|
107
|
+
`KUBRICK_SIMPLE_UI=1` to always use numbered prompts, `NO_COLOR=1` to drop color, and
|
|
108
|
+
`/config editing_mode vi` for vi key bindings.
|
|
109
|
+
|
|
110
|
+
Non-interactive / scripting:
|
|
111
|
+
|
|
112
|
+
```bash
|
|
113
|
+
kubrick -p "summarize what this repo does"
|
|
114
|
+
git diff | kubrick -p "review this diff for bugs"
|
|
115
|
+
kubrick -p "update the changelog" --permission-mode accept_edits
|
|
116
|
+
kubrick -c # continue the most recent conversation
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
Put project-specific instructions (build/test commands, conventions) in a `KUBRICK.md` at the
|
|
120
|
+
repo root — `CLAUDE.md` and `AGENTS.md` are read too. `/init` generates one for you.
|
|
121
|
+
|
|
122
|
+
## Development
|
|
123
|
+
|
|
124
|
+
```bash
|
|
125
|
+
make dev # .venv with an editable install + dev tools (needs uv)
|
|
126
|
+
make run # run it against a throwaway playground project, with its own ~/.kubrick
|
|
127
|
+
make test # tests; `make lint` runs the CI checks
|
|
128
|
+
make sandbox # run it in Docker: only the project is visible, installs stay inside
|
|
129
|
+
make reset # delete .venv and .dev/ (everything above lives there)
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
`make run DIR=~/src/project` points it at a real project; `make reset-home` re-runs the setup
|
|
133
|
+
wizard. See [CONTRIBUTING.md](CONTRIBUTING.md).
|
|
134
|
+
|
|
135
|
+
## Features
|
|
136
|
+
|
|
137
|
+
- Native tool calling on every provider, with automatic fallback to a text protocol for models
|
|
138
|
+
or servers that don't support tools
|
|
139
|
+
- Claude Code-style permission modes, plan mode, and project instruction files
|
|
140
|
+
- Local-model friendly: context-window auto-detection (vLLM, Ollama), reasoning/`<think>`
|
|
141
|
+
display, recovery of unparsed `<tool_call>` output
|
|
142
|
+
- Automatic context compaction, conversation history (`-c`, `-r`, `/list`, `/load`)
|
|
143
|
+
- API keys kept out of config files: env vars, OS keychain, or a machine-bound encrypted store
|
|
144
|
+
- Streaming output, parallel read-only tools, ripgrep-backed search
|
|
145
|
+
|
|
146
|
+
## Documentation
|
|
147
|
+
|
|
148
|
+
- [WIKI.md](docs/WIKI.md) — commands, flags, permissions, configuration, troubleshooting
|
|
149
|
+
- [PROVIDERS.md](docs/PROVIDERS.md) — setting up each provider and local servers
|
|
150
|
+
- [SECURITY.md](docs/SECURITY.md) — credential storage and security policy
|
|
151
|
+
- [DOCKER.md](docs/DOCKER.md) — running in Docker
|
|
152
|
+
- [TRITON.md](docs/TRITON.md) — Triton backend setup
|
|
153
|
+
- [TESTING.md](docs/TESTING.md) — development and testing
|
|
154
|
+
- [CICD.md](docs/CICD.md) — CI, releases, and publishing
|
|
155
|
+
|
|
156
|
+
## License
|
|
157
|
+
|
|
158
|
+
MIT License - See [LICENSE](LICENSE)
|