--- license: apache-2.0 tags: - retrieval-augmented-generation - knowledge-graph - vector-search - sparql - multimodal - cosmopolitan - actually-portable-executable - offline language: - en library_name: chimera-ape pipeline_tag: text-generation --- # Chimera.APE — v0.1.0-alpha (single-file build) > Three queries, one binary, zero regrets. Runs on anything, answers to no one. **One Actually Portable Executable. One download. Everything inside.** `chimera-full.ape` (~7.5 GB) bundles, in a single self-contained file that runs unmodified on Linux / macOS / Windows / BSD: - the **orchestrator** (C++/Cosmopolitan), - a **llamafile + Gemma 4 12B QAT q4_0** (embeddings *and* chat from one server), - the **multimodal projector** (image + audio understanding), - **QLever** (SPARQL knowledge graph + BM25 text index), and - **TurboVec** (quantized approximate-nearest-neighbor vector search). Point it at a directory of files — text, code, images, audio — and it digests everything into a hybrid graph-vector database. Ask a question and it answers with synthesized, cited, **checksum-verified** provenance. No network, no sidecar downloads, no runtime dependencies. GitHub (source, smaller organ-only build, full docs): ## Quick start ```sh # Download this one file (no weights to fetch separately — they're inside): hf download SEBK4C/Chimera.APE chimera-full.ape --local-dir . chmod +x chimera-full.ape # Ingest a directory. First run unpacks the embedded organs + weights into # /.chimera/runtime/ (one-time, a few GB): ./chimera-full.ape ingest ~/notes # Ask: ./chimera-full.ape --search "what did we decide about the billing rewrite?" \ --db ~/notes/.chimera ``` ``` Maria Chen leads Project Phoenix [1]. It is a rewrite of the billing system [1]. Sources: [1] phoenix.md#1 ✓ verified ``` `✓ verified` means the cited file is byte-identical to what was ingested; `⚠ drifted` / `⚠ missing` tell you when it isn't. Citations are promises the checksum keeps. ## GPU (NVIDIA / Metal) — interactive ingest & search CPU works everywhere but is slow (~7 tok/s — minutes per document). On a GPU, ingest and search become interactive. The orchestrator passes offload flags straight through to the embedded llamafile: ```sh ./chimera-full.ape ingest ~/notes --gpu auto # offload all layers (default-on GPU box) ./chimera-full.ape ingest ~/notes --gpu nvidia # pin the CUDA backend ./chimera-full.ape ingest ~/notes --gpu 24 # partial offload, N layers (small VRAM) ./chimera-full.ape ingest ~/notes --gpu off # force CPU ./chimera-full.ape --search "..." --db ... --gpu auto ``` | `--gpu` | llamafile flags | meaning | |---|---|---| | `auto` (default) | `-ngl 999` | offload all layers; falls back to CPU if no GPU | | `off` / `disable` | `--gpu disable` | force CPU | | integer `N` | `-ngl N` | offload N layers (VRAM-limited cards) | | `nvidia`/`amd`/`apple` | `--gpu -ngl 999` | pin the backend vendor | **CUDA prereqs:** a working NVIDIA driver is enough (llamafile ships a prebuilt tinyBLAS path); with the CUDA toolkit (`nvcc` on `PATH`) it JITs an optimized `ggml-cuda` module once and caches it under `~/.llamafile/`. The first GPU run logs the device(s) and throughput to `/.chimera/logs/llamafile.log`. **Verified** on this build: 2× NVIDIA RTX 4090 (driver 580 / CUDA 12.8) — `--gpu auto` offloads Gemma 4 12B across both cards and runs ingest + search end-to-end with `✓ verified` citations at ~90 tok/s generation (vs ~7 tok/s on CPU). **Multimodal embeddings run on GPU too**: image and audio embed natively as the model's end hidden state over the projector+interleave forward pass (`LAST` pooling), in the same 3840-d space as text — so `--search-file` (image→image, audio→audio) works on GPU. See [docs/GEMMA4-EMBEDDINGS.md](https://github.com/SEBK4C/Chimera.APE/blob/main/docs/GEMMA4-EMBEDDINGS.md) and [docs/GPU.md](https://github.com/SEBK4C/Chimera.APE/blob/main/docs/GPU.md). ## Images and audio PNG/JPEG/WAV/MP3 are first-class documents. At ingest the model transcribes legible text or describes the scene/sound, indexes that derived text, and stores the raw media embedding for query-by-example: ```sh ./chimera-full.ape --search "the budget figure on the banner" --db ~/notes/.chimera ./chimera-full.ape --search-file query.png --db ~/notes/.chimera ``` ## Other commands ```sh ./chimera-full.ape status --db DIR/.chimera # counts, dims, index staleness ./chimera-full.ape verify --db ... [--paranoid] # re-checksum the corpus ./chimera-full.ape vacuum --db ... # purge superseded data, rebuild text index ./chimera-full.ape sparql "SELECT ..." --db ... # raw SPARQL into the live graph ``` ## Hardware Runs CPU-only (slow — minutes per document at ingest, ~7 tok/s on a fast CPU) or on a GPU (`--gpu auto`, interactive — see above). Needs ≥16 GB RAM (the model maps ~8 GB) and ~8 GB free disk for the one-time runtime extraction. ## Two flavors | File | Size | Use | |---|---|---| | `chimera-full.ape` (here) | ~7.5 GB | true single file; weights embedded | | `chimera.ape` (on [GitHub releases](https://github.com/SEBK4C/Chimera.APE/releases)) | ~315 MB | organs embedded, weights sidecar via `--model` | ## Known alpha limitations - Sequential ingest (CPU-bound on CPU hosts); §5 bounded-queue concurrency is designed, not yet wired. - Incremental ingests don't extend the BM25 text index (vector + graph search unaffected); `vacuum` rebuilds it. - Linux x86_64 is the tested platform; `turbovec-server` carries Linux ABI assumptions inside its APE shell, so other OSes are expected-but-unverified. - Dense rendered-text OCR has a known upstream vision-pipeline bug; photos/scenes describe well. - Embeddings use **`LAST` pooling** — the end hidden state of Gemma 4 12B's projector+interleave forward pass — for text, image, and audio alike (one shared 3840-d space; this is what makes native multimodal embedding work on GPU). The embedded llamafile carries the patch that makes this GPU-safe. If you indexed with an earlier (mean-pooled) build, re-ingest; dimensionality (3840) is unchanged. Built with Cosmopolitan Libc. Gemma 4 weights © Google, Apache 2.0.