惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

The Cloudflare Blog
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
人人都是产品经理
人人都是产品经理
C
Check Point Blog
有赞技术团队
有赞技术团队
H
Help Net Security
V
Vulnerabilities – Threatpost
N
News | PayPal Newsroom
Hacker News - Newest:
Hacker News - Newest: "LLM"
L
LINUX DO - 最新话题
Apple Machine Learning Research
Apple Machine Learning Research
博客园 - 【当耐特】
爱范儿
爱范儿
I
InfoQ
V
Visual Studio Blog
O
OpenAI News
Google DeepMind News
Google DeepMind News
S
Security Affairs
T
Troy Hunt's Blog
P
Palo Alto Networks Blog
Spread Privacy
Spread Privacy
Engineering at Meta
Engineering at Meta
雷峰网
雷峰网
N
Netflix TechBlog - Medium
Latest news
Latest news
H
Hackread – Cybersecurity News, Data Breaches, AI and More
Webroot Blog
Webroot Blog
S
Schneier on Security
MongoDB | Blog
MongoDB | Blog
T
Tor Project blog
V2EX - 技术
V2EX - 技术
Security Latest
Security Latest
Cloudbric
Cloudbric
The GitHub Blog
The GitHub Blog
酷 壳 – CoolShell
酷 壳 – CoolShell
B
Blog RSS Feed
C
CERT Recently Published Vulnerability Notes
T
The Exploit Database - CXSecurity.com
P
Privacy International News Feed
S
Securelist
C
Cisco Blogs
博客园_首页
TaoSecurity Blog
TaoSecurity Blog
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Security Archives - TechRepublic
Security Archives - TechRepublic
P
Proofpoint News Feed
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
T
Threat Research - Cisco Blogs
阮一峰的网络日志
阮一峰的网络日志
S
Secure Thoughts

Hacker News: Show HN

