schedule-bit Cloud · Developer beta
A scheduling engine as an API.
Any resource — a room, a machine, a person’s hours — is a World whose time is stored as bits. Every claim is judged at the door: you get a receipt or a reason, never silence.
Keys are issued by request during the developer beta.
alice holds 09 and 10
{
"wrote": "0x600",
"slots": [
9,
10
],
"displaced": [
{
"occupier": "bob",
"slots": [
9
],
"offered": {
"parametric": 2026,
"coordinates": [
9,
1
],
"slots": [
11
]
}
}
],
"commitSeq": 4,
"head": "20fc4842bffb6b9b0341187cd5c99583"
} Three layers, one engine.
-
01 BITS
schedule-bit
Binary planes: every slot is a bit.
API: presets, offered, positions
-
02 PLANES
planes
Occupiers, the door, the record, the watch.
API: occupiers, claims, journal
-
03 RELAYS
relay
One job through many Worlds.
API: hands, relays, asks
A receipt or a reason. Never both, never silence.
- Stopped series? 409 stopped
- Held by others? 409 held (by whom) Outranks them? Displace, and offer the loser a slot.
- Capacity left? 409 capacity
- Own rules pass? 409 rule / rest / horizon
- 201 receipt One sealed commit in the journal.
201 receipt
{
"wrote": "0x600",
"slots": [
9,
10
],
"displaced": [
{
"occupier": "bob",
"slots": [
9
],
"offered": {
"parametric": 2026,
"coordinates": [
9,
1
],
"slots": [
11
]
}
}
],
"commitSeq": 4,
"head": "20fc4842bffb6b9b0341187cd5c99583"
} 409 refused
{
"type": "https://schedule-bit.dev/problems/refused/held",
"title": "Refused",
"status": 409,
"detail": "slots 10 are held by alice",
"refusal": {
"by": "held",
"conflictsWith": [
"alice"
],
"slots": "0x400",
"outranked": true,
"pinned": false
}
}
Every refusal names why: held, capacity, rule, rest, horizon, foreign, stopped, stale…
claims:explain judges a claim without writing it.
One job, many hands.
A relay carries one job through several resources, in order, with gaps. Each leg is asked, never taken; each hand answers on its own record.
windows → starts 9, 10, 11, 12 — one AND over every hand’s free bits
See the relay → Across organisations Coming soon
Told as it lands.
Watch (WebSocket) Live
Every commit, as it lands.
Server-side only for now: browser WebSocket authentication Coming soon
Webhooks Live
Signed with HMAC-SHA256, retried with backoff: 10 tries, then a dead-letter queue.
-
commit(WebSocket only) -
claim.made -
claim.released -
ask.received -
ask.withdrawn -
ask.answered -
relay.acted
What holds on every call.
-
One writer per World
Each World handles one request at a time, so two claims can never both win the same slot.
-
Tamper-evident journal
Every hash seals the previous one; nothing is overwritten.
-
Refuses to serve an altered past
A World rebuilds by replaying its log. If the head doesn’t match, it answers 503.
-
Idempotent writes
Send Idempotency-Key: the same key and body return the first answer for 24 h.
-
Workspace walls
A key sees only its own workspace’s Worlds.
-
Asks survive outages
Asks to an unreachable hand wait, in order, and are retried every 30 s.