v0.6.0

Getting Started

Last updated


Build the kura binary, register a database, start the daemon, and run a first keyword search against files you drop in.

Requirements


ItemRequirementWhy
Operating systemmacOS (APFS/HFS+) or Linux (ext4/xfs)The daemon detaches with setsid and the watcher relies on POSIX file metadata
Go1.25.1 or latergo.mod declares go 1.25.1
C toolchainAny compiler cgo can useSQLite is accessed through github.com/mattn/go-sqlite3
pdftotextOnly for PDF files (poppler-utils)PDF text is extracted with pdftotext -layout -enc UTF-8

Build and Install


  1. git clone https://github.com/pardnchiu/KuraDB.git
  2. cd KuraDB
  3. make build

TargetRuns
make buildgo build -o bin/kura ./cmd/app
make appStop a running daemon, build, move the binary to /usr/local/bin/kura with sudo, start the daemon
make stopgo run ./cmd/app stop
make testgo test -v -count=1 ./...
make add <name>, make list, make remove <name>, make edit <old> <new>, make port <args>, make helpThe matching subcommand through go run ./cmd/app

Register a Database and Start the Daemon


  1. kura add notes
  2. kura

kura add notes creates ~/.config/kuradb/notes/inbox/, links it as ~/Kura_notes, and records the name in db.json. Running kura with no arguments forks the daemon into the background and prints its address, for example http://localhost:21182.
A database added while the daemon is running is not picked up until the daemon restarts:
  1. kura stop
  2. kura


  1. cp ~/Documents/design-notes.md ~/Kura_notes/
  2. curl "$(cat ~/.config/kuradb/endpoint)/api/search?db=notes&q=sqlite"

The watcher scans each inbox every 10 seconds, so a new file is searchable within about 10 seconds. The response groups matching paragraphs by source file:
  1. {
  2. "keyword": [
  3. {
  4. "source": "/Users/you/.config/kuradb/notes/inbox/design-notes.md",
  5. "matches": [
  6. { "chunk": 2, "content": "Second paragraph about SQLite" }
  7. ]
  8. }
  9. ]
  10. }

To let an agent query the same data, register the stdio MCP server with your client, for example in Claude Code:
  1. claude mcp add kura -- kura mcp

Next Steps


中文