OcaltQL
A verb-first execution language for the entire stack. One grammar instead of twenty SDKs. Full reference at ql.ocalt.com.
Open Language DocsOverview
OcaltQL is a query language and execution runtime designed to serve as the single control layer for your digital infrastructure. Scripts read naturally — like describing a task out loud — using sequences of verbs, subjects and prepositions. There is no boilerplate, no compilation step you wait on, and no separate environment to configure.
Submit a script to the runtime and it executes across web, filesystem, media, compute, services, databases, networking, scheduling and more. Everything is controlled through the same language.
What it is
A verb-first, pipeline-oriented server-side execution language, implemented in Rust. Every statement starts with a verb. Every query compiles to an execution graph before a single instruction runs. The language is deterministic, auditable and parallelisable by construction.
It is not limited to databases. Web, files, media, CAD, mail, maps, machines, WASM and HTTP are the same grammar. A model that can write OcaltQL has to be taught one schema, not twenty.
What it can do
- Web — generate HTML, handle forms, bridge JavaScript, build UI. An
.oqlfile on a subdomain is a page. - Filesystem & media — files, FTP, images, video, audio, 3D and CAD.
- Database — native databases and tables in the namespace, not a wrapper around SQL.
- Services — browser automation, email, maps, push notifications, charts, documents.
- Compute — cryptography, WebAssembly, SSH, remote computing, real-time streams.
- Application — accounts, sessions, custom verbs, hosting, subdomains.
Chaining: AND runs branches in parallel. AFTER chains sequentially. OR falls back on failure. A multivariable is a variable bound across parallel branches — it holds N live instances and fans out downstream operations automatically. COLLAPSE converges those branches into an indexed array.
How it works
Implemented in Rust. Tokio for I/O-bound ops, Rayon for CPU-bound ops, with a GPU pool in progress. Lexer, parser, IR lowerer and executor are hand-written. Several primitives (SHA-256, HMAC, JWT, PNG, BMP) are written from scratch in the runtime rather than taken as a bag of crates.
Auth is sessionless on the API. Credentials travel in the request envelope on every HTTPS request. Each Ocalt account namespace is isolated. A script can only read and write /root and /mounted, and can only address machines that account has registered.
Getting started
- Open console.ocalt.com and run
EMIT "hello". - Take an API key from accounts.ocalt.com.
- Read Introduction and Syntax & EMIT.
- Call the runtime from your own code when the console is no longer the right door.
curl https://ql.ocalt.com/api \
-d identity=you@example.com \
-d password=YOUR_API_KEY \
--data-urlencode 'q=FETCH "https://example.com" SET ?r AFTER EMIT ?r'FETCH "https://api.example.com/orders" SET ?raw
AFTER PARSE JSON ?raw SET ?orders
AFTER FOREACH ?orders SET ?o
OPEN
INSERT INTO DB "shop" TABLE "orders" ROW "ref" AS ?o("id") AND "total" AS ?o("total")
CLOSE
AFTER COUNT ?orders SET ?n
AFTER EMIT ?n & " orders imported"The runtime API
Every script is submitted to https://ql.ocalt.com/api. Fields: identity (account email), password (API key), q (the script). The response is the output, byte for byte. Content-Type is text/plain unless the script set another with HEADER.
The Fabric endpoint at https://fabric.ocalt.com/api is the same credentials, specialised for machine and hosting commands (cmd + args instead of q). Revoking the key revokes both.
| Status | Meaning |
|---|---|
| 200 | Reached the runtime. Read the body; a script may still have failed. |
| 401 | Credentials rejected. |
| 429 | Daily query allowance spent. Credits draw after that. |
A query is one HTTP request to the runtime, regardless of how much the script chains inside it. That is the unit Pricing counts.
A short grammar
| Idea | How it looks |
|---|---|
| Emit | EMIT "hello" |
| Bind | CALCULATE 1 + 1 SET ?result |
| Sequence | AFTER between statements |
| Parallel | AND between branches |
| Fallback | OR on failure |
| Block | OPEN … CLOSE |
| Loop | FOREACH ?items SET ?item |
| Condition | IF ?x IS EQUAL TO 1 |
| Request | !GET, !POST, !REQUEST, !COOKIE |
| Include | INCLUDE, SIDELOAD (CRON/WATCH bodies) |
Databases are native. NEW DB "shopdb" then NEW TABLE … IN DB "shopdb". There is no “currently selected” database. Statements name the database they mean.
Scripts as endpoints
A file on a subdomain answers HTTP directly. A path maps to a file and an extensionless path falls back to .oql, so /orders runs orders.oql. HEADER sets the content type, STATUS sets the code, and !GET / !POST / !COOKIE carry the caller.
HEADER "Content-Type" AS "application/json"
AFTER NEW OBJECT SET ?out
AFTER SET ?out("ok") AS true
AFTER SET ?out("echo") AS !GET("q")
AFTER EMIT ?outLimits and plans
| Plan | Queries / day | Notes |
|---|---|---|
| Free | 100 | Whole language. API access for evaluation. Credits available. |
| Starter | 1,000 | Production API use. Mounted storage. |
| Pro | 10,000 | Higher priority. |
| Enterprise | 100,000 | Priority compute and support. |
Credits: $5 buys 1,000 queries, drawn after the daily amount, do not expire, available on every tier including Free. Default execution time is 300 seconds, raisable per request. Execution memory follows the plan.
Who it is for
Developers who want a programmable execution layer without managing infrastructure. Operators who would rather write one script than stitch five products. Teachers who need a language that runs on a Chromebook. Models that need real agency with a blast radius of one namespace.
Related products
FAQ
Is OcaltQL SQL?
No. It has a native database engine, and the statements that talk to it are OcaltQL, not a dialect of SQL. It also fetches URLs, trims video, signs JWTs and restarts machines. SQL does not.
Starter tier and above?
Free includes the whole language and API access at 100 queries/day, for evaluation. Starter is the first plan sized for production API use. The verbs do not unlock by SKU.