What Actias is
One Lua file, published, answering requests, with the platform's storage and work surfaces declared inside it.
You write a Lua file and publish it. It answers HTTP requests.
local visits = kv "visits"
on "fetch" (function(request)
local count = (visits:get("count") or 0) + 1
visits:set("count", count)
return {
headers = { ["content-type"] = "application/json" },
body = json.stringify({ hello = "actias", visits = count }),
}
end)
That is the whole program. Storage, background work, scheduled work and live updates are declared in the file, never attached to it.
Declarations
kv "visits" declares that this script uses a key-value namespace
called visits. Databases, queues, workflows, object classes and
secrets are declared the same way, at the top level of the entry point.
A script can only reach what its declarations name. Ask for a namespace you never declared and the call fails.
The platform derives the list by running your file with every surface
stubbed out, then stores it with the revision. actias check prints
the same list locally before you publish.
What is available
| Surface | Use it for |
|---|---|
kv | small values read by name |
database | SQL, migrations, queries across rows |
object | one entity's state, serialized access, its own alarm |
queue | retried background work |
workflow | processes lasting minutes to days |
| streams + sockets | pushing events to objects and browsers |
secret | versioned credentials |
on "cron:..." | scheduled jobs |
Each has a chapter in How it runs and a page in the reference.
Under construction. Surfaces change without notice. These docs describe what works today.