An AI-assisted coding CLI tool powered by your own Triton LLM backend. Like Claude Code, but self-hosted.
pip install -e .
kubrickCRITICAL: When using Docker, Kubrick creates files in your project. Without proper configuration, these files will be owned by root, causing permission issues.
The Solution:
- Option 1 (Recommended): Use the
kubrick-dockerwrapper - handles permissions automatically - Option 2: Use Docker Compose with exported UID/GID environment variables
- Option 3: Include
--user $(id -u):$(id -g)in every Docker command
Install the kubrick-docker wrapper for easy usage:
# Install from GitHub (installs to ~/.local/bin/kubrick-docker)
curl -fsSL https://raw.githubusercontent.com/rcland12/kubrick-cli/master/scripts/install-kubrick-docker.sh | sh
# Add to PATH if needed (add to ~/.bashrc or ~/.zshrc)
export PATH="$HOME/.local/bin:$PATH"
# Run from any project directory
cd /path/to/your/project
kubrick-dockerBenefits:
- ✅ Automatically handles UID/GID (no configuration needed)
- ✅ Smart image fallback (Docker Hub → GHCR → Local build)
- ✅ Simple command from any directory
- ✅ Files always owned by you, never root
Uninstall:
curl -fsSL https://raw.githubusercontent.com/rcland12/kubrick-cli/master/scripts/uninstall-kubrick-docker.sh | shUse Docker Compose for a convenient alias-style workflow.
Setup (Required): Export UID/GID in your shell config (~/.bashrc or ~/.zshrc):
export UID=$(id -u)
export GID=$(id -g)Usage:
cd /path/to/your/project
docker compose -f /path/to/kubrick-cli/docker-compose.yaml run --rm kubrickIMPORTANT: Always include --user $(id -u):$(id -g) to avoid file permission issues!
cd /path/to/your/project
# From Docker Hub
docker run --rm -it \
--network host \
--user $(id -u):$(id -g) \
-v ${HOME}:/home/kubrick \
-v ${PWD}:/workspace \
-v /etc/localtime:/etc/localtime:ro \
-v /etc/timezone:/etc/timezone:ro \
rcland12/kubrick-cli
# From GitHub Container Registry
docker run --rm -it \
--network host \
--user $(id -u):$(id -g) \
-v ${HOME}:/home/kubrick \
-v ${PWD}:/workspace \
-v /etc/localtime:/etc/localtime:ro \
-v /etc/timezone:/etc/timezone:ro \
ghcr.io/rcland12/kubrick-cliWhy --user is required:
- Without it, Docker runs as root and creates root-owned files
- With it, files are owned by you and compatible with pip installation
- The container uses
chmod 1777on directories (same as VS Code Dev Containers)
See DOCKER.md for detailed Docker usage, UID/GID configuration, and troubleshooting.
# Basic usage
kubrick
# Custom Triton server
kubrick --triton-url my-server:8000
# Load previous conversation
kubrick --load 20240118_143022- Python 3.8+
- LLM Provider (choose one):
- Triton Inference Server with streaming LLM model (default:
http://localhost:8000) - OpenAI API (GPT-4, GPT-3.5-turbo, etc.)
- Anthropic API (Claude models)
- Triton Inference Server with streaming LLM model (default:
- WIKI.md - Complete features, commands, and usage guide
- PROVIDERS.md - Multi-provider setup (Triton, OpenAI, Anthropic)
- TRITON.md - Triton backend setup and requirements
- TESTING.md - Testing guide and CI/CD setup
- DOCKER.md - Docker setup and troubleshooting
Config stored at ~/.kubrick/config.json. Override with environment variables:
export TRITON_URL=localhost:8000
export TRITON_MODEL_NAME=llm_decoupledpip install -e ".[dev]"# Run all tests
pytest
# Run with coverage
pytest --cov=kubrick_cli --cov-report=term-missing
# Run specific test file
pytest tests/test_tool_executor.py -vSee TESTING.md for detailed testing documentation.
# Format code
black kubrick_cli tests
# Check linting
flake8 kubrick_cliMIT License - See LICENSE