Write it in VXL.
Or wire it on the canvas.
VXL is a terse, typed language for workflows — every node, property and edge as plain text. Prefer to see it? The same workflow opens on the canvas and runs live, rows moving through each node.
climate-music-continuous.vxl// Climate Music — Continuous Sonification pipe "climate-music-continuous" v1 { // LAYER 0 · sequence generator — 8 weekly date windows node "date-sequence": gen.sequence { .mode = "DateRange" .autoStart .startDate = "2025-01-01" .endDate = "2025-03-01" .dateStep = "7.00:00:00" } // LAYER 1 · build the API endpoint from each window node "derive-endpoint": etl.compute { .expr = CONCAT("/v1/archive?lat=40.71…&start_date=", col"start_date", "&end_date=", col"end_date") as "endpoint_url": String } // LAYER 2 · advance one window per completed fetch node "endpoint-modulator": dyn.property { .triggerMode = "OnFact" .watchSourceNodeIds = ["audio-output"] .watchFactTypes = [2024] } }
climate-music-continuous.viow// the same workflow, serialised — standards-friendly JSON { "$schemaVersion": "1.0", "Id": "climate-music-continuous-001", "SyncFlowSettings": { "StreamingMode": "True", "ErrorHandling": "Continue" }, "Elements": [ { "TypeKey": "Vectorio.Generators.Sequence", "Id": "date-sequence", "Configuration": { "Mode": "DateRange", "AutoStart": "True", "StartDate": "2025-01-01", "EndDate": "2025-03-01", "DateStep": "7.00:00:00" } }, { "TypeKey": "Vectorio.ETL.Compute", "Id": "derive-endpoint", "Configuration": { "StreamingMode": "True", "Expressions": { "endpoint_url": "CONCAT('/v1/archive?lat=40.71…')" } } } ] }
Same workflow, same signed .viow — author it as text or on the canvas, run it and watch the rows move.
One plane,
three concerns.
Movement, compute, and distribution are designed as one substrate. They share batches, columns, kernels, and signals. There is no glue, no bridge, no shim — by intent.
Same diagram, scale-free: from a single laptop pipeline to a 10,000-node cluster, the plane composition does not change — and the same plane carries 200+ nodes. See the catalog ↓
200+ nodes.
One open format.
Over 100 connector families ship with the engine — databases and warehouses, every major cloud, streaming, files, SaaS, AI/ML (local too), DSP & media, geospatial, healthcare, security & compliance, observability. Every node is a signed extension; every workflow is open .viow text. No node leaves the box.
A representative slice of 100+ connector families / 200+ nodes. Don't see yours? The connector API is ~50 lines — a new node is a day, not a sprint.
Diff it.
Sign it. Ship it.
A Vectorio workflow is plain text — authored in VXL, serialised to a standards-friendly .viow JSON. It lives in your repo, your code review, your audit trail. No vendor blob, no proprietary editor required.
- Git-native. Branches and pull requests, not "exports".
- Human-readable. Reviewers see what changed without opening a tool.
- Open formats. VXL for authoring, JSON for everything else — no lock-in.
- Signable. The same signature primitive that protects extensions protects pipelines.
- Composable. Workflows reference workflows. Reuse without abstraction taxes.
Numbers an auditor will trust.
Benchmarks below are reproducible from the open harness. We publish hardware, kernel mode, branch, and commit. We do not pre-aggregate seed data to flatter a chart.
| Workload | Kernel | Hardware | Throughput | vs. last release |
|---|---|---|---|---|
| Columnar scan | ForBitpack decode · 1 thread | M-class, 16 cores | 74.79 GB/s | +12.4 %↑ |
| GroupBy (single agg) | radix · adaptive bank | M-class, 16 cores | 15.0 B rows/s | +9.6 %↑ |
| GroupBy (multi-agg) | fused SUM/COUNT/MIN/MAX | M-class, 16 cores | 7.7 B rows/s | +18.1 %↑ |
| GroupBy (fused, throughput) | byte-key dense · SUM/MIN/MAX/COUNT | M-class, 16 cores | 112 GB/s | new★ |
| Distributed query | VSPP · gRPC + TCP | 10× workers | 22.0 GB/s | +38 %↑ |
| Distributed query (D11b) | VSPP raw bypass | 10× workers | 815 M rows/s | new★ |
| Mounted store vs CSV | FastTable mount | M-class, 16 cores | 298 × | +212 %↑ |
| AES-256 GCM transit | signed VSPP | M-class, 16 cores | 1.8 GB/s | stable |
All measured on single hardware — scale to a cluster without re-architecting, no managed service, no per-query bill. Reproducible from our public benchmark harness.
A field guide to the engine.
Streaming runtime
Backpressure-aware, alive-budget controlled, NUMA-aware page allocator. Per-source byte budgets, end-to-end memory control.
SQL compute
Columnar kernels, fused multi-aggregate, bitmap filter, radix join. SQL DML, distributed pruning over gRPC.
Distributed plane
Cluster.Node + ControlPlane + VSPP data channel. mTLS + AES-256, zone-map pruning, JWT/ABAC, tenant isolation.
Plugin architecture
System extension hooks, signed extensions, contract validation, command contribution. Probes, actuators, contracts.
Forensic layer
Every query leaves an auditable record — evidence collector, hash chains, signed manifests, replayable lanes — so you can answer "why was this number calculated?" to any auditor.
NodeDataStore
Unified persistence layer. Store, dedup, spill, update policy, load strategy. Distributed fields reserved in manifest.
Studio & Designer
VSCode-style docking, panel catalog, theme integration, layout persistence. Visual composer over the same engine.
App Builder
Compose .vapp, ship to iOS / macOS / desktop. Fact-driven binding, event pipeline, design system, secure deployment modes.
Any sector. One engine.
Sovereign by design.
Engineered in Berlin. Runs on the hardware you own, in the jurisdiction you choose. Every extension that touches the pipeline carries cryptographic provenance — no managed lock-in, no vendor cloud required.
-
On-prem, on-device, or sovereign cloud. The same engine, the same kernels. No managed lock-in.
-
Signed extensions, verified at load. Every plugin carries a publisher signature. Policy decides what runs.
-
Forensic-grade audit out of the box. Evidence packs, hash chains, signed manifests — built into the data plane, not bolted on.
-
Plain workflows, plain JSON.
.viowis a text format. Diffable, reviewable, signable. No vendor blob.
Protor is one half of Vectorio.
Protor is Vectorio's data engine — the deterministic plane your pipelines move and compute on. Its independent sibling, Indago, is our discovery engine: the same company, the same sovereignty principles, a different problem entirely.
Two products, one engineering bar. If you came for the data plane you're in the right place — Protor is what this page is about.