PurrrrrFocus: Pomodoro Timer App - App Store Workflow Engine — Multi-Step Orchestration for Bun RapidPhoto: Pro Photo Editor App - App Store GitHub - DheerG/swarms: Achieve extraordinary results with claude code across a variety of tasks SPICE simulation → oscilloscope → verification with Claude Code — Lucas Gerads Show HN: VCoding – A 5 MB native Windows IDE with no dynamic dependencies Show HN: LLMs don't hallucinate because they're bad at math, it's the format GitHub - Agent-FM/agentfm-core: AgentFM is a peer-to-peer network that turns everyday computers into a decentralized AI supercomputer. AgentFM lets you run massive AI workloads directly across a global mesh of idle CPUs and GPUs. Show HN: Tracking Top US Science Olympiad Alumni over Last 25 Years GitHub - Potarix/agent-hub: One place to talk to all your agents Show HN: Runtime security for AI agents(injection,tool abuse, data exfiltration) GitHub - dubeyKartikay/lazyspotify: Terminal Spotify client for macOS and Linux GitHub - the-banana-tool/king-louie: Easy to use GUI Personal AI Assistant. Win/Linux/Mac. Show HN I made my vacation rental bookable by AI agents–no Airbnb, 0% commission GitHub - basteez/jsf-autoreload: maven plugin to enable hot reload on jsf projects uvm32/hosts/host-gdbstub at main · ringtailsoftware/uvm32 GitHub - labsai/EDDI: Config-driven engine that turns JSON into production-grade AI agents. Multi-agent orchestration, 12+ LLM providers, MCP/A2A protocols, RAG, persistent memory, and enterprise compliance (EU AI Act, GDPR, HIPAA). Built on Quarkus. GitHub - glitchnsec/fortyone-oss: AI Executive Assistant Platform Quickstart | Alien GitHub - muxshed/shed: One stream in, or many. Every destination, simultaneously. No cloud middleman, no per-channel fees, no limits. GitHub - ocrbase-hq/ocrbase: 📄 PDF/IMG ->.MD/JSON Document OCR API for PaddleOCR and GLMOCR. Self-hostable. GitHub - impactjo/home-memory: MCP server that lets your AI assistant remember everything about your home. GitHub - Sets88/dbcls: DbCls is a powerful terminal database client that supports various databases GitHub - neptun2000/heor-agent-mcp GitHub - SeanFDZ/macmind: Single-layer transformer in HyperTalk for the classic Macintosh RollQuation: Math Puzzles - Apps on Google Play GitHub - dropbox/witchcraft Show HN: Agent-cache – Multi-tier LLM/tool/session caching for Valkey and Redis GitHub - opentalon/opentalon: OpenTalon is an open-source platform built from the ground up in Go as a robust alternative to OpenClaw LinkedIn™ 职位抓取工具 - Chrome 应用商店 GitHub - EdoardoBambini/Agent-Armor-Iaga: AI agents are getting tool access — shell, file system, databases, APIs, secrets. But **nobody is governing what they actually do with it**. Frameworks like LangChain, CrewAI, AutoGen, and Claude Code give agents the power to execute. Agent Armor gives you the power to control, audit, and approve every single action before it happens. HN Vibes — Week 15, Apr 7–13 2026 GitHub - chojs23/ec: Easy terminal-native 3-way git mergetool vim-like workflow GitHub - SethPyle376/hiraeth: Local AWS emulator focused on fast integration testing, with SQS support, SQLite-backed state, and a debug-friendly web UI. GitHub - JakOb-dotcom/cloud-sandbox-security-analysis: Technical analysis and Proof of Concept (PoC) regarding environment variable exfiltration in containerized cloud sandboxes via side-channel data leaks. Springboards - Flint Alpha Show HN: A simpler coding agent harness GitHub - audiodude/sudomake-friends GitHub - 256thFission/mini-mythos: OSS clone of Anthropic’s Mythos harness to locate C/C++ memory vulnerabilities Show HN: OpenParallax: OS-level privilege separation for AI agent execution Hacker News Sorted - Chrome 应用商店 Show HN: How to Install Docker on Ubuntu 24.04 LTS: Complete 2026 Guide GitHub - himanshudongre/smriti GitHub - sverrirsig/claude-control: macOS desktop dashboard for monitoring and managing multiple Claude Code sessions GitHub - ory/dockertest: Write better integration tests! Dockertest helps you boot up ephermal docker images for your Go tests with minimal work. Chiral - Chrome 应用商店 Show HN: Two Claudes collaborating through shared memory on a $100 mini-PC GitHub - pmichaillat/latex-cv: Minimalist LaTeX template for academic CVs GitHub - oguzbilgic/posse: A web UI for Anthropic Managed Agents. GitHub - sshiraz/depsly: Dependency risk analysis tool for npm packages ABI Add safari/agent-harness — Safari browser automation via safari-mcp by achiya-automation · Pull Request #212 · HKUDS/CLI-Anything GitHub - Halfblood-Prince/trustcheck: Verify PyPI package attestations and improve Python supply-chain security GitHub - oguzbilgic/kern-ai: Agents that do the work and show it. GitHub - bruits/satteri: High-performance Markdown and MDX processing for the JavaScript ecosystem GitHub - tylergibbs1/feedstock: High-performance web crawler and scraper for TypeScript, powered by Bun and Playwright GitHub - Grimm67123/grimmbot: The self-improving sandboxed and open-source AI agent. With persistent memory and scheduling. GitHub - whitevanillaskies/whitebloom: Local whiteboard that blooms. GitHub - hwdsl2/docker-whisper: Docker image for a self-hosted Whisper speech-to-text server with speaker diarization and OpenAI-compatible transcription and translation APIs. Powered by faster-whisper. Supports all Whisper models, NVIDIA GPU (CUDA) acceleration, JSON/SRT/VTT output, SSE streaming, offline mode, and multi-arch (amd64, arm64). GitHub - yisding/reviewwiggum GitHub - MarwanAlsoltany/serrors: Structured errors for Go: sentinel hierarchies, typed data, custom formatting, and slog integration. GitHub - soatok/age-php GitHub - Luthiraa/markitme GitHub - stagas/rtdiff: realtime git diff gui and AI-assisted commits GitHub - tombedor/excalicharts GitHub - wh1le/excalidraw-edit: Open and edit .excalidraw files from the terminal. Offline, auto-saves to disk. MalExt Sentry - Malicious Extension Scanner - Chrome 应用商店 GitHub - syi0808/asciianimesvg: Generate animated ASCII art SVGs from text. CLI, Rust library, WASM, and web editor. GitHub - zaina-ml/ml_forge: A visual-based graph node editor for training computer vision models. GitHub - anakin87/llm-rl-environments-lil-course: 🌱 A little course on Reinforcement Learning Environments for evaluating and training Language Models GitHub - takaakit/superpowers-uml: Superpowers-UML modifies Superpowers to ensure a software development workflow in which AI agents design through UML modeling. AdriByte Studio - Sviluppo Web e Soluzioni Digitali GitHub - chouligi/angel-copilot: Your personalized Angel Investment Advisor Show HN: MoodSense AI (ML and FastAPI and Gradio, Deployed on Hugging Face) Moodsense Ai - a Hugging Face Space by aman179102 GitHub - agenteractai/lodmem: Level Of Detail Context Management for Agents GitHub - ostefani/subnetlens: A fast, concurrent network scanner with a TUI and plain-text CLI, built in Go. It discovers live hosts on your network, scans their open ports, resolves hostnames, and fingerprints operating systems—delivered. Cyber Pulse: Agentic Intel - Apps on Google Play Whisper API: Self-Hostable Speech to Text Transcription The Agent-Web Protocol Stack: A Research Thesis GitHub - msmarkgu/RelayFreeLLM: A restful API designed to route user prompts to various AI model providers. Show HN: Provepy – A Python decorator that proves your code using Lean and LLMs Show HN: Pardonned.com – A searchable database of US Pardons GitHub - patrickdappollonio/dux: Dux is a terminal UI that lets you run multiple AI coding agents side by side, each in its own git worktree, with full companion terminals, macros, commit generation, and a command palette that knows more tricks than you do. kMC Crystal Simulator Show HN: HyperFlow – A self-improving agent framework built on LangGraph GitHub - stef41/vibescore: 🎵 Grade your vibe-coded project. One command, instant letter grade across security, quality, dependencies, and testing. GitHub - stef41/lmscan: 🔍 Detect AI-generated text and fingerprint which LLM wrote it. Open-source GPTZero alternative. Zero dependencies, works offline. imgur.com GitHub - visionscaper/collabmem: Enabling long-term collaboration with Agentic AI - building up episodic and world model memory over time with in-context awareness 在 Steam 上购买 FriedrichAI: Offline AI 立省 10% GitHub - atripati/ark: AI Runtime Kernel — a context operating system for AI agents. Eliminates tool bloat, loads only what’s needed, and gives LLMs their reasoning space back. GitHub - nowork-studio/toprank: Open-source Claude Code skills for SEO, SEM, Google Ads GitHub - tacomanator/sash: Lightweight macOS menu bar app for reliably cycling through windows of the current application. Appents | Social Media Management for Product-First Teams GitHub - pnhoang/youtube-spam-blocker: Automatically detects and hides spam messages in YouTube Live chat. Set rate limits, keyword filters, and block repeat offenders. GitHub - decisionnode/DecisionNode: CLI + Local MCP - A shared structured memory store across Claude Code, Cursor, Windsurf, Antigravity, and every MCP client. Semantically queryable. GitHub - AvaCodeSolutions/django-email-learning: An open source Django app for creating email-based learning platforms with IMAP integration and React frontend components. The $100K Gap in Kubernetes Security Tooling Function Calling Harness: From 6.75% to 100%
GitHub - DeepBlueDynamics/lume: A small, crazy fast hybrid search engine written in Rust.
kordlessagai · 2026-06-19 · via Hacker News: Show HN

