Local-first • Terminal-native • Open-source

____             ____             _
|  _ \ _ __ _   _|  _ \  ___   ___| | __
| | | | '__| | | | | | |/ _ \ / __| |/ /
| |_| | |  | |_| | |_| | (_) | (__|   <
|____/|_|   \__, |____/ \___/ \___|_|\_\
            |___/

Local-first CLI coding agent.

Chart your course. Execute with precision. DryDock gives you a focused TUI for exploring, modifying, building, and testing code with local LLMs.

PyPI version badge Docker pulls badge License badge Python 3.12 plus badge
Futuristic naval command center with code panels and sonar rings
drydock
$ drydock
Loading local model route...
GraphRAG context: synced
Tools online: 14
Ready to execute.
DryDock product overview — six panels showing branding, GraphRAG memory, local execution, architecture pipeline, feature icons, and tagline

What it is

A coding agent designed for your machine, your model, and your code.

DryDock is a TUI coding assistant designed to work with local LLMs. It gives you a conversational interface to your codebase — explore, modify, build, and test projects through natural language and a focused set of tools.

No data leaves your machine. No API keys. No per-token billing. Just your laptop, your model, and your code.

Install

Three ways to launch.

From PyPI

# Python 3.12+
pip install drydock-cli
drydock

From Docker Hub

docker run -it --rm \
  -e LLAMACPP_URL=http://host.docker.internal:8001/v1 \
  -e LLAMACPP_MODEL=gemma4 \
  --add-host=host.docker.internal:host-gateway \
  -v "$HOME/.drydock:/root/.drydock" \
  -v "$(pwd):/work" \
  fbobe3/drydock:latest

From source

git clone https://github.com/fbobe321/drydock.git
cd drydock
pip install -e .

Recommended serving stack

Optimized around Gemma 4 + llama.cpp.

DryDock is tested and optimized for Gemma 4 26B-A4B served by llama.cpp with --jinja, the chat-template fix that prevents tool-call loops. Other OpenAI-compatible providers such as Ollama, LM Studio, Mistral, OpenAI, and Anthropic can work, but are not as thoroughly tested.

Read DEPLOYMENT.md →

llama-server launch

# 1. Download Unsloth's GGUF
huggingface-cli download unsloth/gemma-4-26B-A4B-it-GGUF \
  --include "gemma-4-26B-A4B-it-UD-Q3_K_M.gguf" \
  --local-dir /path/to/models

# 2. Start llama-server with --jinja
./build/bin/llama-server \
  -m /path/to/models/gemma-4-26B-A4B-it-UD-Q3_K_M.gguf \
  --host 0.0.0.0 --port 8000 \
  -ngl 99 -c 32768 -np 1 \
  --jinja -ctk q8_0 -ctv q8_0 \
  --alias gemma4
Glowing GraphRAG node map over source code

Context that moves with the work

GraphRAG memory keeps relevant code in view.

DryDock combines an AST symbol indexer with retrieval so the model can work with the right code context instead of guessing from a narrow window.

What's in the box

Purpose-built for serious local development.

TUI-first

Textual-powered terminal UI with slash commands, plan/edit modes, session history, undo, back, and goal controls.

14 built-in tools

Includes read_file, write_file, search_replace, bash, grep, glob, mechanical_rename, retrieve, and more.

Local-first

OpenAI-compatible endpoint support for llama.cpp, Ollama, and LM Studio. No cloud required.

GraphRAG

AST symbol indexing plus TF-IDF retrieval. Auto-prefetches relevant code on every turn.

Adaptive thinking

Per-turn thinking budget: HIGH for planning, OFF for routine writes, and LOW for recovery.

Multimodal vision

Optional mmproj-F16.gguf projector enables OpenAI-style image inputs with Gemma 4.

Architecture

The agent loop, without the cloud dependency.

User
DryDock TUI
Tools
GraphRAG
Local LLM
Codebase

Tested hardware

Built for real local inference rigs.

GPU: 2× NVIDIA RTX 4060 Ti 16GB, 32GB total VRAM

RAM: 64GB recommended, 32GB minimum

Model: Gemma 4 26B-A4B, 26B MoE, 4B active params per token

Performance: ~15–17 tok/s decode with llama.cpp Q3_K_M

OS: Ubuntu 22.04 / 24.04, kernel 6.8+

Minimum: single 24GB VRAM card with reduced context

Local AI workstation with GPUs and glowing terminal