Optimization for Trucking and Transport Operations
Zero-dependency logistics optimization. Built in C, runs everywhere.

Trucking optimization for everyone

From one-truck owner-operators to 10,000+ truck mega-fleets. Route planning, fuel cost minimization, Hours of Service compliance, and fleet scheduling. Same algorithms for everyone—runs free in your browser or scales to enterprise.

1000+ tests WASM-first Zero dependencies C11 AGPLv3 + Trucking Exception

I am a...

💼
For Executives
Business value, ROI, and strategic positioning

Why OTTO

Large fleet optimization vendors build for fleet-level KPIs—"how do I move 10,000 loads with 2,000 trucks?" OTTO serves both fleet-level assignment AND driver-centric decision support. Superior optimization means fewer empty miles, lower fuel costs, HoS compliance without violations, and better margins.

+25%
Fleet utilization target
−15%
Fuel cost reduction
100%
HoS compliance
<100ms
Optimization latency

No Vendor Lock-In

The Vendor Risk

  • Vendor gets acquired, roadmap shifts to new owner's priorities
  • Support team restructured, your contacts disappear
  • Pricing "aligns with portfolio strategy"
  • Product gets folded into a suite you don't need
  • Years of integration work held hostage

The OTTO Answer

  • Code is AGPLv3—fork it, own it forever (free for fleets)
  • Self-host at current capability, no permission needed
  • Hire anyone to maintain your fork
  • Roadmap diverges? Extend it yourself
  • Audit the algorithms, verify the logic
"Pay for convenience, not captivity. OTTO is yours whether you stay with us or not."

License Model

AGPLv3 + Trucking Exception

Core engines are AGPLv3. Trucking companies use free forever—owner-operators to mega-fleets. Fork it, audit it, own it.

  • Ralph – LP/MIP solver
  • Velo – Routing engine
  • Carta – Tile generator
  • Locus – Geocoding
  • Nexus – Document ingestion pipeline
  • FuelWise, Arbor, Surge, HoSE, Tempo, Sigma, Pulse, Fuse

Commercial License

SaaS vendors and non-trucking companies require a commercial license. Integration layer and managed platform also require subscription.

  • SaaS vendors offering OTTO as a service
  • Nexus Gateway – TMS/ELD/LoadBoard connectors
  • Managed hosting – Fully operated platform
  • Priority support – SLAs and dedicated help

Deployment Flexibility

🌐
Browser
Try before you buy, no install
🖥️
Server
Traditional API deployment
Edge
Cloudflare Workers, CDN
📱
Mobile
In-app via WASM
🚚
In-Cab
Offline tablet, no connectivity
☁️
Managed
We run it, you use it
OTTO (full stack) ~2 MB WASM + your data
Commercial alternatives GB+ runtime + your data, server-only

Future-Proof: EV & Autonomous Ready

Critical for Electric Fleets

Diesel trucks are forgiving. Misjudge fuel level by 5%? Coast to the next truck stop. Electric trucks aren't. Misjudge battery state by 5%? You're stranded on a highway with a 40-ton anchor.

Diesel: 5% estimation error Minor inconvenience—stop 20 miles earlier than planned
Electric: 5% estimation error Potential stranding, tow truck, missed delivery, angry customer

OTTO's confidence-weighted state estimation was designed with EVs in mind from day one. Ready for mixed diesel/EV/autonomous fleets.

AI-Ready

"Find the cheapest route for truck 47 to deliver in Prague by Thursday, he's got 6 hours left on his clock"
                    ┌─────────────────┐
                    │   LLM Agent     │
                    │ (intent → API)  │
                    └────────┬────────┘
                             │
        ┌────────────────────┼────────────────────┐
        ▼                    ▼                    ▼
   ┌─────────┐         ┌─────────┐         ┌─────────┐
   │  HoSE   │         │  Velo   │         │FuelWise │
   │(6h left)│         │ (route) │         │ (cost)  │
   └─────────┘         └─────────┘         └─────────┘

