Self-hosted semantic code search platform — Go server with web dashboard, CLI, and AI-agent skills. Search code by meaning, not text: hybrid BM25 + dense embeddings via llama.cpp.
FAQ
code-index is a Claude Code plugin with 6 hand-picked skills for development work, indexed on Flowy. Install it with the command on its page. It includes cix-workspace, cix, cix-workspace. Its skills do not fire on their own yet. Request auto-invocation to have Flowy route them as you prompt. Free and open source.
> /plugin marketplace add dvcdsys/code-index
Repo: dvcdsys/code-index
██████╗██╗██╗ ██╗
██╔════╝██║╚██╗██╔╝
██║ ██║ ╚███╔╝
██║ ██║ ██╔██╗
╚██████╗██║██╔╝ ██╗
╚═════╝╚═╝╚═╝ ╚═╝ CodeIndeX
cix — CodeIndeX. Search your codebase by meaning, not just text. A self-hosted semantic code-search platform — server with a web dashboard, CLI, agent skills, and multi-repo workspace search. Works with any agent or terminal. Website: codeindex.app
cix search "authentication middleware"
cix search "database retry logic" --in ./api --lang go
cix symbols "UserService" --kind class
Or open http://localhost:21847/dashboard in your browser:
[!IMPORTANT] Reindex after upgrading the server. Until the parsing/chunking/embedding pipeline stabilizes, an upgrade can change how code is embedded. A reindex brings every project onto the new pipeline; within a version, search is consistent once reindexed.
Grep and fuzzy file search work fine for small projects. At scale they break down:
cix indexes your code into a vector store using CodeRankEmbed — a model purpose-built for code retrieval. Search queries return ranked snippets with file paths and line numbers, not raw file lists.
cix-server — Go HTTP API with embedded llama.cpp sidecar for embeddings, SQLite for symbols + metadata, chromem-go for vectors, FTS5 BM25 mirror for hybrid ranking. Ships as a single distroless container./dashboard — projects, search, users + API keys, runtime sidecar control, drift indicator. Embedded in the server binary. See doc/DASHBOARD.md.cix CLI — cix search/symbols/files/workspace … for terminal + agent use. See doc/CLI_REFERENCE.md.cix watch keeps the index fresh as you edit.push. See workspaces.md.doc/DASHBOARD.md.cix becomes the agent's default reflex for code search. See Agent integration. ┌────────────────────────────────────┐
│ Browser → http://host:21847 │
│ • /dashboard • /docs • /openapi │
└────────────┬───────────────────────┘
▼
┌─────────────────────────────────────────────────────────────────┐
│ cix-server (Go, single distroless binary) │
│ HTTP/REST + cookie sessions + Bearer API keys │
│ ├── auth, admin, api-keys, projects, indexing, search │
│ ├── workspaces, github-tokens, webhooks │
│ └── embedded React dashboard + Swagger UI │
│ │
│ Indexing pipeline │
│ ├── tree-sitter/wasm (AST chunking, 30+ langs) (wazero) │
│ ├── embedding provider (local llama.cpp / Voyage / OpenAI) │
│ ├── chromem-go (cosine similarity vector store) │
│ └── SQLite FTS5 mirror (BM25) + metadata (modernc/sqlite) │
└────────────┬─────────────────────────────────────┬──────────────┘
│ HTTP │ Unix socket
▼ ▼
cix CLI (Go) ┌──────────────────────────┐
search · symbols · workspace │ llama-server child proc │
└──────────────────────────┘
Pure-Go static binary; CUDA-image variants add a CUDA runtime layer for GPU embeddings. Workspace clones live in <data-dir>/repos/.
| Mode | Best for | GPU | Prerequisites |
|---|---|---|---|
| Docker (CPU) | any OS, dev / small repos | none | Docker |
| Docker (CUDA) | NVIDIA GPU servers | CUDA 12.x | Docker + NVIDIA Container Toolkit |
| Native (macOS) | Apple Silicon w/ full Metal | Metal | Go 1.25+, Node.js, Xcode CLT |
One command, any mode — the installer detects your platform, asks a few questions (deployment mode, admin email, password, port — every one has a sensible default), and brings the server up:
curl -fsSL https://raw.githubusercontent.com/dvcdsys/code-index/main/install-server.sh | bash
(Equivalent from a clone: git clone https://github.com/dvcdsys/code-index && cd code-index && ./install-server.sh.)
At the end it prints the dashboard URL and your admin login — and offers to install the cix CLI and connect it to the new server, so cix init works immediately (steps 2–3 below happen automatically on a fresh install). Re-running after a git pull upgrades in place; --uninstall removes the server but keeps your data. Native-mode details and manual setup: doc/SETUP_MACOS_NATIVE.md. For shared/team deployment, see doc/TEAM_DEPLOYMENT.md.
git clone https://github.com/dvcdsys/code-index && cd code-index
cp .env.example .env
# Edit .env — set CIX_API_KEY, CIX_BOOTSTRAP_ADMIN_EMAIL, CIX_BOOTSTRAP_ADMIN_PASSWORD
docker compose pull # `up -d` alone reuses any local image, however old
docker compose up -d # CPU
# docker compose -f docker-compose.cuda.yml pull && docker compose -f docker-compose.cuda.yml up -d # NVIDIA GPU
curl http://localhost:21847/health # → {"status":"ok"}
[!IMPORTANT] On a fresh database the server refuses to start unless both
CIX_BOOTSTRAP_ADMIN_EMAILandCIX_BOOTSTRAP_ADMIN_PASSWORDare set. The admin is created withmust_change_password=true— you change it on first login, then can drop the env vars.
Open http://localhost:21847/dashboard, sign in with the bootstrap admin, change the password when prompted. (What's on each page.)
Then go to API Keys → New key, name the key, and copy the revealed cix_… value — it is shown exactly once. The dialog also gives you a ready-to-paste cix config connect command for step 3.
curl -fsSL https://raw.githubusercontent.com/dvcdsys/code-index/main/install.sh | bash
# paste the connect command from the API-key dialog, or:
cix config set server.local.url http://localhost:21847
cix config set server.local.key cix_<key-from-step-2>
cix config set default_server local
(Legacy alternative: set CIX_API_KEY=cix_… in .env before first boot and the server imports it as an API key.)
From source: cd cli && make build && make install. Pre-release develop channel: doc/UPDATES.md.
cd /path/to/your/project
cix init # registers + indexes + starts the file watcher
cix status # wait for: Status: ✓ Indexed
cix search "authentication middleware"
cix symbols "handleRequest" --kind function
cix summary
Full command surface: doc/CLI_REFERENCE.md. Same five modes are on the dashboard's Search page.
cix is self-hosted first: out of the box it embeds with a bundled llama.cpp sidecar and never sends your code anywhere. The backend is pluggable — switched at runtime from Dashboard → Server (admin only).
| Provider | Kind | Default model | Where code goes | API key |
|---|---|---|---|---|
| Local (default) | ollama | awhiteside/CodeRankEmbed-Q8_0-GGUF | Stays on your machine — bundled llama-server, fully offline. GPU via CUDA/Metal. | none |
| Voyage AI | voyage | voyage-code-3 | Sent to api.voyageai.com. Code-specialized, retrieval-tuned, Matryoshka dims 256–2048, int8. | CIX_VOYAGE_API_KEY |
| OpenAI / compatible | openai | text-embedding-3-small | Sent to the configured base_url (OpenAI or any compatible endpoint). | CIX_OPENAI_API_KEY |
Set the API-key env var on the server, then select the provider + model in the dashboard. Switching providers (or a provider's model/dimensions) changes the embedding space, so cix treats it as a new identity and a full reindex is required — vectors aren't comparable across providers.
Choosing: Local for air-gapped / privacy-sensitive repos and zero per-query cost. Voyage AI (
voyage-code-3) for top-tier code retrieval without hosting a GPU. OpenAI / compatible to reuse an existing endpoint or internal gateway.
cix is designed to be called by AI agents (Claude, GPT, Cursor, custom agents) as a shell tool — they run cix search instead of Grep/Glob and get ranked snippets rather than raw file dumps.
Claude Code (plugin, recommended). Bundles the cix + cix-workspace skills, the cix-workspace-investigator sub-agent, CLI auto-install hooks, and a grep-nudge:
# Run in a terminal — NOT inside a Claude Code session.
claude plugin marketplace add dvcdsys/code-index
claude plugin install cix@code-index
# Activates automatically on the next `claude` start — no reload needed.
# Update later (marketplace first, then the plugin):
claude plugin marketplace update code-index
claude plugin update cix@code-index
(The /plugin … slash commands work inside an interactive session too, but the terminal form is the dependable path.)
Then invoke the skill paired with the actual task (not a search query) — /cix <fix / implement / investigate / refactor …>. cix becomes the agent's IDE (goto-def, find-refs, "what calls this") while it works. Manual install: cp -r skills/cix ~/.claude/skills/cix. For multi-repo work: /cix-workspace <task>. Full hook list + configuration: plugins/cix/README.md.
Claude Desktop & Cowork (MCP). These don't load Claude Code plugins, so cix ships a built-in stdio MCP server exposing the same search as cix_* tools:
cix mcp install claude-desktop # restart Claude Desktop; cix_* tools appear
/plugin install cix-cowork@code-index # optional: Cowork skills
The model is server-centric and multi-server (no "current project" — the agent names projects/workspaces explicitly). Full guide: doc/COWORK_MCP.md.
Other agents. Give the agent shell execution and describe the command:
Usage: cix search "what you're looking for" [--in ./subdir] [--lang python]
Returns: ranked code snippets with file paths and line numbers
Most common environment variables (full surface in doc/CONFIG_REFERENCE.md; most are runtime-editable from Dashboard → Server):
| Variable | Default | Purpose |
|---|---|---|
CIX_API_KEY | — | Bearer token for CLI/agents. Required. |
CIX_BOOTSTRAP_ADMIN_EMAIL / _PASSWORD | — | Required on a fresh DB; seeds the first admin. |
CIX_PORT | 21847 | Listen port. |
CIX_EMBEDDING_MODEL | awhiteside/CodeRankEmbed-Q8_0-GGUF | Local GGUF repo or absolute path. |
CIX_N_GPU_LAYERS | -1 macOS / 0 else / 99 Docker CUDA | 99 = full offload, 0 = CPU. |
CIX_EMBEDDINGS_ENABLED | true | false boots without the llama sidecar. |
CIX_SECRET_KEY / _KEYFILE | auto-generated keyfile | AES-256-GCM key for github_tokens encryption. Back this up. |
CIX_PUBLIC_URL | — | Public origin for webhook URLs. Trumped by a live Managed Tunnel. |
The REST surface (auth, users, projects, indexing, search, workspaces, webhooks) is documented at http://<host>:21847/docs (Swagger UI) and in doc/openapi.yaml — the single source of truth the Go interface and TypeScript types are generated from.
doc/TEAM_DEPLOYMENT.md.doc/DOCKER_TAGS.md, doc/vram-profiling.md. Inference runs on GPU automatically with the cu128 image.doc/SECURITY_DEPLOYMENT.md.doc/RELEASES.md.doc/TROUBLESHOOTING.md.Pre-built images on Docker Hub:
| Tag | Architecture | Use case |
|---|---|---|
dvcdsys/code-index:latest | linux/amd64 + linux/arm64 | CPU |
dvcdsys/code-index:cu128 | linux/amd64 | NVIDIA GPU (CUDA 12.8) |
dvcdsys/code-index:<version> / <version>-cu128 | — | Version-pinned variants |
docker compose logs -f # tail logs
docker compose down # stop
docker compose down -v # stop AND wipe data + models (destructive)
| Doc | Purpose |
|---|---|
doc/CLI_REFERENCE.md | Full CLI command surface + per-project config (.cixignore, .cixconfig.yaml) |
doc/DASHBOARD.md | Dashboard pages, authentication, authorization model, drift indicator |
doc/TEAM_DEPLOYMENT.md | Self-hosting cix for a team — production / shared-infrastructure deployment for DevOps |
doc/TROUBLESHOOTING.md | Common issues + search-quality tuning (--min-score) |
workspaces.md | User-facing workspace guide (when to use, agent trust rules, query patterns) |
doc/WORKSPACES.md | Operator setup (encryption keys, Cloudflare tunnel, workers, REST API) |
doc/SEARCH_ALGORITHM.md | How per-project + hybrid workspace search rank results |
doc/WEBHOOKS.md | GitHub webhook lifecycle, modes, HMAC validation |
doc/COWORK_MCP.md | Using cix from Claude Desktop / Cowork over MCP (cix mcp install, multi-server) |
doc/UPDATES.md | Release-poll banner + stable vs develop install channels |
cix stands on a lot of excellent open-source work. Thank you to the projects and teams that make it possible:
Embeddings & models
llama-server
sidecar that runs embeddings locally on CPU/GPU.voyage-code-3 and the
code-specialized embedding API, supported as a first-class provider.text-embedding-3 family and the OpenAI-compatible provider shape.Indexing & storage
Server & API
golang.org/x ecosystem.CLI
cix subcommand.cix config TUI.~/.cix/config.yaml).Dashboard (web UI)
/dashboard.Full dependency lists with versions live in
server/go.mod, cli/go.mod, and
server/dashboard/package.json.
MIT
.cixignore
.claude-plugin/
marketplace.json
.env.example
.github/
dependabot.yml
ISSUE_TEMPLATE/
bug_report.yml
config.yml
feature_request.yml
PULL_REQUEST_TEMPLATE.md
workflows/
ci-cli.yml
ci-plugin.yml
ci-server.yml
ci-site.yml
cleanup-dockerhub.yml
codeql.yml
deploy-site.yml
llama-pin-check.yml
prerelease-cli.yml
prerelease-server.yml
release-cli.yml
release-server.yml
security.yml
.gitignore
CITATION.cff
cli/
cmd/
cancel_test.go
cancel.go
config_edit.go
config_keys_test.go
config_keys.go
config_show_test.go
config.go
definitions_test.go
definitions.go
file_test.go
file.go
files_test.go
files.go
headers_test.go
init.go
list_test.go
list.go
mcp_connect_test.go
mcp_connect.go
mcp_test.go
mcp_tools_test.go
mcp_tools.go
mcp.go
multiserver_test.go
references_test.go
references.go
reindex.go
root_test.go
root.go
search_test.go
search.go
status_test.go
status.go
summary_test.go
summary.go
symbols_test.go
symbols.go
testutil_test.go
tree.go
version.go
watch_test.go
watch.go
workspace_test.go
workspace.go
go.mod
go.sum
internal/
client/
client_test.go
client.go
encode_test.go
file_test.go
file.go
index_streaming_test.go
index.go
progress.go
projects.go
search.go
workspace.go
config/
config_test.go
config.go
headers_test.go
loader_koanf_test.go
loader_koanf.go
schema/
schema_test.go
schema.go
set_test.go
set.go
tui/
keys.go
model_test.go
model.go
sections.go
styles.go
tui.go
update.go
view.go
validator_test.go
validator.go
daemon/
daemon.go
discovery/
discovery_test.go
discovery.go
language.go
fileutil/
binary_test.go
binary.go
indexer/
indexer_test.go
indexer.go
progress.go
projectconfig/
projectconfig_test.go
projectconfig.go
watcher/
watcher_test.go
watcher.go
watchtui/
keys.go
manager_test.go
manager.go
model_test.go
model.go
styles.go
tui.go
update.go
view.go
main.go
Makefile
README.md
CODE_OF_CONDUCT.md
CONTRIBUTING.md
doc/
benchmark-cix-vs-grep.md
benchmark-data/
benchmark-f16.json
benchmark-q4_k_m.json
benchmark-q5_k_m.json
benchmark-q8_0.json
fp16-cache.json
benchmark-q8-vs-fp16.md
benchmarks.md
CLI_CONFIG.md
CLI_REFERENCE.md
CONFIG_REFERENCE.md
COWORK_MCP.md
DASHBOARD.md
DEPRECATION_POLICY.md
DOCKER_TAGS.md
LANGUAGES.md
MIGRATION_FROM_PYTHON.md
openapi.yaml
POLLING.md
RELEASES.md
SEARCH_ALGORITHM.md
SECURITY_DEPLOYMENT.md
SETUP_MACOS_NATIVE.md
TEAM_DEPLOYMENT.md
TROUBLESHOOTING.md
UPDATES.md
vram-profiling.md
WEBHOOKS.md
WORKSPACES.md
docker-compose.cuda.yml
docker-compose.yml
install-develop.sh
install-server.sh
install.sh
LICENSE
Makefile
ONBOARDING.md
plugins/
cix/
cix-cowork/
.claude-plugin/
plugin.json
README.md
skills/
cix/
cix-workspace/
references/
troubleshooting.md
trust-rules.md
SKILL.md
SKILL.md
.claude-plugin/
plugin.json
agents/
cix-workspace-investigator.md
bin/
cix
commands/
def.md
file.md
init.md
refs.md
search.md
status.md
summary.md
tree.md
hooks/
hooks.json
README.md
scripts/
cix-wrapper.sh
cwd-changed.sh
grep-nudge.sh
lib-cix-probe.sh
post-compact.sh
session-end.sh
session-start.sh
sync-skills.sh
skills/
cix/
cix-workspace/
SKILL.md
SKILL.md
tests/
cix-wrapper.bats
cwd-changed.bats
grep-nudge.bats
helpers.bash
manifest.bats
mocks/
bin/
cix
post-compact.bats
README.md
session-end.bats
session-start.bats
workspace-bundle.bats
poc/
wasm-treesitter/
.gitignore
build.sh
cmd/
bench/
main.go
stability/
main.go
csrc/
host_extra.c
go.mod
go.sum
grammars_test.go
README.md
ts-ts.wasm
wasmts_test.go
wasmts.go
portainer-stack-cuda.yml
portainer-stack.yml
README.md
SECURITY.md
server/
.gitignore
bench/
bench_chromem
bench_chromem.go
bench_embed_parity
bench_embed_parity.go
bench_eval_retrieval.go
bench_treesitter
bench_treesitter.go
emit_reference_embeddings.py
fixtures/
sample.c
sample.cpp
sample.go
Sample.java
sample.js
sample.py
sample.rb
sample.rs
sample.ts
sample.tsx
go.mod
go.sum
queries.json
README.md
results/
chromem.json
embed_parity.json
reference_embeddings.json
reference_gguf_path.txt
treesitter.json
cmd/
cix-server/
bootstrap_test.go
bootstrap.go
main.go
resetpassword_test.go
resetpassword.go
version.go
webhook_audit_test.go
webhook_audit.go
dashboard/
.gitignore
components.json
index.html
package-lock.json
package.json
postcss.config.js
README.md
src/
api/
client.ts
types.ts
app/
App.tsx
Footer.tsx
providers.tsx
Shell.tsx
Sidebar.tsx
ThemeProvider.tsx
UpdateBanner.tsx
auth/
AuthProvider.tsx
BootstrapNeededPage.tsx
ChangePasswordPage.tsx
LoginPage.tsx
useAuth.ts
index.css
lib/
cixServer.ts
cn.ts
editorPreference.ts
formatDate.ts
theme.ts
useCopy.ts
useServerStatus.ts
version.ts
main.tsx
modules/
api-keys/
ApiKeysPage.tsx
components/
ApiKeyTable.tsx
CreateApiKeyDialog.tsx
RevokeApiKeyDialog.tsx
hooks.ts
index.ts
github-integration/
GithubIntegrationPage.tsx
index.ts
TokensTab.tsx
WebhooksTab.tsx
groups/
components/
CreateGroupDialog.tsx
GroupMembersDialog.tsx
ShareToGroupCard.tsx
GroupsPage.tsx
hooks.ts
index.ts
shareHooks.ts
home/
CommandBlock.tsx
ConnectClaudeCodeCard.tsx
HomePage.tsx
index.ts
login-locks/
components/
LoginLocksTable.tsx
ResetLockButton.tsx
hooks.ts
index.ts
LoginLocksPage.tsx
managed-tunnels/
BinarySection.tsx
index.ts
ManagedTunnelsPage.tsx
TunnelStateBadge.tsx
types.ts
projects/
components/
DeleteProjectDialog.tsx
ForceStopButton.tsx
IndexingProgressCard.tsx
ProjectCard.tsx
ProjectInfoCard.tsx
ProjectShareCard.tsx
ProjectsTable.tsx
ReassignOwnerDialog.tsx
ReindexProjectButton.tsx
SyncProjectButton.tsx
SyncSettingsCard.tsx
hooks.ts
index.ts
... 401 more© 2026 Flowy · Free and open source
Built for Claude Code · Not affiliated with Anthropic
doc/CONFIG_REFERENCE.md| Complete env-var reference |
doc/RELEASES.md | Cutting CLI + server releases, CVE scans, make targets |
doc/SETUP_MACOS_NATIVE.md | Native macOS Metal setup + launchd plist |
doc/SECURITY_DEPLOYMENT.md | Production hardening |
doc/DOCKER_TAGS.md | Docker Hub tag lifecycle |
doc/LANGUAGES.md | Supported chunker languages |
doc/MIGRATION_FROM_PYTHON.md | Python → Go server migration notes |
doc/benchmarks.md | Index of dated benchmark snapshots |
doc/openapi.yaml | REST API source of truth |
CONTRIBUTING.md | Contributor workflow |
plugins/cix/README.md | Claude Code plugin reference |
plugins/cix-cowork/README.md | Cowork skills plugin (MCP-based) reference |