Lume: Hybrid Search Engine & Agentic Document Memory

A high-performance Rust library and CLI suite featuring an FST-backed phrase matcher, hybrid lexical/semantic search engine, and agentic document exploration loop.

Steve Harris Kord Campbell


🗺️ Table of Contents

  • 🚀 Installation & Quick Start
  • 📐 Architecture & Core Components
  • 🛠️ CLI Subcommands & Tool Reference
    • 1. Indexing (lume index)
    • 2. Searching (lume search)
    • 3. Generation (lume generate)
    • 4. Graph-Guided Summarization (lume summarize)
    • 5. Autonomous Agent Chat Loop (lume agent)
    • 6. Starting the MCP Server (lume serve)
    • 7. Crawling Web Pages (lume crawl)
  • 🐍 Python Extractor & Q&A Generator
  • 💻 Codebase Indexing & Search Demo
  • 📖 The Backstory: How Lume Connects
  • 💡 Acknowledgements & Inspiration

🚀 Installation & Quick Start

Prerequisites

  • Rust & Cargo (v1.75+ recommended)
  • Ollama running locally or accessible in your environment (defaults to using the cloud-backed model gemma4:31b-cloud).
  • Python 3.10+ with requests and pypdf installed (for PDF indexing/Q&A generation).

Building the CLI

