-
Notifications
You must be signed in to change notification settings - Fork 0
Installation
Columbus is a single Go binary. It is always built with -tags fts5 and
CGO_ENABLED=1 (tree-sitter, SQLite, sqlite-vec and the tokenizer are C
libraries).
| Requirement | Why |
|---|---|
| Go 1.26+ | Build toolchain |
| A C compiler (cgo) | tree-sitter + SQLite/FTS5 + sqlite-vec + tokenizers |
| git | The only hard runtime dependency — Columbus anchors the index to git state |
| onnxruntime (for semantic search) | The embedding runtime; bundled in release archives, dlopen'd at runtime |
| ripgrep (recommended) | Search fast-path; a pure-Go fallback covers the rest |
| ast-grep (optional) | Optional structural matching |
Natural-language search runs an on-device ONNX model (bge-small-en-v1.5). It
needs two native pieces: libtokenizers.a (linked at build time) and an
onnxruntime shared library (loaded at runtime). When the runtime library is
missing, Columbus still works — search degrades to deterministic keyword (FTS)
ranking. columbus doctor reports which mode you're in.
Download the archive for your platform from
Releases. Each archive
ships the columbus binary plus the matching onnxruntime shared library
beside it, so semantic search works out of the box with no network at runtime.
The loader finds the lib next to the binary; override with COLUMBUS_ORT_LIB.
CGO_ENABLED=1 go install -tags fts5 github.com/orafaelfragoso/columbus/cmd/columbus@latestInstalls columbus into $(go env GOPATH)/bin (put it on your PATH). This
build bundles no embedding runtime: search falls back to keyword until an
onnxruntime library is available (COLUMBUS_ORT_LIB or next to the binary).
git clone https://github.com/orafaelfragoso/columbus
cd columbus
brew install zig goreleaser ripgrep ast-grep # build/dev toolchain (macOS)
make setup # fetch model weights + libtokenizers.a + onnxruntime into ~/.columbus/libs
make install # -> ~/.local/bin/columbus (override with PREFIX=/usr/local/bin)
export COLUMBUS_ORT_LIB="$HOME/.columbus/libs/libonnxruntime.dylib" # .so on linuxmake setup fetches everything the embedding engine needs; make build drops
the binary in dist/columbus; make install puts it on your PATH.
columbus version
columbus doctordoctor confirms your environment is ready — git, ripgrep, ast-grep, the
embedded grammars, the vec0 extension, the onnxruntime runtime, and (inside a
project) the database, index and embedding model. See
Command: doctor.
[ok] columbus version 0.1.0
[ok] git /usr/bin/git
[ok] ripgrep /usr/bin/rg
[ok] grammars 6 languages loaded
[ok] vec0 sqlite-vec v0.1.6
[ok] runtime bge-small-en-v1.5 (384-d)
healthy
Columbus — the navigator your coding agent has been missing · local-only, deterministic code context · Repository · Issues · MIT License
Getting started
Concepts
Guides
- Using Columbus with Your Agent
- Searching Effectively
- Navigating Code
- Project Memory
- Tracking Work: Epics, Stories & Tasks
- Keeping the Index Fresh
Command reference
Reference
- Output Modes
- JSON Contract & Errors
- Exit Codes
- Configuration
- Supported Languages
- Color & Environment
Project