LLM is the UX layer. OTTO engines are the truth layer. The AI doesn't hallucinate routes—it translates natural language into API calls and explains results in human terms.

Dispatchers speak, OTTO optimizes, LLM explains. No training required.

Natural language queries
What-if scenarios
Plan explainability
Multi-language support

Ready to talk?

Whether you're evaluating for a 50-truck regional fleet or a 10,000-truck enterprise, we can help you understand how OTTO fits your operation.

Managed hosting TMS/ELD integration 24/7 support Custom tuning
Get in Touch
🚚
For Dispatchers & Planners
Daily planning tools that actually work

For Owner-Operators & Small Trucking Companies

Route Planning

Optimal routes with truck restrictions, not Google Maps guesswork

Fuel Optimization

Find the cheapest stops on your route—save $50-100 per trip

HoS Calculator

Know exactly when you need to stop—avoid $16k violation fines

Load Decisions

"I'm in Tulsa empty"—what's my best next move?

Same algorithms the mega-fleets use

No install, no signup required. Runs entirely in your browser. The same optimization technology that Girteka uses for 10,000 trucks—available to you for free.

Free

Built on Trusted Reality

Most fleet systems treat GPS as ground truth. But GPS drifts, signals conflict, telematics drop out, and driver apps disagree with ELDs. When your route optimizer doesn't know where your trucks actually are, every downstream decision inherits that uncertainty.

OTTO maintains a unified reality model. Multiple signals—GPS, telematics, driver app events, geofence triggers—are fused into consistent vehicle states. When signals conflict, OTTO doesn't guess. It maintains confidence levels and propagates uncertainty through the planning stack.

"Where is truck 47?" isn't a simple question. The GPS says one thing, the driver app says another, and the geofence fired twice. OTTO gives you a single answer you can trust—and tells you how confident it is.

Multi-Signal Fusion
GPS, telematics, driver app, infrastructure events—combined into one coherent state.
Identity Consistency
Track the same vehicle across signal dropouts, device swaps, and driver changes.
Confidence-Aware Events
Geofence alerts only fire when confidence exceeds threshold. Fewer false alarms.
Fewer false alerts Geofence events require confidence, not just position
Stable ETAs Predictions account for signal noise
Cleaner compliance HoS reports distinguish certain violations from edge cases
Dispatcher trust When the system says a truck is somewhere, it's actually there

Smarter Operational Events

When you know where trucks actually are—not just where GPS says they might be—every facility interaction gets more reliable.

Geofencing Without False Triggers

GPS drifts. Trucks "arrive" while still on the highway. Drivers "leave" while parked at the dock. Traditional geofencing fires on raw coordinates and generates noise.

OTTO's geofences require confidence thresholds. Result: alerts you can trust, not alert fatigue.

Detention Time That Holds Up

Detention billing disputes cost the industry billions. "We show you arrived at 2:15." "Our system shows 2:47." Without accurate timestamps, you're arguing over whose GPS was less wrong.

OTTO records confidence-weighted arrival times with full signal provenance.

Wait Time Prediction

"How long will I wait at this shipper?" Most systems can't answer this. They don't track dwell times accurately, so they can't predict them.

OTTO builds facility dwell profiles from accurate arrival/departure data. Dispatchers can route around facilities with 3-hour average waits.

Live ETA That Doesn't Jump

Nothing frustrates a receiver more than an ETA that changes by 45 minutes every refresh. Raw GPS + naive speed calculations produce unstable predictions.

OTTO's ETAs incorporate position confidence and historical corridor speeds. The estimate might be less optimistic, but it won't swing wildly.

Try it free in your browser

No signup, no install, no credit card. Plan your next route right now. Fuel optimization, HoS calculator, and truck-aware routing—all free.

Works offline No data leaves your device Same algorithms as enterprise
Launch Demo
🤝
For Partners
Integration opportunities across the logistics ecosystem
Data Partners

Fuel Cards & Payments

Your fuel price data plus our optimization algorithms equals customer stickiness. Every optimized route drives transactions through your network.