Build the release profile binary:

The compiled binary will be located at target/release/lume.


📐 Architecture & Core Components

All capabilities of Lume are exposed to the autonomous agent as JSON RPC tools and map directly to CLI commands that a user can run manually to see the raw results.

1. Hybrid Search Architecture

This diagram represents the hybrid search pipeline executed by the lume_search tool:

graph TD
    subgraph lume_search ["Tool: lume_search | CLI: lume search"]
        User([User Prompt / Query]) --> Search[Hybrid Search Engine]
        Search -->|1. BM25 Lexical Search| BM25[(BM25 Index)]
        Search -->|2. Dense Semantic Embeddings| Vector[(Semantic Vector Cache)]
        Search -->|3. Graph Boost| Graph[(Semantic Knowledge Graph)]
        BM25 --> Hits[Merged & Scored Hits]
        Vector --> Hits
        Graph --> Hits
    end
    Hits --> Synthesis[Ollama/Cloud LLM Synthesis]
    Synthesis --> Output([Coherent Response])
Loading

2. Keyterm Extraction & Graph-Guided Summarization Architecture

This diagram shows how keyterms are extracted via lume_index and later used to guide query planning during document summarization:

graph TD
    subgraph Indexing ["Tool: lume_index | CLI: lume index"]
        Doc[Raw Documents] --> Parse[Text Chunking]
        Parse -->|If -o flag enabled| EntExt[LLM Keyterm & Entity Extraction]
        EntExt -->|Build Entity Edges| SKG[(entity_graph.json)]
    end

    subgraph Summarization ["CLI: lume summarize"]
        SKG -->|Extract Top 12 Keyterms by Freq| Prior[Keyterm Priority Prior]
        Prior -->|Inject as prompt guide| Planner[LLM Search Planner]
        Planner -->|Generate Guided Queries| Queries[Search Queries]
        Queries -->|Execute lume_search Tool| Retrieval[Retrieve Passage Snippets]
        Retrieval -->|Deduplicate & Aggregate| Context[Aggregated Context]
        Context -->|Synthesize Summary| FinalSummary[Executive Summary]
    end
Loading

3. Autonomous Agent Loop Architecture

This diagram represents the stateful tool-calling loop (lume agent) where the LLM plans and executes commands iteratively:

