Introduction
OQL (Ocalt Query Language) is a compiled, verb-first, server-side language. Every statement begins with a verb. No objects. No dot notation. No framework. One fetch() call — or one .oql file — is your entire backend.
How it works
OQL runs inside the Ocalt runtime. You send a query over HTTPS. The runtime compiles it into an execution graph and runs it. The result comes back as JSON.
The only client code you write
From JavaScript, Python, PHP, or any HTTP client — your entire backend is one POST request:
No framework. No middleware. No server configuration. The OQL runtime is the backend.
Language properties
| Property | What it means |
|---|---|
| VERB-FIRST | Every statement: VERB operand [modifiers] [SET ?var] |
| COMPILED | Queries compile to an execution graph before running. No interpreted loop. |
| DETERMINISTIC | Same inputs always produce the same output. |
| SANDBOXED | Each account has an isolated /root/ filesystem and daily quota. |
| ASYNC-NATIVE | AND is true parallel execution. AFTER is sequential. OR is fallback. |
| COMPLETE BACKEND | No framework required. OQL is the server. |
Site Mode
For full websites: place an index.oql file in /root/sites/{subdomain}/. Every HTTP request to that subdomain runs through it.
A taste of OQL
Transform text, measure it, and emit a report — in one sequential pipeline:
Fetch two APIs simultaneously and combine results:
Feature overview
| Category | Verbs |
|---|---|
| Strings | UPPER LOWER UCWORDS TRIM STRING REPLACE SPLIT JOIN LENGTH PAD SLICE MATCH CONTAINS STARTS ENDS INDEX REPLICATE CHARS WORDS REVERSE STRING |
| Arrays | NEW ARRAY · ENLIST · APPEND · SORT · REVERSE · UNIQUE · FLATTEN · FIRST · LAST · PLUCK · SLICE · LENGTH · COLLAPSE |
| Compute | CALCULATE CAST UUID HASH ENCRYPT DECRYPT SIGN VERIFY COMPARE RANDOM |
| Database | CREATE DATABASE · CREATE TABLE · INSERT · QUERY · UPDATE · PURGE · FLUSH TABLE · DELETE TABLE · DELETE DATABASE · DATABASE LIST · TABLE LIST |
| Filesystem | WRITE READ LIST STAT EXISTS COPY MOVE REMOVE MKDIR COMPRESS DECOMPRESS SHARE UNSHARE SEARCH CLEAR FILE SELECT |
| Network | FETCH GET POST PUT DELETE PING RESOLVE DOWNLOAD UPLOAD CONNECT SUBSCRIBE PUBLISH |
| Auth | REGISTER LOGIN LOGOUT SESSION REFRESH REVOKE CONFIRM COMPARE — per-namespace user account system for your end-users |
| EMAIL · NOTIFY (web push) · WEBHOOK | |
| Image | IMAGE LOAD · RESIZE · CROP · ROTATE · FLIP · FILTER · WATERMARK · THUMBNAIL · COMPOSITE · HISTOGRAM · RAW IMAGE CREATE |
| Audio / Video | TRANSCODE · TRIM VIDEO · TRIM AUDIO · SPLICE · CONCAT MEDIA · EXTRACT FRAME · EXTRACT AUDIO · OVERLAY · SUBTITLE · TEXT ON VIDEO · BLUR VIDEO · COLOR GRADE · MIRROR VIDEO · REVERSE VIDEO · SPEED VIDEO · LOOP VIDEO · BOOMERANG VIDEO · FREEZE FRAME · GREEN SCREEN · SPLIT SCREEN · TRANSITION VIDEO · STABILIZE VIDEO · FADE VIDEO · FADE AUDIO · MIX AUDIO · NORMALIZE AUDIO · PITCH AUDIO · SET VOLUME · MUTE VIDEO · REPLACE AUDIO · PROBE MEDIA · INSERT FRAME · INSERT CLIP · REPLACE FRAME · REPLACE CLIP |
| Maps & Docs | MAP GEOCODE · MAP RENDER · MAP ROUTE · MAP DISTANCE · MAP SEARCH · MAP REVERSE · MAP CLUSTER · MAP BOUNDS · DOC CREATE · HTML construction · CONVERT |
| Real-time | STREAM BROADCAST WATCH CRON GATHER WebRTC DIRECTIVE |
| Site Mode | Full websites from a single index.oql file — !REQUEST !GET !POST !COOKIE HEADER STATUS REDIRECT COOKIE |
Getting started
- Create a free account at accounts.ocalt.com.
- Open the Live Editor to run your first query.
- Read Syntax & Variables to understand the language model.
- Browse the Verb Index for a full reference of all verbs and modifiers.