Build agents, pipelines, and batch workflows with local LLMs. Three commands. Filesystem is the queue. Shell is the orchestrator.
wrk nrvnad flw
│ │ │
"prompt" ──▶ input/ready/ ──▶ processing/ ──▶ output/ ──▶ result
│ │ │
(submit) (workers churn) (collect)
No frameworks. No Python dependencies. Just three binaries that compose like Unix pipes — small enough to understand in minutes, powerful enough to build agent systems with shell scripts.
Three primitives
nrvnad Load a model, watch a workspace, process jobs
wrk Submit a prompt, get back a job ID
flw Retrieve a result by job ID
That’s the entire API. Everything else is composition.
nrvnad
The daemon loads a GGUF model and watches a workspace directory. It processes jobs asynchronously in the background.
# Interactive mode - pick a model and workspace
nrvnad
# Or start directly
nrvnad model.gguf workspace
wrk
Submit work to a workspace. Returns immediately with a job ID.
JOB = $( wrk workspace "What is 2+2?" )
echo $JOB # abc123
flw
Collect results from completed jobs.
flw workspace $JOB
# Output: 4
How it works
Jobs are directories. State is location. Transitions are atomic renames.
workspace/
├── input/ready/ ← queued jobs
├── processing/ ← jobs being worked
├── output/ ← completed results
└── failed/ ← errors
No database. No message broker. No runtime dependencies. The filesystem is the coordination layer — you can inspect it with ls, debug it with cat, monitor it with watch.
What you can build
The primitives are small. What you build with them isn’t.
Agent loops
Feed results back as prompts:
for i in { 1..5} ; do
result = $( wrk workspace "Continue: $memory " | xargs flw workspace -w )
memory = " $memory \n $result "
done
Fan-out / fan-in
Parallelize work, then synthesize:
a = $( wrk workspace "Research: databases" )
b = $( wrk workspace "Research: caching" )
c = $( wrk workspace "Research: queuing" )
wrk workspace "Synthesize: $( flw workspace $a ) $( flw workspace $b ) $( flw workspace $c )"
Multi-model routing
Different models for different tasks:
nrvnad qwen-vl.gguf ws-vision # mmproj auto-detected
nrvnad codellama.gguf ws-code
nrvnad phi-3.gguf ws-fast
wrk ws-vision "Describe this" --image photo.jpg
wrk ws-code "Refactor: $( cat main.py)"
wrk ws-fast "Classify: bug or feature?"
Batch processing
Queue hundreds of jobs, workers churn through them:
for img in photos/*.jpg ; do
wrk workspace "Caption this" --image " $img "
done
Get started
Installation Build and install nrvna-ai in minutes
Quickstart Get running in 5 minutes
Platform Backend macOS (Apple Silicon) Metal GPU acceleration macOS (Intel) CPU Linux CPU, CUDA if available
Requirements
macOS or Linux
CMake 3.16+ and a C++17 compiler
A GGUF model from HuggingFace