Developer tool · Claude Code plugin · Database

VHDB — Ask your past sessions

'Have we done this before?', 'Why did we decide this?', 'How did this file get here?' VHDB stores the conversations, decisions, errors, fixes, edits and commits from your vibe-coding sessions, and lets both you and Claude search them. It is a history database with a Claude Code plugin.

VHDB intro image — decision, error, fix and commit cards answering: have we done this before, why did we decide this, how did this file get here
VHDB intro image (an illustration)

The same questions keep coming back

The longer you vibe-code, the more the same questions return. The answer is somewhere in an old conversation, but once the session ends it is hard to find. VHDB (Vibe History Database) stores the conversations, decisions, errors, fixes, edits and commits from your sessions and searches them when you need them. The history it reads is either SmartWorkbench's decision ledger (read only) or the records the plugin keeps in its own log.

Ask your past sessions

Search right inside Claude Code with slash commands.

/vhdb:search "refresh race" kind:error,decision
/vhdb:search file:src/auth.js kind:decision
/vhdb:history src/auth.js

Have we done this before? It finds past attempts and errors, and the fix that closed them. Why did we decide this? It shows a decision with its reason and the earlier decision it replaced. How did this file get here? It shows every request that touched the file as a newest-first timeline.

Queries take words, phrases, and file, commit, session, kind and time filters. Korean is searched by syllable, and code also by camelCase, snake_case and path pieces; decisions and errors rank higher, and newer records get extra weight.

Claude looks things up before it works

The plugin also gives Claude tools it calls itself. query_history and file_history look up the history before work to avoid repeating a mistake or reversing a decision, and record_decision records the choice and its reason when one option is picked among several. If an earlier decision is overturned, that decision is marked as superseded.

The three switches are all off by default; /vhdb:on turns on recording and context injection, and the guard is turned on separately with /vhdb:on guard. Record keeps test, build and lint results and failures, and closes an open error when the same check later passes. Inject adds valid decisions and unresolved errors, within a fixed size, when you send a prompt and when an error you have already seen comes back, with a note that they are past records and not instructions. Guard pauses the first edit to a file under a valid decision once and shows that decision; if it fails or times out, it does not block the edit.

On your computer, with secrets masked

The plugin has no network code, and all data stays in your own computer's repository. Secrets such as tokens, API keys and credentials inside URLs are masked before they are stored, and search results never include the body of a tool's output.

The database engine was written from scratch in Rust and needs no external database. The session log itself is the source of truth, and if anything stops at any moment, it comes back to the same result from the same log. The same engine runs in three places: inside the Claude Code plugin (local), as a personal daemon, and as a team server.

To be honest

For now the plugin uses only the local engine. Connecting to a team server and uploading remotely are not built yet. There is no search across projects, semantic search is optional and only a simple method exists for now. Because it is a log, individual history entries cannot be deleted, and times are shown in UTC. This is the first release (0.1.0).

Getting started

You need Node.js 24 or later and a git repository. After you download the plugin repository, start Claude Code like this.

claude --plugin-dir ~/vhdb-plugin

Then search with /vhdb:search token refresh kind:decision since:30d and turn on recording and context injection with /vhdb:on (guard separately with /vhdb:on guard). The history it reads can be the ledger SmartWorkbench builds with /swb ledger on, or the records this plugin keeps after /vhdb:on record. The team server is installed from the installers (.deb, .rpm, tar.gz) on the releases page.

Overview

VHDB overview — SmartWorkbench logs and plugin logs enter the engine through ingest, and WASM, a local daemon and a team server answer queries on top of it
One engine reads the logs and answers searches in three places (inside the plugin, a personal daemon, a team server). The labels in the picture are in Korean.

Main features

search History search — words, phrases and file, commit, session, kind and time filters; Korean by syllable
history File history — every request that touched a file, as a newest-first timeline
psychology Claude tools — look up history before work and record decisions
toggle_on Record, inject and guard — all off by default, turned on when you need them
lock Local first — no network code in the plugin, secrets masked before storing
dns One engine, three places — inside the plugin, a personal daemon, a team server

Links and usage

Commands, tools, settings and file locations are in the plugin repository's README, and the server installers are on the releases page.

VHDB
Vibe-coding history database · Claude Code plugin

Project info

Category Developer tool · database
Parts Engine (local, personal daemon, team server) + Claude Code plugin
Distribution Plugin on GitHub, server as release installers
Audience Developers who use Claude Code
Version 0.1.0
Requirements Node.js 24 or later, a git repository
Plugin license MIT