graph TD
    User([User Question]) --> Agent[Agent Chat Loop]
    Agent --> LLM{Ollama / Cloud LLM}
    
    LLM -->|Wants to call a tool| Tool[Tool Dispatcher]
    Tool -->|query| SearchTool["Tool: lume_search | CLI: lume search"]
    Tool -->|dir, db| IndexTool["Tool: lume_index | CLI: lume index"]
    Tool -->|seed, steer| GenTool["Tool: lume_generate | CLI: lume generate"]
    
    SearchTool --> Result[Capture CLI Output]
    IndexTool --> Result
    GenTool --> Result
    
    Result -->|Feed output back into history| Agent
    
    LLM -->|Decides it has the answer| Answer[Return Final Response]
    Answer --> Output([Coherent, Fact-Verified Answer])
Loading

The system is organized into the following core Rust and Python modules:

  • FST-Backed Phrase Tagger: Performs longest-dominant-right matching using Lucene-style separator bytes. Built on Tagger and Entry in src/lib.rs.
  • Hybrid Search Engine: Integrates BM25 lexical retrieval (Bm25Index), spelling correction (SpellIndex), and dense embeddings (src/hybrid.rs) with graph-steered query expansion (src/graph_search.rs) to boost matches based on Semantic Knowledge Graph connections.
  • Steered Markov Chain Synthesizer: Under the hood, Lume uses a trigram MarkovChain to generate text. However, it goes beyond random walks by steering/biasing trigram transitions using FST tags, local attention feedback, and GTR-T5 semantic vector inversion (src/inversion.rs).
  • Agent & Summarization Engine: Runs autonomous query planning, search exploration, and structured synthesis. Main entry points are run_agent_loop and summarize_document in src/agent.rs. Supports failure recovery via lume_not_found.
  • Model Context Protocol (MCP): Implements an MCP server over HTTP transport in serve to expose indexing and search tools directly to AI agents.
  • Python Document Extractor: A high-efficiency parser (lib/lume_extractor.py) that handles PDF page text extraction and generates Q&A benchmark datasets using concurrent Ollama threads.

🛠️ CLI Subcommands & Tool Execution Reference

Each tool exposed to the agent maps to a CLI subcommand. A user can run these directly to see raw search hits, index logs, or Markov generated texts.

1. lume_index Tool → lume index CLI Command

Indexes a directory containing text, markdown, or PDF files.

# Basic lexical indexing
./target/release/lume index docs/my_documents

# Semantic indexing with dense vectors (-s) and Ollama Entity Graph extraction (-o)
./target/release/lume index -s -o docs/my_documents
  • Raw Output: Prints file indexing progress, chunk counts, semantic cache updates, and entity extraction timings.
  • Flags:
    • -s, --semantic: Enables dense vector search (requires a NUTS token).
    • -o, --ollama-entities: Extract central entities and construct entity_graph.json.
    • -f, --force: Forces re-indexing of all documents.
  • Options:
    • --db <PATH>: Destination directory for the index metadata [default: .lume-index].
    • --ollama-model <MODEL>: Ollama model for entity extraction [default: gemma4:2b].

2. lume_search Tool → lume search CLI Command

Queries the persisted index using lexical (BM25) or hybrid search:

# Basic BM25 search
./target/release/lume search "Edmond Dantes"

# Hybrid search (weighting: 0.5 BM25, 0.5 vector semantic) with spelling correction (-c)
./target/release/lume search -c -a 0.5 "Edmond Dantes"
  • Raw Output: Prints raw retrieved document passages accompanied by match scores (BM25 + Semantic + SKG Boost).
  • Options:
    • -a, --alpha <VAL>: Hybrid weight. 0.0 is lexical-only; 1.0 is semantic-only [default: 0.5].
    • -g, --graph <VAL>: Entity graph boost weight [default: 0.4]. Enables graph-steered expansion: Lume resolves entities in the query, walks one hop to their strongest neighbors in entity_graph.json, and boosts matching passage scores by the related-entity mass.
    • -l, --limit <LIMIT>: Maximum search hits [default: 10].

