Self-hosted application platform and object storage
TotisWorkers runs apps written against a subset of the Cloudflare Workers API, with SQL, KV, queues and jobs built in. TinyS3 is erasure-coded, S3-compatible object storage. Both run on hardware you control.
version: 1
apps:
shop:
entry: src/index.ts
# env.DB, the app's SQL database, comes with the app
kv: { SESSIONS: shop-sessions }
queues:
producers: { ORDERS_Q: shop-orders }
ai: { AI: { connection: platform } }totis.yaml declares apps, databases, queues and bindingsApplication platform
TypeScript workers with SQL databases (row store and columnar), KV, queues, jobs, AI, email and storage bindings, deployed from one totis.yaml.
Object storage
An S3-compatible object store in Java, from a single server to multi-node clusters.
Every service, briefly: TotisWorkers services · TinyS3 services
Self-hosting an application stack means running a web runtime, a SQL database, a key-value store, a queue, a scheduler, mail delivery and object storage as separate systems: seven deployments, seven backup procedures, seven upgrade paths.
TotisWorkers and TinyS3 replace them with one platform and one storage layer.
Details: Workers architecture · TinyS3 architecture
S3 conformance comes first; the ERP numbers are a single-node dev test, not a production benchmark.
| Measurement | Result | Conditions |
|---|---|---|
ceph/s3-tests, excluding tests that fail on AWS itself (not fails_on_aws) | 99.5% pass: 596 passed, 3 failed, 4 skipped | 4-node local cluster, recorded 2026-09-06 |
| ERP example, seeded rows | 11.3 million | Dev-node test: MacBook Pro M4 Max, single node, 2026-11-03 |
| ERP dashboard response | 64 ms | same run |
| ERP first customers page | 298 ms | same run |
TinyS3 is licensed under the AGPLv3 for standalone servers and clusters of 2 nodes or fewer, with a commercial license above that (LICENSING.md).
We share technical detail, a deck and a data room on request.
Questions about TotisWorkers or TinyS3?
Contact us