You provide: Real-time fuel prices, station network
You get: Differentiation, transaction volume, retention
OEM Partners

Truck Manufacturers

Bundle OTTO with your telematics platform. "Buy our trucks, get optimization included." Turn vehicle sales into recurring software revenue.

You provide: Distribution, telematics data, R&D
You get: Differentiation, sustainability metrics, loyalty
Broker Partners

Digital Freight Platforms

Make your carriers more efficient and they'll stay loyal. "Haul for us, get free planning tools." Better carrier economics means tighter rates are possible.

You provide: Carrier network, distribution, volume
You get: Carrier retention, capacity visibility, margin
Technology Partners

TMS & ELD Providers

Add planning to your platform without building it. OTTO integrates via clean APIs. Resell to your customer base or bundle with your offering.

You provide: Sales channel, customer relationships
You get: Planning capability, upsell opportunity
Market Intelligence

Brokers & Shippers

Aggregate, anonymized data across the network. Lane-level capacity trends, rate indices, and benchmarking. "How do my rates compare to market?" answered with data.

You provide: Transaction data (anonymized)
You get: Market benchmarks, capacity forecasts

Interested in partnering?

Whether you're a fuel card network, truck OEM, TMS provider, or freight platform, we'd love to explore how OTTO can add value to your customers.

Start a Conversation
Under the Hood
The algorithms that power every OTTO decision

Linear & Integer Optimization

Ralph: Revised Simplex → Branch & Bound

Every fleet decision is an optimization problem. Which fuel stops minimize cost? Which routes satisfy time windows? How do you assign 100 shipments to 30 trucks?

Ralph solves these with the Revised Simplex method—walking the vertices of a high-dimensional polytope to find the optimum. For integer decisions (which truck, which stop), Branch & Bound builds a search tree on top, pruning impossible branches and converging on the optimal integer solution.

FuelWise uses Ralph to solve minimum-cost refueling LPs. Sigma formulates fleet plan selection as SCP/SPP and solves via Ralph’s MIP engine. HoSE builds a time-indexed scheduling model verified through Ralph’s LP solver.

No external solver dependencies. The same engine runs server-side and in-browser via WebAssembly—under 100ms for 1,000 variables.

Revised Simplex
LU Factorization
Branch & Bound
Gomory Cuts

Metaheuristic Search

Arbor: ALNS Destroy/Repair → Beam Search

Some problems are too large for exact solvers. Scheduling 1,000 deliveries across 50 trucks with time windows, capacity limits, and driver constraints? The search space is astronomical.

Arbor’s Adaptive Large Neighborhood Search starts with a feasible solution and iteratively destroys parts of it (removing requests), then repairs (reinserting optimally). Operators that find improvements get higher selection weights—the algorithm learns which strategies work.

For structured search, Beam Search explores a tree of partial solutions, keeping only the most promising ‘beams’ at each level. Combined with lower-bound pruning, it finds near-optimal solutions in bounded time.

Surge uses Arbor’s ALNS to solve rich VRP/PDPTW problems with 25+ constraint types. Population-based search with infeasible-space exploration beats BKS average distance on Solomon benchmarks.

ALNS Framework
Adaptive Weights
Beam Search
Simulated Annealing

Graph Routing

Velo: Bidirectional A* → ALT Landmarks

Routing is graph search at scale. A country-scale OSM graph has millions of nodes and edges. Naive Dijkstra explores them all. Smarter algorithms explore far fewer.

Bidirectional A* searches from both ends simultaneously. The forward frontier expands from origin, the backward from destination, guided by a Haversine heuristic. When they meet, the shortest path is found having explored a fraction of the graph.

ALT (A* with Landmarks and Triangle inequality) precomputes distances to strategic landmark nodes. The triangle inequality d(s,t) ≥ |d(s,L) − d(t,L)| gives a much tighter lower bound than Haversine alone, pruning 5–10x more of the search space.

Velo builds a CSR graph from OSM PBF files, supports truck/car/bike/foot profiles, and serves routes under 100ms at country scale.

Bidirectional A*
ALT Landmarks
CSR Graph
Truck Profiles