3. lume_generate Tool → lume generate CLI Command

Synthesizes style-faithful text based on the indexed corpus using a trigram Markov Chain:

# Generate styled text starting with Dantes and guided by concept keywords
./target/release/lume generate "Dantes" --steer "revenge,castle"
  • Raw Output: Prints a block of synthesized text in the style of the indexed corpus.
  • Modes:
    • Tag-Steered Mode: Biases transitions towards the --steer tags using co-occurrence weights from the index's posting lists.
    • Vector-Steered Inversion Mode: Automatically embeds the target seed, inverts it into its closest semantic tags, and runs multiple candidate generation rounds to find the closest cosine-similarity match to the target prompt.

4. Graph-Guided Summarization (lume summarize Command)

Summarize an entire document using an agentic planning-and-retrieval loop guided by the highest-ranking nodes in the Semantic Knowledge Graph:

./target/release/lume summarize docs/my_documents/book.pdf
  • How it works:
    1. Reads entity_graph.json to identify the top 12 central concepts.
    2. Passes these concepts as priors to the Ollama model.
    3. Plans a series of distinct search queries targeting the key concepts.
    4. Executes queries, aggregates unique passages, and synthesizes a high-level executive summary.

5. Autonomous Agent Chat Loop (lume agent Command)

Spawn an autonomous agent to research and resolve a complex question by executing indexing and search tools iteratively:

./target/release/lume agent "Explain the relationship between Villefort and Mercedes"
  • Structured Failure Recovery: If the agent's searches do not yield the required information, it calls a dedicated lume_not_found tool. The system then provides structured guidance prompting the agent to refine its query keywords or search broad/narrow variations, preventing premature halts or false answers.

6. Starting the MCP Server (lume serve Command)

Start the Model Context Protocol HTTP server to connect Lume to external AI agents:

./target/release/lume serve --port 8080

7. Crawling Web Pages (lume crawl Command)

Crawls a target website to extract its text/markdown representation and saves the file to the local personal search engine directory (examples/crawled/):

# Crawl a webpage
./target/release/lume crawl https://example.com

