Repository navigation
Installer: install into the project when run inside one; stop before login - #965
Merged
Merged
Conversation
`kitaru login --local` reports several failures with error kind "conflict", including "port 8000 is already in use by a deployment Kitaru does not own". The installer matched on the word and retried with --upgrade, which then failed with "there is no local deployment to upgrade", burying the real reason. Seen on a machine running the dev server on 8000. Match only the CLI's own --upgrade hint, and for any other failure show the CLI's message and hint, plus the --port alternative. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01UrD7eCgTu11F6qsYMS5JMP
There was a problem hiding this comment.
Your trial has ended. Reactivate Greptile to resume code reviews.
The CLI is the probe: it reports "port N is already in use", so step through the next few ports until one works. It remembers the chosen port for later logins and logout, so nothing else needs to know. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01UrD7eCgTu11F6qsYMS5JMP
Login is the one real decision in the flow (local Docker or the managed
cloud), and every edge case the installer accumulated (Docker down,
port taken, older server, no terminal) came from guessing it. The
script now ends after wiring the coding agent and prints:
kitaru login --local local, in Docker. Free, open source.
https://cloud.kitaru.ai managed cloud. 14-day trial, no credit card required.
then: kitaru login <your workspace URL>
--server still points the MCP server at a team server and the closing
message then shows `kitaru login <that URL>`. --no-login is gone.
Docs and README updated; the smoke workflow no longer passes --no-login.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UrD7eCgTu11F6qsYMS5JMP
The worker is the `kitaru` package itself (`kitaru worker start`), and agent replays run the agent in the worker's own environment. A `kitaru` in an isolated uv tool environment can therefore log in, import, and run evaluators, but never replay the user's agent. The one-liner was installing exactly that and not saying so. Now, run inside a Python project (pyproject.toml or uv.lock in the current directory), the installer does `uv add "kitaru[cli,mcp,worker]"` into that project's environment and registers the MCP server as `uv run --directory <repo> kitaru-mcp` at Claude Code project scope (./.mcp.json). Run anywhere else, it keeps the isolated tool install and the closing message says replays need Kitaru inside the agent's project. --project / --global force either. The success line reports where it installed in both modes, which was the question that prompted this. Docs and README say to run it inside the agent's repository. The smoke workflow gains a step that runs it inside a `uv init` project and checks pyproject.toml and `uv run kitaru`. Verified in Docker: project mode on ubuntu:24.04 (added to pyproject.toml, .venv/bin/kitaru, no global binary), global mode on alpine:3.21, and --project without a pyproject.toml fails with a clear message. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01UrD7eCgTu11F6qsYMS5JMP
The checkout root is itself a Python project named kitaru, so the project-aware installer tried to uv add kitaru into the Kitaru repo. Every step now runs from a temp dir and reads the script by absolute path. The uv add failure message no longer blames requires-python for an error uv already printed. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01UrD7eCgTu11F6qsYMS5JMP
…ory" The first line now says where to run the one-liner and why (the worker lives with the agent's dependencies). Options move to a table, the by-hand equivalent is the in-project form, the not-in-a-repo case is a callout, and the paste-into-your-agent prompt says to open the repository first. README step 1 and the setup-page hint match. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01UrD7eCgTu11F6qsYMS5JMP
… project mode Bare `kitaru login` connects to the managed cloud once #967 lands, so the closing message names it instead of the signup URL. In project mode kitaru is not on PATH, so every command in the message is prefixed with `uv run`. Docs and README match. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01UrD7eCgTu11F6qsYMS5JMP
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Two changes to the installer from its first real runs, both about it assuming too much.
1. Install into the project when run inside one. The worker is the
kitarupackage itself, and replays run your agent in the worker's own environment. So akitaruin an isolated uv tool environment can log in, import, and run evaluators, but never replay your agent. The one-liner installed exactly that and didn't say so. Now:pyproject.tomloruv.lockin the current directory):uv add "kitaru[cli,mcp,worker]"into that project's environment; MCP registered asuv run --directory <repo> kitaru-mcpat Claude Code project scope (./.mcp.json); success line names the environment; closing message saysuv run kitaru ....--project/--global(orKITARU_SCOPE) force either.--projectwithout apyproject.tomlfails with "runuv initfirst, or use--global".2. Stop before login. Login is the one real decision in the flow (local Docker or the managed cloud), and every edge case the script had accumulated (Docker down, port taken, older server, no terminal) came from guessing it. The script now ends after wiring the coding agent and prints:
(In project mode every command is prefixed with
uv run, since Kitaru is not on PATH there.)Merge order: this message assumes bare
kitaru logintargets the managed cloud, which is #967. Merge #967 first, or the second line points at a command that errors until it lands.--server URLstill points the MCP server at a team server.--no-loginis gone.Docs and README now say to run the installer inside your agent's repository, and describe both modes. The smoke workflow gains a step that runs it inside a
uv initproject and checkspyproject.tomlanduv run kitaru.Reviewer Notes
install.sh; everything after it usesKITARU_BIN,MCP_CMD, andCLAUDE_SCOPEand does not care which mode ran. The Claude config snapshot/restore now targets./.mcp.jsonin project mode.uv run.kitaru setup).Reproduction
Inside a fresh
uv initproject:cat install.sh | bash -saddskitaru[cli,mcp,worker]>=0.24.0topyproject.toml,.venv/bin/kitaru --versionis 0.24.0, no~/.local/bin/kitaruis created, and with aclaudeCLI present.mcp.jsoncontainsuv run --directory <repo> kitaru-mcp --server ... --mode standard. In an empty directory the global path runs as before.--version=99.99.99still exits nonzero. Verified in Docker on ubuntu:24.04 (project) and alpine:3.21 (global).🤖 Generated with Claude Code
https://claude.ai/code/session_01UrD7eCgTu11F6qsYMS5JMP