Skip to main content
Product

A search network, not a search cluster.

Gnarl is one binary that turns a place your data already lives into a node. Nodes index locally, advertise what they can answer, and cooperate for exactly as long as a query takes.

Capabilities

What a node gives you.

Coordinator-free fan-out

Any node can plan a query. The one that receives it coordinates that query and nothing else — there is no master to elect, lose, or fail over.

Learn more

Manifest routing

Nodes advertise a few kilobytes describing what they can answer. Planning eliminates everyone who provably cannot help, then asks the rest.

Learn more

Data never moves

Corpora are opened read-only and indexed in place. The query travels to the data; the documents stay on the host that owns them.

Learn more

Signed, verifiable results

Every hit carries the signature of the node that produced it, not the node that merged it. Tampering in transit is detectable, and detected by default.

Learn more

Policy at the edge

Each node decides who may ask, which indexes are visible, which fields come back, and how fast. Evaluated locally, every time, before the index is touched.

Learn more

Text, geo, and vector

Full-text, keyword, range, geospatial containment, and kNN vector search — composed with boolean clauses in one query.

Learn more

Peers of every size

The same node runs on a server rack, a laptop, or a phone in the field. Cloud to edge, one protocol, no privileged tier.

Learn more
Runs on
Cloud & serverLinux · Windows Server · Kubernetes
DesktopmacOS · Windows · Linux
LaptopmacOS · Windows · Linux
MobileiOS · Android
Architecture

Four moving parts, none of them central.

A query enters at whichever node an application happens to reach. That node plans, fans out, merges, and verifies — then goes back to being an ordinary node.

node Alocal datalocal indexlocal policy
node Blocal datalocal indexlocal policy
node Clocal datalocal indexlocal policy
node Dlocal datalocal indexlocal policy
manifest gossip · no shared state
query enters at any nodePOST /v1/search

Node

One process, one identity, one or more local indexes. The only component that touches data.

Manifest

The signed summary a node advertises: fields, ranges, footprints, vocabulary. Never documents.

Planner

Eliminates nodes that cannot contribute, ranks the survivors, fans out within a budget.

Verifier

Checks every result signature against known identities before a hit reaches the caller.

Query lifecycle

What happens in 128 milliseconds.

Planning is local and takes microseconds. The wall clock is dominated by the slowest node you decided to wait for — which is why the deadline is yours to set.

  • Parse and resolve the query against known fields
  • Eliminate every node that provably cannot contribute
  • Sign and fan out to survivors, with a deadline attached
  • Each node executes locally and applies its own policy
  • Merge, normalize scores, and stream results as they land
  • Verify signatures; report coverage honestly
gnarl search --explain
▸ parse      2 clauses · 1 filter        0.3ms
▸ plan       300 peers → 41 eligible      0.9ms
▸ fan-out    41 asked · deadline 750ms
             ├─ n1qh7f…c2a8    18ms  ✓ 24 hits
             ├─ n1m4kd…91b3    31ms  ✓ 17 hits
             ├─ n1x9pl…4d7f    44ms  ✓  9 hits
             ├─ … 36 more      ≤112ms ✓
             └─ n1zz02…8e1c   timeout ✗
▸ merge      124 hits ranked            3.1ms
▸ verify     39 signatures ✓ · 0 failed 1.4ms

  coverage   39/41 answered · complete: false
  took       128ms
Use cases

Built for data that will not move.

Federated geospatial archives

Imagery too large to centralize stays with the operator that collected it, while analysts query the whole constellation as one surface.

Sovereign and regulated data

Residency stops being an architecture problem when documents never cross a boundary in order to be searched.

Edge and disconnected operations

Nodes keep answering locally when the uplink drops and reconcile manifests when it returns.

Multi-cloud without egress

Three clouds, three nodes, one query. Stop paying to funnel everything into a fourth place.

Roadmap

Where Gnarl is, and where it is going.

Gnarl is early. This is the honest version of the list — not the one that assumes everything ships.

Available now

  • Single-binary node with local indexing
  • Manifest gossip and elimination-based planning
  • HTTP query API with streaming NDJSON responses
  • ed25519 identity, signed manifests and results
  • Private networks with pre-shared keys

In progress

  • Vector fields and kNN across the fan-out
  • Mobile peers on iOS and Android
  • Relay nodes for networks that cannot reach each other directly
  • Incremental index refresh under `index watch`
  • Per-rule redaction in policy

Planned

  • Open-source client SDKs for Go, Python, TypeScript, Swift, and Kotlin
  • Node reputation as a planning input on open networks
  • Query-side result caching with manifest-version invalidation
  • Managed entry nodes via Lucenia

Start with one node.

Install the binary, point it at a corpus, and search it locally before you announce anything to anyone.