Tile Rendering Pipeline

Carta: Clip → Simplify → Rasterize

Every map tile is a geometry pipeline. A single 512×512 tile at zoom 14 may intersect hundreds of roads, buildings, and land-use polygons. Each must be clipped to the tile boundary, simplified for the zoom level, and rasterized—in under 75ms.

Sutherland–Hodgman clips polygons against the tile rectangle edge by edge. Vertices outside are discarded, new intersection points are inserted. The result is a clean polygon that fits exactly within the tile.

Douglas–Peucker then simplifies the geometry. Points that deviate less than a pixel from the line between their neighbors are removed. At low zoom levels this eliminates 90%+ of vertices, keeping tiles fast without visible quality loss.

Carta outputs both PNG raster tiles and Mapbox Vector Tiles (MVT) from the same pipeline. R-tree spatial indexing ensures only relevant features are processed per tile.

Sutherland–Hodgman
Douglas–Peucker
MVT + PNG
R-tree Index

Geocoding Search

Locus: Trie Traversal → Trigram Fuzzy Match

Turn text into coordinates in microseconds. Type “Buda” and get “Budapest” before your finger leaves the key. Misspell it as “Budepest” and still get the right result.

Prefix trie traversal handles exact prefix matching. Each keystroke walks one level deeper in the tree, instantly narrowing candidates from millions to hundreds. Autocomplete results appear in under 20μs.

Trigram fuzzy search handles typos and misspellings. Every place name is decomposed into overlapping 3-character sequences. A query like “Budepest” shares enough trigrams with “Budapest” to rank it first, even with the transposition.

Reverse geocoding uses a spatial grid to find the nearest named place to any coordinate. The grid partitions the map into cells—only the local cell and its neighbors are searched.

Prefix Trie
Trigram Index
Spatial Grid
<20μs Queries
</>
For Developers & Contributors
Architecture, APIs, and how to get involved

Quick Start

# Clone and build
git clone https://github.com/ottofleet/otto.git
cd otto && make all

# Run all tests (1000+)
make test

# Start API servers
make run-fuelwise-api   # :8080
make run-velo-api       # :8082
make run-carta-api      # :8081
make run-locus-api      # :8083
make run-ralph-api      # :8084

# Build for WebAssembly
make wasm

# --- Or use Docker Compose ---

# Download map data (Hungary, 350 MB)
./scripts/data-download-osm.sh hungary

# Start all GIS services
PBF_FILE=/data/hungary-latest.osm.pbf docker-compose up carta velo locus

# For production: pre-build indexes first
docker build -f docker/Dockerfile.data-builder -t otto-data-builder .
docker run -v $(pwd)/data:/data otto-data-builder /data/hungary-latest.osm.pbf

See API Documentation for REST endpoint details. For Docker deployment, see docker/README.md.

Transport-Agnostic Architecture

Every OTTO API is a pure C function that takes input and produces output. HTTP, WebAssembly, Unix sockets, embedded calls — these are thin wrappers over the same core. The demo is the product.

// Core function: transport-agnostic, runs anywhere
int carta_render_tile(int z, int x, int y, uint8_t **out, size_t *len);

// HTTP wrapper (Mongoose): ~10 lines
// WASM wrapper (Emscripten): ~10 lines
// Embedded call: direct invocation
Zero-Infrastructure Demo
Open api.html and click "Try it" — the actual tile renderer, router, and geocoder run in your browser via WASM. No server required.
Proof by Demonstration
"Will it run on edge devices?" — It runs in your browser tab. Same C code compiles to HTTP server, WASM module, or embedded library.
ClayShards Pattern
Frontend: UI code is renderer-agnostic (WebGL, TUI). Backend: API code is transport-agnostic (HTTP, WASM). Same philosophy, full stack.

See Design Manifesto for the full design philosophy.

Render Backend Agnostic UI Logic

ClayShards is built on a hybrid declarative/imperative design — declarative layout composition (Clay) with imperative immediate-mode interaction (widgets). Layout answers "where and how big?" Components answer "what is it, how does it behave?" The result: the best of both worlds when reasoning about layout and state.

