codedb's 70x warm-start fix

Rach Pradhan · 7 min read

The search was not the slow part. The startup was. In 0.2.53 and 0.2.54, a warm `search` on the same repository could still cost roughly 5.5 seconds because every fresh process reopened a snapshot and rebuilt too much state around it. By 0.2.56, that same path was down to about 80 milliseconds. This is the short story of how codedb removed that startup tax.

TL;DR

On the same `openclaw` corpus, warm `tree` and warm `search` dropped from roughly 5.5 seconds in `0.2.53` / `0.2.54` to roughly 80 milliseconds in `0.2.55 / 0.2.56`. Warm tree RSS dropped from about 3.3GB to 193MB. `0.2.56` did not change the performance profile. It was the hotfix that made sure users actually got it.

Benchmarks

The easiest way to understand this release wave is to look at the warm path first. We reran the shipped darwin-arm64 binaries locally on Apple Silicon against `openclaw`, giving each version its own clean corpus copy and a fresh `HOME`. These are numbers from the binaries users actually download.

0.2.53
0.2.54
0.2.55 / 0.2.56
Warm tree
0.2.53
5,546 ms
0.2.54
5,455 ms
0.2.55 / 0.2.56
84 ms
Warm search
0.2.53
5,576 ms
0.2.54
5,564 ms
0.2.55 / 0.2.56
76 ms
Warm word
0.2.53
5,711 ms
0.2.54
5,692 ms
0.2.55 / 0.2.56
439 ms

Measured on April 9, 2026 using shipped darwin-arm64 release binaries on Apple Silicon against the `openclaw` repo, with a fresh `HOME` per version and a clean corpus copy for each run. The `0.2.55 / 0.2.56` bar uses the warm-run average because `0.2.56` was a hotfix on top of the same performance work.

0.2.53
0.2.54
0.2.55 / 0.2.56
Warm tree RSS
0.2.53
3334.0 MB
0.2.54
3334.5 MB
0.2.55 / 0.2.56
193.0 MB
Warm search RSS
0.2.53
3333.0 MB
0.2.54
3333.5 MB
0.2.55 / 0.2.56
193.0 MB
Warm word RSS
0.2.53
3333.5 MB
0.2.54
3333.9 MB
0.2.55 / 0.2.56
680.1 MB

RSS values come from macOS `/usr/bin/time -l`. The big step-change arrives in `0.2.55`, where warm reopen no longer rebuilds the same giant heap state on every process start. `0.2.56` tracks the same warm-memory profile because it was an install/update hotfix.

Why warm mattered more than cold

Cold indexing still matters. On a first run, it is the whole experience. But agent workflows are dominated by the warm path: reopened snapshots, short-lived CLI invocations, fresh MCP sessions, and secondary project loads. That is where repeated startup work hurts.

You can see that in the cold chart. `0.2.54` improved cold `tree`, and `0.2.55` kept it roughly flat. That is good, but it is not the main story. The main story is that `0.2.55` stopped paying the warm-start bill over and over again.

0.2.53
0.2.54
0.2.55
0.2.53
6.36 s
0.2.54
5.67 s
0.2.55
5.70 s

`0.2.56` is omitted here because it was an install/update hotfix, not a new indexing pass. The meaningful cold-start shift in this window happened in `0.2.54`, while `0.2.55` kept cold indexing essentially flat and moved the real win to warm reopen.

Release timeline

If you only want the sequence, here is the short version.

Apr 5, 2026

v0.2.53

Trigram v2

Indexing got materially lighter with integer doc IDs, batch accumulation, and faster intersections.

36% faster indexing, 63% faster dense queries

Apr 6, 2026

v0.2.54

mmap-backed postings

The trigram index moved out of giant heap structures, which improved cold starts and reduced pressure on memory.

cold tree 6.36s → 5.67s

Apr 9, 2026

v0.2.55 / 0.2.56

Warm reopen

Persisted state started getting reused directly, and the hotfix on top made install/update actually deliver that version.

warm tree 5.46s → 84ms

What changed for users

The user-facing change is rhythm. `tree` becomes cheap enough to call early. `search` stops feeling like a detour. MCP secondary-project loads stop turning into a RAM event. And because warm reopen is no longer rebuilding the world, codedb starts feeling less like a daemon you have to accommodate and more like a part of the loop itself.

This is also the point where the surrounding features start to matter more. `codedb_query` makes the MCP side more composable, WAL-backed ranking starts using real behavior instead of static heuristics, and `0.2.56` closes the loop by fixing the install/update path. Performance work only matters if users actually end up running the faster binary. The project itself lives on `justrach/codedb` on GitHub.

Current recommended releasev0.2.56

Install `0.2.56`, not `0.2.55`

`0.2.55` is where the warm-reopen performance jump landed. `0.2.56` is the one people should actually install and share, because it ships the same faster path and fixes the install/update flow so users reliably land on the right binary.

Upgrade

If you are on anything older than `0.2.55`, the warm-path improvement alone is reason enough to move. If you already took `0.2.55`, `0.2.56` is the hotfix that makes install and update line up with the actual GitHub release instead of just pointing at it.

Install / update
curl -fsSL https://codedb.codegraff.com/install.sh | bash

# or if you already have it:
codedb update