# Crawl a Hacker News story
./target/release/lume crawl https://news.ycombinator.com/item?id=8863
  • How it works:
    • Local Crawling (Tokenless): If GRUB_BASE_URL is set to a local endpoint (such as http://localhost:6792 or when running locally), Lume connects to the local Grub instance and crawls without requiring any authentication or NUTS_SERVICES_TOKEN.
    • Remote Crawling (Authenticated): If GRUB_BASE_URL points to a remote endpoint (e.g. grub.nuts.services), Lume uses the NUTS_SERVICES_TOKEN environment variable to authenticate. If the token is missing, it falls back to direct HTTP GET (no JavaScript execution).
    • Hacker News Special Handling: If a Hacker News story URL is detected, Lume queries the public HN Firebase API to retrieve both the story post and its top-level discussion comments, assembling them into a clean Markdown file.

🐍 Python Extractor & Q&A Generator

Located at lib/lume_extractor.py, this tool can extract text and generate Q&A evaluation datasets from document chunks:

# Extract text from a PDF
python lib/lume_extractor.py pdf my_doc.pdf

# Generate a Q&A evaluation benchmark using Ollama
python lib/lume_extractor.py qna my_doc.txt output_qna.json --model gemma4:31b-cloud

💻 Codebase Indexing & Search Demo

Lume can index and search programming code repositories (like Lume's own Rust source files).

1. Indexing the Codebase

Index the src/ directory containing Lume's Rust modules into a separate index database folder:

./target/release/lume index --db .lume-code-index src

2. Searching the Codebase for a Symbol

Query the code index for the run_agent_loop function to find raw code definitions:

./target/release/lume search --db .lume-code-index "run_agent_loop"

Example Raw Output

[1] Score: 8.4109 | Lines 700-725 (File: src/agent.rs, Line: 703)
pub fn run_agent_loop(
    question: &str,
    ollama_url: &str,
    ollama_model: &str,
    db_dir: &str,
    verbose: bool,
) -> Result<(), String> {
    let url = format!("{}/api/chat", ollama_url.trim_end_matches('/'));

📖 The Backstory: How Lume Connects

Lume is the story of ideas moving from one person to another—a search meme carried through years of crawling systems, open-source heritage, industrial search consulting, and modern AI capability.

🐧 The Seed: It Began with Crawling (Grub)

It all started with web crawling. Back in the early days of distributed search, Kord Campbell created Grub—a massively distributed web crawler. After installing Lucene and thinking about how to search all that data, Kord sent an email to Eric Schmidt (then-CEO of Google), saying: "Hey, I've got this super fast distributed crawler." Schmidt replied with a classic search insight: "That's not the problem. We've got crawling figured out. Indexing is the challenge."

Decades later, that conversation has come full circle. In the age of AI, crawling is everything again. To feed frontier LLMs, you have to crawl to get the content, and you need a crawler that you can control.

But once you crawl it, where do you put it?

🧠 The Memory Challenge

You can't crawl the web fresh every single time you need an answer. Web pages are a type of document memory. Unlike bot or conversational memory (like an LLM remembering that a user's parrot is blue), document memory is about capturing the precise text you just saw. Some of these pages never update, while others update every minute. You need a dedicated, extremely fast local document store to hold and index this memory.

That's when the pieces fell into place. Kord was watching LinkedIn and saw Steve Harris post about porting his zero-dependency JavaScript FST tagger to Rust (released as rust-fstguardrails). Steve had run Portaltown, a search consultancy, and had worked for Lucidworks. His background as a U.S. Marine Corps air traffic controller deeply influenced how he designed systems: a focus on safety, extreme precision, and bare-metal performance.

Kord saw Steve's post and realized: "That FST tagger is the first part of our document index."

💡 Credit for the "Aha" Moments

To turn that FST tagger into a complete, lightweight search engine, Kord drew on years of shared search history. During his time consulting at Lucidworks, Kord had met OG search veterans Trey Grainger and Erik Hatcher.

Trey's work on Solr's Semantic Knowledge Graph (SKG) had always stuck with Kord. The concept seemed complex, but Erik Hatcher had delivered the ultimate "aha" moment by putting it simply:

Facets are just counts of the occurrences of something in a document. The Knowledge Graph is simply looking at those counts across all documents to perform document intersections. It is just counting the counts of things.

That was the magic of Erik Hatcher—he has always had the unique gift of taking complex technology and showing everyone how it actually works under the hood. (We throw affectionate shade at Trey for making it look complicated, and at Erik for making it look too simple!)

Understanding that primitive meant realizing a high-speed search engine didn't need millions of lines of code. It just needed to do simple things incredibly fast: FSTs for words, roaring bitmaps for set intersections, spell correction for misspellings, and additive hybrid boosting for vector context.

This hybrid design philosophy aligns with the pioneering search relevance and education work championed by Doug Turnbull, demonstrating that combining precise keyword matching, semantic embeddings, and structural graphs yields a far more reliable context for agentic search than simple vector retrieval.

🚀 The AI pair-programming

Working in a continuous human-AI feedback loop, Lume's core and extended capabilities (like its stateful agent loops, MCP servers, and HTML/markdown crawling module) were constructed using state-of-the-art AI coding assistants (like Google's pair-programmer Antigravity). This collaborative process directly addresses the AI Slop Effort Problem: AI-generated code is not bad by default if it is carefully annealed, iterated, and fact-checked; what is sloppy is the quick, dismissive use of the term "slop" by software engineers who have yet to throw themselves into the deep end of human-AI pair programming.


💡 Acknowledgements & Inspiration

Lume was inspired by the foundational FST-based tagging work in jsclosures/rust-fstguardrails.