UI logic produces render commands — WebGL, TUI terminal, OpenGL ES — these are thin renderers over the same component code. If it works in TUI, it works everywhere.

// UI code: renderer-agnostic, produces Clay render commands
if (cs_button(CS_ID("submit"), "Submit", NULL)) {
    handle_submit();
}
cs_input(CS_ID("search"), text, &len, max, "Search...", NULL);

// WebGL renderer: ~200 lines (GPU-accelerated)
// TUI renderer: ~300 lines (terminal ANSI sequences)
// Same UI code, same layout, different pixels
Render Commands as Contract
UI produces render commands; renderers consume them. No GL state assumptions, no DOM — just rectangles, text, and images.
TUI as Strictest Target
Terminal rendering exposes timing bugs, layout assumptions, and focus issues that GPU renderers hide. TUI compatibility guarantees cross-platform correctness.
Same Philosophy, Full Stack
Frontend: UI code is renderer-agnostic. Backend: API code is transport-agnostic. Business logic stays in C, deployment targets are just renderer/wrapper choices.

See ClayShards Manifesto for the full design philosophy.

Defense-in-Depth Security Model

OTTO implements role-based privilege separation with multiple deployment modes. The same transport-agnostic code runs in three security configurations — choose based on your deployment requirements.

// Same handler interface works in ALL deployment modes:
int vl_api_handle(VLAPIContext *ctx, const VLAPIRequest *req, VLAPIResponse *resp);

// In-process:  Mongoose → sh_worker_pool → handler (systemd sandbox)
// WASM:        Browser → WASM module → handler (WASM sandbox)
// Process pool: Parser processes ↔ IPC ↔ handler (process isolation)
In-Process Mode Default
Worker threads via sh_worker_pool. Security from systemd hardening: restricted syscalls, read-only paths, capability dropping. Best performance.
WASM Mode Demos & Edge
Parsing + compute bundled in single WASM module. The sandbox IS the security — no filesystem, no network, no exec. Memory bounds-checked by construction.
Process Pool Mode High-Security
Long-lived parser processes with seccomp/pledge sandbox. IPC via Unix sockets. For regulatory requirements demanding process isolation.
Prime Directive
Raw bytes are toxic. Any component receiving attacker-controlled input (JSON, MPS/LP, protobuf) is isolated from filesystem, secrets, and application state. Compromise collapses into a crash or bounded computation — never lateral movement.
Non-negotiables: No system(), exec*(), popen(), dlopen(). No runtime plugin loading. No broad filesystem access. OSM PBF parsing is offline-only — derived indexes (.vlg, .lcx, .idx) are mmap'd read-only.

See Security Model for the full architecture and Security Roadmap for implementation status.

Core Engines

