Skip to content
View tobocop2's full-sized avatar

Organizations

@xberg-io

Block or report tobocop2

Block user

Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

You must be logged in to block users.

Maximum 250 characters. Please don’t include any personal information such as legal names or email addresses. Markdown is supported. This note will only be visible to you.
Report abuse

Contact GitHub support about this user’s behavior. Learn more about reporting abuse.

Report abuse
tobocop2/README.md

tobias

I'm building lilbee, the whole local AI stack in a single executable: it runs and manages the models, and it's a search engine you can talk to. It indexes your files, notes, and code, crawls web pages into your library, and every answer cites the exact file and line. It started as me trying to build an Encarta 99 out of my own stuff that I could talk to privately and terminal first, and that's still the mission.

Why lilbee

Onboarding with local AI is painful. A typical stack is a model server, a vector database, a document ingestion pipeline, a web UI, and a Docker Compose file holding it all together. Every piece needs configuring before you can ask a single question.

lilbee is that whole stack in one self-contained executable: model manager, search engine over your own data, MCP for agents, HTTP for GUIs, and a TUI for the terminal. No containers, no networking, nothing else to install. It scales from one laptop to as many GPUs as you have.

model manager search engine code search multi GPU MCP server obsidian plugin

I'm trying to democratize local AI, starting with talking to your own stuff, while building the tool I want for myself.

What I'm building

Terminal-first, because I built it for myself and I knew that if the architecture stayed flexible, friendlier surfaces would come easily. TUI, CLI, REST API, MCP server, and Python library, with multi-GPU placement and integrations for opencode and hermes so programmers can put local AI behind their favorite agents. lilbee is its own model manager: you don't need Ollama or LM Studio at all, and the model families it runs are tested end to end on real GPUs, the architectures behind most of the 190,000+ GGUF models on Hugging Face. Already running Ollama or LM Studio? lilbee connects to them and keeps your models.

lilbee indexing its own source and answering with citations, with a model split across multiple GPUs

One of those friendlier surfaces, the gateway for Q&A with local models. My favorite story here is a completely non-technical user who went from the plugin store to talking to his solar panel docs in minutes, without ever opening a terminal.

the same question answered inside Obsidian

Upstream work

lilbee is built on a lot of open source projects, and the one I work on most is xberg.

Extraction is the core of lilbee. You can't search what you can't read, and an answer is only as good as the text that came out of the document, so a scanned PDF that turns to mush or a table that loses its columns is a bad answer waiting to happen. Good extraction is what makes good search possible. That's why I'm on the xberg open source team, and where most of my open source work goes.

In early iterations of lilbee I built my own extraction layer. When I found xberg I gutted all of that work, and a lot of it became my earliest contributions there.

Stuff I've contributed that I'm pretty proud of:

Project Stars What I did
xberg / alef
team
★ ★ Semantic chunking with caller-supplied tokenizers, new formats, scanned-PDF detection, PDF page rendering for vision models, an in-process embedding plugin, reversible redaction, in-browser and ONNX-free entity detection, and native Intel Mac support. In alef, its binding generator, correctness fixes across the 16 languages it targets. All my merged PRs.
pdf_oxide
merged
★ Reported and fixed a batch of text-extraction bugs in scientific PDFs: garbled math, misclassified scanned pages, split words, and crashes.
lancedb / lance
merged
★ ★ Made Lance run on older processors, with runtime SIMD dispatch and compat wheels.
GPUStack / gguf-parser-go
merged
★ ★ Reworked the multimodal VRAM estimator GPUStack sizes models with: five fixes for projectors that were over- and under-estimated (the under-estimates silently OOM), flash-attention and audio support, and unknown model types now estimated from their own metadata instead of a hardcoded list.
huggingface_hub / xet-core
merged
★ ★ Fixed a download crash in headless programs. Smoother download progress is in review.
llama-cpp-python
merged
★ Some models wouldn't load because of how their chat template was written.
llama.cpp
in%20review
★ Exposed llama-server's per-GPU memory usage on /metrics and a new GET /memory, so a program can read what each instance allocated instead of scraping logs.
bun / WebKit
in%20review
★ ★ Bun's Intel-Mac "baseline" build is really the AVX2 binary, so pre-AVX2 Macs crash on launch, along with everything built on bun. Building a real baseline for bun and the WebKit it bundles. Until it lands, I ship working builds.
opencode
in%20review
★ Stopped opencode's mini mode from wiping and reprinting the whole session on every terminal resize.
candle
in%20review
★ Fixed DeBERTa-v2 models crashing at half precision.
safetensors
in%20review
★ Fixed large tensors failing to load on 32-bit targets like wasm.

Misc throughout the years

Project Stars What I did
mercurius ★ Fixed a crash in apps with nested loaders.
screenshot-glb ★ Added a timeout so slow renders can finish.
MetalAPI ★ My first project, from college: the Metal Archives scraped and served as a REST API.
go-utils ★ Added unique and fixed reverse in Goldziher's Go library, years before he founded xberg and we ended up working together.
simpler-cpp-json ★ Automatic JSON serialization for any C++ struct, years before nlohmann/json shipped the same idea.
openapi-generator ★ Unity support for the C# generator.

Elsewhere

lilbee: the whole local AI stack in one executable, with a cited answer shown in the terminal UI

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|t|o|b|i|a|s|@|l|i|l|b|e|e|.|s|h|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
lilbee.sh #lilbee on Libera.Chat GitHub

Pinned Loading

  1. lilbee lilbee Public

    The whole local AI stack in one executable: it runs and manages local AI models across every GPU, and it's a search engine you can talk to, with cited answers from your files, code, and the web. MC…

    Python 39 5

  2. obsidian-lilbee obsidian-lilbee Public

    Obsidian community plugin: your vault as a private, self-hosted NotebookLM alternative. A built-in manager downloads and runs local AI models in one click, or use your Ollama and LM Studio. Cited a…

    TypeScript 8

  3. lance lance Public

    Forked from lance-format/lance

    Open Lakehouse Format for Multimodal AI. Convert from Parquet in 2 lines of code for 100x faster random access, vector index, and data versioning. Compatible with Pandas, DuckDB, Polars, Pyarrow, a…

    Rust

  4. simpler-cpp-json simpler-cpp-json Public archive

    [Obsolete] see NLOHMANN_DEFINE_TYPE_INTRUSIVE in nlohmann::json

    C++

  5. xberg-io/xberg xberg-io/xberg Public

    A polyglot document intelligence framework with a Rust core. Extract text, metadata, images, and structured information from PDFs, Office documents, images, and 98+ formats. Available for Rust, Pyt…

    Rust 8.7k 528