kino-cli 0.1.4 → 0.1.7

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,15 +1,505 @@
1
1
  # kino-cli
2
2
 
3
- kino learns a codebase and its tools, then works as one of the team's developers by running processes
4
- (ticket to PR, review loops, and more). It includes **kino-code**, a coding agent that runs on any model.
3
+ kino works in your team's repository as one of its developers. It learns the codebase and the tools around it,
4
+ answers questions about it, writes and fixes code, and runs the team's documented processes, such as ticket to
5
+ pull request or working through review comments. It runs on the model you choose, and it asks before anything
6
+ leaves your machine.
7
+
8
+ **The console** (66 s): first start, a question, a fix approved as a diff, the tests run.
9
+
10
+ [![The kino console: choosing a model, asking a question, approving a fix](https://raw.githubusercontent.com/DogukanGun/homebrew-tap/main/media/kino-console.gif)](https://github.com/DogukanGun/homebrew-tap/releases/tag/demo-videos)
11
+
12
+ **kino-code on its own** (44 s): `kino code -p` fixes a real bug and the tests pass.
13
+
14
+ [![kino-code fixing a bug from the command line](https://raw.githubusercontent.com/DogukanGun/homebrew-tap/main/media/kino-demo.gif)](https://github.com/DogukanGun/homebrew-tap/releases/tag/demo-videos)
15
+
16
+ Both are unedited recordings on a Claude Code login. The MP4 files are on [the release page](https://github.com/DogukanGun/homebrew-tap/releases/tag/demo-videos).
17
+
18
+ This guide covers everything, start to finish:
19
+
20
+ 1. [Install](#1-install)
21
+ 2. [First start: choosing a model](#2-first-start-choosing-a-model)
22
+ 3. [The console](#3-the-console)
23
+ 4. [Approvals and modes](#4-approvals-and-modes)
24
+ 5. [Console commands and keys](#5-console-commands-and-keys)
25
+ 6. [kino-code without the console](#6-kino-code-without-the-console)
26
+ 7. [Setting kino up for a team repo](#7-setting-kino-up-for-a-team-repo)
27
+ 8. [Processes](#8-processes)
28
+ 9. [Connecting your tools](#9-connecting-your-tools)
29
+ 10. [Knowledge](#10-knowledge)
30
+ 11. [Who writes the code](#11-who-writes-the-code)
31
+ 12. [Safety](#12-safety)
32
+ 13. [Configuration reference](#13-configuration-reference)
33
+ 14. [Updating, uninstalling, troubleshooting](#14-updating-uninstalling-troubleshooting)
34
+
35
+ ---
36
+
37
+ ## 1. Install
38
+
39
+ ```bash
40
+ npm i -g kino-cli # Node 18 or newer
41
+ brew install dogukangun/tap/kino-cli # or Homebrew (macOS, Linux)
42
+ npx kino-cli # or try it without installing
43
+ ```
44
+
45
+ Check it with `kino --version`.
46
+
47
+ kino ships compiled for macOS (Apple silicon and Intel), Linux (x64 and arm64) and Windows (x64). It runs through
48
+ [uv](https://docs.astral.sh/uv), which fetches Python 3.12 and kino's libraries on the first run and caches them,
49
+ so the first start takes a little longer. If uv is missing, the npm package installs it. Set
50
+ `KINO_NO_UV_INSTALL=1` to stop that, or `KINO_UV=/path/to/uv` to use a specific uv.
51
+
52
+ ## 2. First start: choosing a model
53
+
54
+ kino needs a language model. Open it in any folder:
55
+
56
+ ```bash
57
+ cd ~/code/my-project
58
+ kino
59
+ ```
60
+
61
+ The first time, kino looks at what this machine can already use and offers it:
62
+
63
+ ```
64
+ ╭─ Choose a model ─────────────────────────────────────────╮
65
+ │ kino needs a model to work. Found on this machine: │
66
+ │ Saved for every folder; /model changes it. │
67
+ │ │
68
+ │ 1. Claude Sonnet 5.5, with your Claude Code login │
69
+ │ 2. Claude Opus 5.5, with your Claude Code login │
70
+ │ 3. Another model: type provider:model │
71
+ ╰──────────────────────────────────────────────────────────╯
72
+ choose 1-3 or type an option:
73
+ ```
74
+
75
+ What it looks for:
76
+
77
+ | Found | Offered as |
78
+ |---|---|
79
+ | Claude Code installed and logged in | Claude models on your Claude Code login: `claude-code:<model>` (no API key needed) |
80
+ | Claude Code installed, logged out | "Log in to Claude Code now", which opens Claude Code's own sign-in |
81
+ | `ANTHROPIC_API_KEY` | Claude models on that key: `anthropic:<model>` |
82
+ | `OPENAI_API_KEY`, `GEMINI_API_KEY` or `GOOGLE_API_KEY` | that provider; you type the model id |
83
+ | Ollama running locally | its installed models |
84
+
85
+ The choice is saved for every folder, in `~/.config/kino/settings.json` (`%APPDATA%\kino\settings.json` on
86
+ Windows). Change it any time:
87
+
88
+ ```bash
89
+ kino model # what kino uses now, and what this machine can run
90
+ kino model claude-code:claude-opus-5-5 # save another one
91
+ ```
92
+
93
+ In the console, `/model` opens the same picker.
94
+
95
+ **Model names** are `provider:model`:
96
+ - `claude-code:<id>`: your Claude Code login;
97
+ - `anthropic:<id>`, `openai:<id>`, `google-gla:<id>`: an API key in the environment;
98
+ - `ollama:<id>`: a local model;
99
+ - any OpenAI-compatible endpoint, configured in the workspace (see [13](#13-configuration-reference)).
100
+
101
+ **Which model is used**, first match wins:
102
+ 1. `--model` on the command line, or `/model` in the console;
103
+ 2. `models.default` in the repository's `.kino/config.yaml`;
104
+ 3. the `KINO_MODEL` environment variable;
105
+ 4. the saved choice;
106
+ 5. the first model found on this machine. kino prints which one it took.
107
+
108
+ ## 3. The console
109
+
110
+ `kino` with no command opens the console in the current folder. Type what you want in plain words and press
111
+ Enter.
112
+
113
+ **Ask about the code:**
114
+
115
+ ```
116
+ › Where is the cart total computed, and what does it do with discounts?
117
+ ```
118
+
119
+ **Give it a task:**
120
+
121
+ ```
122
+ › Cart totals ignore item quantity. Fix total() and run the tests.
123
+ ```
124
+
125
+ While it works you see each step as it happens:
126
+
127
+ ```
128
+ ● do_task · worker
129
+ ⎿ search(pattern="def total", glob="*.py")
130
+ ✓ 84 chars
131
+ ⎿ read_file(path="src/shop/cart.py")
132
+ ✓ 14 lines
133
+ ⎿ edit_file(path="src/shop/cart.py", old="sum(item.price for item in items)", new="sum(item.price * i…
134
+ ```
135
+
136
+ Before a file changes you see the change and decide:
137
+
138
+ ```
139
+ ╭─ edit src/shop/cart.py? ─────────────────────────────────╮
140
+ │ - subtotal = sum(item.price for item in items) │
141
+ │ + subtotal = sum(item.price * item.qty for item in items)
142
+ ╰──────────────────────────────────────────────────────────╯
143
+ a = apply every edit for the rest of this session
144
+ Apply this edit? [y/N/a]
145
+ ```
146
+
147
+ It then runs the tests and reports what it changed and how it checked, ending with `✓ done`.
148
+
149
+ **It remembers the conversation.** Each new message knows the earlier ones, how they ended and which files they
150
+ changed, so "now add a test for it" works. `/clear` starts over. `kino -c` reopens the last conversation, and
151
+ continues a run that was waiting or had failed.
152
+
153
+ **Attach files** with `@`: `explain @src/api/routes.py` (Tab completes paths). **Several lines:** Alt-Enter,
154
+ Ctrl-J, or a `\` at the end of a line; pasting several lines also works.
155
+
156
+ **The prompt area:**
157
+
158
+ ```
159
+ ──────────────────────────────────────────────────────────────── shop ───
160
+ ❯ fix the cart total
161
+ ─────────────────────────────────────────────────────────────────────────
162
+ ⏵⏵ auto mode on (shift+tab to cycle) claude-code:claude-sonnet-5-5 · 1.2k in / 340 out · kino 0.1.7
163
+ ```
164
+
165
+ - Above the input, at the right: the label, which is the folder's name unless you set one with `/rename <name>`.
166
+ - Below it, at the left: the mode. **Shift+Tab** cycles through the modes (see [4](#4-approvals-and-modes)).
167
+ - At the right: the model, the tokens used so far, and kino's version. When npm has a newer kino, it says
168
+ `kino 0.1.8 available · npm i -g kino-cli@latest` instead. kino checks for that at most once a day, in the
169
+ background; `KINO_NO_UPDATE_CHECK=1` turns the check off.
170
+
171
+ **Stop and leave:**
172
+ - Esc or Ctrl-C while kino works stops it. The run is kept, and `/resume` continues it.
173
+ - Ctrl-C on a line you are typing clears the line.
174
+ - To leave: type `exit` or `quit`, press Ctrl-D, or press Ctrl-C twice on an empty line.
175
+
176
+ ## 4. Approvals and modes
177
+
178
+ - **Reading** files and searching runs without asking.
179
+ - **Changing a file** shows the change first and asks `Apply this edit? [y/N/a]`. If you refuse, the file stays
180
+ as it was and kino is told.
181
+ - **Anything that leaves your machine** is asked one call at a time: `git push`, opening or commenting on a pull
182
+ request, writing to a ticket or an API. It asks `Allow this one call? [y/N/a]`.
183
+ - **`a`** allows that one kind of call for the rest of this console session only: one command (such as
184
+ `git push`), one API operation, or, for edits, every edit. `/permissions` shows what you allowed, and
185
+ `/permissions revoke <n|all>` takes it back. Nothing is remembered after you leave.
186
+
187
+ **Modes.** Shift+Tab cycles `ask → auto-edit → plan → research → auto → ask`; `/mode <name>` sets any of
188
+ them, `read-only` included.
189
+
190
+ | Mode | What kino does | File changes | Outward actions |
191
+ |---|---|---|---|
192
+ | `ask` (default) | the task | shown and asked | asked |
193
+ | `auto-edit` | the task | shown and applied | asked |
194
+ | `plan` | investigates and answers with a plan, then asks whether to go ahead | none | none |
195
+ | `research` | investigates and answers with a report, with `file:line` references | none | none |
196
+ | `auto` | the task, without stopping to ask | shown and applied | shown and allowed |
197
+ | `read-only` | the task, without changing anything | refused | refused |
198
+
199
+ **Plan mode** is for changes you want to agree on first. kino reads the code and answers with a plan: the goal,
200
+ each file to change and how, new tests, the commands that will verify it, risks and open questions. Then it
201
+ asks:
202
+
203
+ ```
204
+ ╭─ Plan ready ────────────────────────────────╮
205
+ │ Go ahead with this plan? │
206
+ │ 1. Yes, and ask before each edit │
207
+ │ 2. Yes, and apply edits without asking │
208
+ │ 3. Yes, in auto mode (outward actions too)│
209
+ │ 4. No, keep planning │
210
+ ╰─────────────────────────────────────────────╯
211
+ ```
212
+
213
+ With a yes, kino switches to that mode and carries the plan out. With no, you stay in plan mode: say what to
214
+ change in the plan.
215
+
216
+ **Research mode** answers questions about the code without changing anything: the direct answer first, the
217
+ findings with `file:line` references, how the parts connect, what is uncertain, and what it did not check.
218
+
219
+ **Auto mode** runs without stopping for approvals. Every edit and every outward action the policy allows (push,
220
+ pull requests, ticket and API writes) is shown as it happens and goes ahead. Use it when you trust the task and
221
+ the setup. What auto mode does not change:
222
+ - the hard guards still refuse force-push, merges, `reset --hard` and the rest (see [Safety](#12-safety));
223
+ - your config's deny rules still refuse their calls;
224
+ - questions only you can answer are still asked.
225
+
226
+ Some things are never done, whatever you answer: see [Safety](#12-safety).
227
+
228
+ ## 5. Console commands and keys
229
+
230
+ | Command | Does |
231
+ |---|---|
232
+ | `/help` | list the commands |
233
+ | `/model [provider:model]` | open the model picker, or switch to that model |
234
+ | `/mode [ask\|auto-edit\|plan\|research\|auto\|read-only]` | show or set the mode (Shift+Tab cycles) |
235
+ | `/rename [name]` | the label above the prompt; with no name, back to the folder's name |
236
+ | `/permissions [revoke <n\|all>]` | what you allowed this session; take it back |
237
+ | `/diff` | `git diff` of what changed |
238
+ | `/cost` | requests, tool calls and tokens used this session |
239
+ | `/clear` | start a new conversation and clear the screen |
240
+ | `/process <name> [key=value…]` | run one of the documented processes |
241
+ | `/processes` | list the processes |
242
+ | `/runs` | list runs and their status |
243
+ | `/resume [id] [node=value…]` | continue a waiting or stopped run, answering its question |
244
+ | `/ask <query>` | search what kino knows about this repo and team |
245
+ | `/exit`, `/quit` | leave |
246
+
247
+ | Key | Does |
248
+ |---|---|
249
+ | Enter | send |
250
+ | Alt-Enter, Ctrl-J, `\` at line end | new line |
251
+ | Tab | complete a command, a process name, or a path after `@` |
252
+ | Shift+Tab | the next mode |
253
+ | ↑ / ↓ | earlier messages |
254
+ | Esc | stop the current run |
255
+ | Ctrl-C | stop the run; clear the line; twice on an empty line to leave |
256
+ | Ctrl-D | leave |
257
+
258
+ The console needs a terminal. In a pipe, a script or CI, use the commands in the next sections.
259
+
260
+ ## 6. kino-code without the console
261
+
262
+ kino-code is kino's coding agent. `kino code` gives it one task, lets it work, and exits:
263
+
264
+ ```bash
265
+ kino code -p "fix the off-by-one in pagination and add a test"
266
+ kino code -p "…" --cwd ~/code/api --model anthropic:<id> --verbose
267
+ echo "add a --dry-run flag" | kino code
268
+ ```
269
+
270
+ Nobody is there to ask, so edits are made directly (review them with `git diff`), and anything outward, such as
271
+ push, pull requests or API writes, is refused.
272
+
273
+ | Option | Meaning |
274
+ |---|---|
275
+ | `-p, --print <task>` | the task (read from stdin when left out) |
276
+ | `--cwd <path>` | the repository to work in (default: here) |
277
+ | `--model <provider:model>` | the model (default as in [2](#2-first-start-choosing-a-model)) |
278
+ | `--verbose` | show the steps and tool calls as they happen (on stderr) |
279
+ | `--output-format text\|json` | JSON: `result`, `is_error`, `num_turns`, `duration_ms`, `model`, `usage`, `todos` |
280
+ | `--add-dir <path>` | another folder it may read but not change (repeatable) |
281
+ | `--max-turns <n>` | most model requests before it gives up (default 200) |
282
+ | `--memory-floor <pct>` | tests and builds wait while free memory is below this (default 35; `0` turns it off) |
283
+ | `--allow-outward` | let it commit, push its branch and open a PR when the task asks; for sandboxes and CI only |
284
+
285
+ What kino-code does on its own: it reads before it edits, searches with glob and grep (ripgrep when installed),
286
+ runs the repository's own test and lint commands, keeps a to-do list for longer work, and can hand a wide
287
+ investigation to a read-only helper. It follows `AGENTS.md`, `KINO.md` or `CLAUDE.md` when the repository has one.
288
+
289
+ ## 7. Setting kino up for a team repo
290
+
291
+ The console works in any folder straight away. To let kino work like a team member, set it up once in the
292
+ repository:
293
+
294
+ ```bash
295
+ cd ~/code/team-repo
296
+ kino init
297
+ ```
298
+
299
+ The setup asks:
300
+ - **the model** kino's agents use;
301
+ - **who writes code**: kino-code, or the Claude Code CLI (see [11](#11-who-writes-the-code));
302
+ - **which repositories to learn**: this one, plus GitHub or GitLab URLs or local paths (remote ones are cloned);
303
+ - **who kino works as**: the commit name and email;
304
+ - **your tools**: GitHub (`gh`), Jira, Linear, ClickUp or GitHub Issues, and the review bot;
305
+ - **your working style**, and which processes it may run.
306
+
307
+ Then it **learns each repository**. It scans the stack, the build, test and run commands for each part, the CI,
308
+ the conventions in the git history, the docs and the tools in use. Then it reads the code and writes a profile:
309
+ architecture, commands, conventions, gotchas.
310
+
311
+ Unattended, for scripts:
312
+
313
+ ```bash
314
+ kino init --yes --llm claude-code --model claude-sonnet-5-5 --coding-agent kino-code \
315
+ --repo https://github.com/acme/web --repo ~/code/api
316
+ ```
317
+
318
+ Later:
319
+
320
+ ```bash
321
+ kino learn https://gitlab.com/acme/infra # add a repository
322
+ kino relearn # learn them all again (values you set by hand are kept)
323
+ ```
324
+
325
+ What it writes:
326
+ - `.kino/config.yaml`, `.kino/knowledge/` and `.kino/processes/`: **commit these**, so the team shares one setup;
327
+ - `.kino/runs/` and connection state: local to your machine, already in `.kino/.gitignore`.
328
+
329
+ ## 8. Processes
330
+
331
+ A process is a documented way of working, drawn as a BPMN diagram, that kino carries out step by step. The
332
+ diagram decides the path: branches, loops, parallel work, waiting for a person. A step agent does each activity.
333
+ Each run is saved after every step, so it can wait for an answer, stop, and continue later.
334
+
335
+ Included:
336
+
337
+ | Process | Does |
338
+ |---|---|
339
+ | `ticket-to-pr` | a ticket to a pull request: worktree and branch, the change in the repo's style, local checks, the PR description |
340
+ | `review-bot-loop` | asks the review bot, then fixes or replies to its comments, round after round, with CI checked |
341
+ | `human-review-response` | finds people's review feedback, fixes it and replies, branch by branch |
342
+ | `review-others-prs` | reviews teammates' pull requests line by line, with real QA |
343
+ | `qa-evidence` | real QA of a feature (UI, API), with its own test data, and the QA comment |
344
+ | `sprint-ticket-sweep` | goes through your sprint's tickets one at a time, skipping the exceptions you name |
345
+ | `stacked-epic-delivery` | an epic as a stack of branches, one per ticket, then merged in order |
346
+ | `ticket-status-and-links` | links and closing comments on tickets; moves status only once the work is reviewed |
347
+ | `data-migration-runbook` | a one-off data migration: check, throttled and resumable migrate, verify |
348
+ | `customer-announcement` | a feature announcement email, per language |
349
+ | `client-demo-video` | records a product demo video |
350
+
351
+ ```bash
352
+ kino processes # list them
353
+ kino show-process ticket-to-pr # what it does, step by step
354
+ kino start ticket-to-pr --input ticket=ABC-123 # run one
355
+ kino runs # runs and their status
356
+ kino resume <run-id> --answer approve=yes # answer a waiting step
357
+ kino run "Sweep my sprint tickets except anything about billing" # a free-form task
358
+ ```
359
+
360
+ In the console: `/process ticket-to-pr ticket=ABC-123`, `/runs`, `/resume`.
361
+
362
+ **Your own processes:**
363
+ - `kino draft-process "Expenses over 500 need a manager's OK before payment"`: an agent drafts the diagram. It is
364
+ checked until it runs, then shown to you before it is saved;
365
+ - `kino import-bpmn ./expense.bpmn`: use a diagram drawn in bpmn.io or Camunda Modeler, with its own conditions.
366
+
367
+ ## 9. Connecting your tools
368
+
369
+ kino reaches your tools through the connections you already have.
370
+
371
+ **From Claude Code.** If you connected MCP servers in Claude Code (`claude mcp add …`), `kino connect` lists them
372
+ and lets you pick which ones kino uses and for what: tickets, code hosting, docs. Servers from Claude Code
373
+ plugins are included.
374
+
375
+ ```bash
376
+ kino connect
377
+ ```
378
+
379
+ **GitHub** through the `gh` CLI you are logged into (the token stays with gh):
380
+
381
+ ```bash
382
+ kino connect --gh-cli --setting org=YourOrg
383
+ ```
384
+
385
+ **Any tool with an API**, from its OpenAPI or GraphQL description, or a built-in profile:
386
+
387
+ ```bash
388
+ kino connect billing --spec https://billing.example.com/openapi.json --auth env:BILLING_TOKEN
389
+ kino connect jira --profile jira --base-url https://your-site.atlassian.net \
390
+ --auth env:JIRA_API_TOKEN --username env:JIRA_EMAIL
391
+ kino connect billing --find-spec billing-vendor.com # look up a vendor's published API
392
+ ```
393
+
394
+ Each connection gets its own agent. Reads run; **every write is confirmed, call by call**. Secrets are given as
395
+ references (`env:VAR`, `keychain:item`). They are read when a call is made and never stored in config, prompts or
396
+ logs.
397
+
398
+ Tools that only authorize through OAuth inside Claude Code, such as claude.ai connectors or ClickUp's official
399
+ server, cannot be reached from outside Claude Code. Connect those through their API instead.
400
+
401
+ ## 10. Knowledge
402
+
403
+ kino searches what it knows before it works: the repository profiles, the process documents, and anything you
404
+ add.
405
+
406
+ ```bash
407
+ kino add-docs ./handbook # a file, a folder or a URL
408
+ kino ask "how do we run the api tests" # search it yourself (in the console: /ask)
409
+ ```
410
+
411
+ Notes that belong to you rather than the team can stay outside the repository, in your own config:
412
+
413
+ ```yaml
414
+ knowledge:
415
+ - {kind: memory, path: ~/notes/agent-memory} # one fact per file
416
+ - {kind: markdown, path: ~/notes/handoff.md, stale: true}
417
+ ```
418
+
419
+ Optionally, kino can also keep a **domain specialist**: it studies your product's rules from the code and docs,
420
+ checks what it learned, and answers the other agents with sources. It is off by default; see `kino domain --help`.
421
+
422
+ ## 11. Who writes the code
423
+
424
+ In processes, the coding steps are done by the agent set in `coding_agent.kind`:
425
+
426
+ | | kino-code (default) | claude-code |
427
+ |---|---|---|
428
+ | What | kino's own coding agent | the Claude Code CLI, `claude -p` |
429
+ | Models | any model kino supports, including your Claude Code login | Claude |
430
+ | Needs | a model | `claude`, installed and logged in |
431
+
432
+ ```yaml
433
+ coding_agent:
434
+ kind: kino-code
435
+ model: anthropic:<id> # optional; default: the workspace model
436
+ ```
437
+
438
+ Either way, the coder only edits files and runs the repository's commands. Pushing, pull requests, tickets and
439
+ API calls stay with kino's own steps, behind its confirmations.
440
+
441
+ ## 12. Safety
442
+
443
+ - **Outward actions are confirmed one call at a time**: push, pull requests, comments, ticket and API writes. With
444
+ nobody at the terminal they are refused, or the run waits until someone answers. The exception is auto mode,
445
+ which you switch on yourself: there they are shown and go ahead.
446
+ - **Never done, whatever you answer**: force-push, `git reset --hard`, `git stash`, merging pull requests,
447
+ admin overrides, co-author trailers.
448
+ - **Files** can only change inside the folder kino works in.
449
+ - **Heavy commands** (tests, builds, containers, browsers) wait while free memory is below the floor (35% by
450
+ default; `policy.min_free_memory_pct`).
451
+ - **Secrets** are references, resolved per request and kept out of config, prompts and logs. Auth headers are
452
+ removed from request logs.
453
+ - **Allow and deny lists** in the config narrow what may be asked at all. A denied call never reaches the tool.
454
+ - kino reports honestly: what it changed, how it checked, and what it did not do.
455
+
456
+ ## 13. Configuration reference
457
+
458
+ The workspace config is `.kino/config.yaml` in the repository; `kino init` writes it.
459
+
460
+ ```yaml
461
+ models:
462
+ default: claude-code:claude-sonnet-5-5
463
+ per_agent: # optional: another model for one kind of agent
464
+ reviewer: anthropic:<id>
465
+ # an OpenAI-compatible endpoint (vLLM, LM Studio, a gateway):
466
+ # default: {provider: openai-compatible, model: <id>, base_url: http://localhost:8000/v1, api_key_env: MY_KEY}
467
+
468
+ coding_agent:
469
+ kind: kino-code # or claude-code
470
+ model: anthropic:<id> # optional
471
+
472
+ policy:
473
+ min_free_memory_pct: 35
474
+
475
+ knowledge:
476
+ - {kind: markdown, path: docs/handbook.md}
477
+ ```
478
+
479
+ | Environment variable | Meaning |
480
+ |---|---|
481
+ | `KINO_MODEL` | the model, when the config sets none |
482
+ | `KINO_SETTINGS` | another settings file than `~/.config/kino/settings.json` |
483
+ | `ANTHROPIC_API_KEY`, `OPENAI_API_KEY`, `GEMINI_API_KEY` | provider keys |
484
+ | `OLLAMA_HOST` | where Ollama runs (default `http://localhost:11434`) |
485
+ | `KINO_UV`, `KINO_NO_UV_INSTALL` | which uv the npm package uses; don't install uv |
486
+ | `KINO_NO_UPDATE_CHECK` | `1`: never look up newer kino versions |
487
+
488
+ All commands: `kino --help`, and `kino <command> --help` for each one.
489
+
490
+ ## 14. Updating, uninstalling, troubleshooting
5
491
 
6
492
  ```bash
7
- npx kino-cli # open the kino shell in this folder
8
- npx kino-cli init # set kino up for this repository
9
- npx kino-cli code -p "fix the off-by-one in pagination and add a test"
10
- npm i -g kino-cli # then just: kino
493
+ npm i -g kino-cli@latest # or: brew upgrade kino-cli
494
+ kino --version
495
+ npm rm -g kino-cli # or: brew uninstall kino-cli
11
496
  ```
12
497
 
13
- This package carries kino compiled for macOS, Linux and Windows and runs it with [uv](https://docs.astral.sh/uv),
14
- which fetches Python 3.12 and kino's dependencies on the first run and caches them. If uv is missing it is installed
15
- for you (set `KINO_NO_UV_INSTALL=1` to refuse, or `KINO_UV=/path/to/uv` to pick one). Node 18+.
498
+ | Problem | Fix |
499
+ |---|---|
500
+ | "kino needs a model" | Log in to Claude Code (`claude auth login`), set an API key, or start Ollama, then run `kino` or `kino model`. |
501
+ | The model picker doesn't list Claude Code | Check that `claude` is on your PATH and that `claude auth status` says you are logged in. |
502
+ | The first start is slow | uv is fetching Python and kino's libraries, once. Later starts are fast. |
503
+ | Tests "wait for memory" | Free some memory, or lower `policy.min_free_memory_pct` (`--memory-floor` for `kino code`). |
504
+ | A run stopped or failed | `kino runs`, then `kino resume <id>` (in the console: `/resume`). |
505
+ | The console prints help and exits | It needs a terminal. In scripts use `kino code -p`, `kino run` or `kino start`. |
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "kino-cli",
3
- "version": "0.1.4",
3
+ "version": "0.1.7",
4
4
  "description": "kino: an agent that learns your codebase and tools, then works as one of the team's developers. Includes kino-code, a coding agent on any model.",
5
5
  "bin": {
6
6
  "kino": "bin/kino.js"