Ralph C
LP/MIP solver. Primal + dual simplex, branch-and-bound, network simplex, Benders decomposition, JVC assignment. Presolve, telemetry, 55/84 NETLIB solved.
762+ tests · 63K loc · 6 solver engines
View product page: solver engines, benchmarks, architecture →
Velo C
OSM routing engine. Dijkstra, A*, bidirectional search, ALT landmark preprocessing. 4 vehicle profiles, CSR graph format.
52 tests · 7K loc · 6 algorithms
View product page: algorithms, vehicle profiles, architecture →
Carta C
Map tile server. PNG raster, MVT vector, and ASCII tiles from OSM PBF. Pure C software renderer with labels, metatile caching, R-tree spatial index.
164 tests · 18K loc · ~75ms per 512×512 tile
View product page: rendering pipeline, output formats, architecture →
Locus C
OSM geocoding engine. Prefix trie autocomplete, trigram fuzzy search, spatial grid reverse geocoding. Zero-copy mmap binary index.
68 tests · 6.5K loc · <20µs queries
View product page: search architecture, index format, API →
FuelWise C
LP/MILP refueling optimization. Weight-dependent consumption, multi-station planning, Benders decomposition. Powered by Ralph.
157 tests · 3K loc · 5–15% fuel savings
View product page: optimization model, solver tiers, consumption curves →
Shared C
Infrastructure library. Geo, arena allocators, JSON/protobuf parsers, rate limiting, circuit breakers, worker pools, font rendering. Foundation for every OTTO module.
319 tests · 24K loc · 40+ modules
View product page: module catalog, API examples, architecture →
Nexus C
Document ingestion pipeline. XLSX, PDF, CSV extraction with schema-driven transforms, validation, and change detection. Fuzz-tested, WASM-compilable.
192 tests · 9.4K loc · 6-stage pipeline
View product page: pipeline architecture, schema system, quick start →
ClayShards C + JS
Render-agnostic immediate-mode UI on Clay layout. 8 widgets, 4 renderers (WebGL, TUI, Software, CRT), slippy map with overlays.
270+ tests · 19K loc · 4 renderer backends
View product page: architecture, components, renderers →
Arbor C
ALNS metaheuristic framework. Adaptive destroy/repair operators, roulette selection, 4 acceptance criteria, SA auto-calibration, restart mechanism.
66 tests · 1.4K loc · Powers Surge with 18 operators
View product page: framework architecture, operator catalog, API →
Surge C
Rich VRP/PDPTW solver. 25+ constraint types, BKS-competitive quality, ALNS via Arbor. Runs in browser via WASM.
340 tests · 40K loc · ALNS metaheuristic
View product page: benchmarks, competitive analysis, quick start →

Planned Engines

HoSE C planned
Hours of Service Engine. FMCSA 4-clock model, EU EC/561 rules, break scheduling.
Fuse C planned
Fleet Unified Signal and Estimation engine. Multi-source data fusion, vehicle identity resolution.
Sigma C planned
Selection and Integration for Global Multi-assignment Allocation. Fleet plan selection via MIP.
Tempo C planned
Time-window and Event Management Policy Orchestrator. Time windows, facility hours, blackout periods.
Pulse C planned
Plan Utilization and Live State Estimator. PTA computation, execution tracking, break insertion.
Forge C planned
Flexible Orchestration and Runtime for General Execution. Async job queue for background tasks.
Apex C planned
Asynchronous Pre-computation Execution. Tile pyramid generation, route corridor pre-computation, cache warming.
Iris Python planned
Intelligent Request Interpretation System. Natural language interface via LLM for dispatcher queries.
Quota C planned
Quote Underwriting and Tariff Optimization Algorithm. Spot and contract pricing, margin optimization.
Atlas C planned
Allocation and Tactical Lane Analysis System. Network design, lane balancing, capacity planning.

Architecture

┌───────────────────────────────────────────────────┐
│                                                   │
│      UI: React + ClayShards + WASM + APIs         │
│                                                   │
└─────────────────────────┬─────────────────────────┘
                          ▼
┌───────────────────────────────────────────────────┐
│                                                   │
│  Fleet: Arbor + Surge                             │
│         HoSE + Tempo + Sigma + Pulse              │  ◄── planned
│  State: Fuse (signal fusion + state estimation)   │  ◄── planned
│  Network: Atlas + Quota                           │  ◄── planned
│                                                   │
└─────────────────────────┬─────────────────────────┘
                          ▼
┌───────────────────────────────────────────────────┐
│                                                   │
│  Domain: FuelWise + Velo + Carta + Locus + Nexus  │
│                                                   │
└─────────────────────────┬─────────────────────────┘
                          ▼
┌───────────────────────────────────────────────────┐
│                                                   │
│              Core: Ralph + Shared                 │
│                                                   │
└─────────────────────────┬─────────────────────────┘
                          ▼
┌───────────────────────────────────────────────────┐
│                                                   │
│        Vendor: miniz + mongoose + Clay            │
│                                                   │
└───────────────────────────────────────────────────┘

