ACTIAS

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

SurfaceUse it for
kvsmall values read by name
databaseSQL, migrations, queries across rows
objectone entity's state, serialized access, its own alarm
queueretried background work
workflowprocesses lasting minutes to days
streams + socketspushing events to objects and browsers
secretversioned 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.