Dependencies:
  FuelWise ──► Ralph (LP solver)
  FuelWise ──► Velo (routing)
  Nexus ──► Shared (arena, JSON, XML, CSV, SHA-256)
  Velo, Carta, Locus ──► Shared (geo, protobuf)
  Shared ──► miniz (compression)
  ClayShards ──► Clay (layout)
  APIs ──► mongoose (HTTP)

Why C?

Smallest WASM ~2MB for entire stack
Zero GC Predictable <100ms latency
Universal FFI Embed in any language
Max Portability Browser to embedded
Auditable Enterprise clients can read it
Proven Linux, SQLite, Redis, Nginx

Memory Safety via Discipline

  • Arenas & pools — bulk alloc, bulk free, no use-after-free
  • Bounded buffers — snprintf everywhere, explicit null termination
  • Overflow protection — calloc for safe allocation, bounds checks
  • WASM sandbox — linear memory is bounds-checked
  • Sanitizers — ASan + UBSan in all development builds
  • 1000+ tests — edge cases, error paths, stress conditions
Factor C Rust Go Zig C++
WASM size ~2MB ~4MB ~10MB+ ~2MB ~4MB
GC pauses None None Yes None Optional
WASM maturity Excellent Good Poor Good Good
Compile speed Fast Slow Fast Fast Slow
Complexity Low High Low Medium Very High

Performance Benchmarks

Operation Target
LP solve (1000 variables)<100ms
Route calculation (country-scale)<100ms
PNG tile generation (512×512)~75ms
Forward geocoding<20μs
Autocomplete query<20μs
Reverse geocoding<30μs
PBF parse (300MB Hungary)~10s

Design Principles

Zero Dependencies
No package managers, no external runtimes. Vendor libraries are vendored source—auditable, won't disappear.
WASM-First
All engines compile to WebAssembly. Same code runs in browsers and on servers.
Layered Architecture
Solver → Domain → API → UI. Each layer has a clean C API.
Arenas & Memory Pools
Bulk allocate, bulk free. No fragmentation, no leaks, cache-friendly.
Production-Hardened APIs
Rate limiting, bounded work queues, timeout handling. 429 for limits, 503 for overload.
Portable
Linux, macOS, Windows, browsers. Same codebase everywhere.

Scales With You

Same codebase from laptop to enterprise. Only the deployment changes.

💻
Local
Single process, in-memory queue
🏪
Small Business
Redis-backed job queue
🏢
Enterprise
Kubernetes, horizontal scaling
☁️
Managed
We run it, you use it
OTTO (full stack) ~2 MB WASM + your data
Commercial alternatives GB+ runtime + your data, server-only

Proof of Architecture

💻
OTTO FLEET (TM) TERMINAL
The entire OTTO UI runs in a retro CRT terminal ;)

To prove our zero-dependency, WASM-first architecture works anywhere, we built the entire ClayShards UI system rendering to a 1970s-style terminal.

Same components. Same algorithms. Same WASM binary. Just rendered to a character grid with phosphor glow, scanlines, and CRT curvature via WebGL post-processing.

CRT Effects Phosphor Glow Scanlines Box Drawing True Color
▶ Launch Terminal Demo
┌────────────────────────────────┐ │ FMCSA HoS DRIVER STATUS │ ├────────────────────────────────┤ │ Driver: [J. Morrison___] │ │ Status: [▼ Driving ] │ │ │ │ ╔═══════ CLOCKS ══════════╗ │ │ ║ Drive: 07:23 / 11:00 ║ │ │ ║ On-Duty: 09:45 / 14:00 ║ │ │ ║ 70-Hour: 52:18 / 70:00 ║ │ │ ║ Break in: 02:37 ║ │ │ ╚═════════════════════════╝ │ │ │ │ [x] Sleeper Berth Split │ │ 7hr + 3hr provision │ │ │ │ Recap Tomorrow: +8.5 hrs │ │ [ Start Break ] [ Go Off ] │ └────────────────────────────────┘

Start contributing

AGPLv3 licensed, well-documented, extensive test suite. Pick up an issue or propose a feature. We review PRs within 48 hours.

AGPLv3 Clean C11 codebase 1000+ tests Active development
View on GitHub