Questions & answers
The questions people actually ask — including the awkward ones. Each answer opens with its verdict, so you can scan the page in a minute; where an answer has a number behind it, the number is linked.
What it is
What is RingServ, in one sentence?
A modern server for Ring apps and web services: one downloaded file that contains the web server, the Ring language, a SQL database and a JavaScript engine — so writing a backend starts at zero and stays simple.
Do I need to know Ring?
No — JavaScript works too
A service can be a .js file running inside the same binary under the
same rules, and the two languages call each other by name. That said, Ring is an
afternoon's learning — small, dynamic, readable — and worth the afternoon.
Is this a framework?
No — it is the whole stack
There is nothing to assemble: no web server to configure, no database to install, no ORM to choose, no package tree to audit. You write services; everything they stand on is already inside the one file.
How does it relate to RingScript?
Two halves of one idea
The same Ring VM in the browser and on the server, speaking the same
service.action(payload) call. Write the application once; a separate
declaration decides which pieces run where. The unified
model shows it in three code blocks.
And to Softanza?
RingServ is infrastructure for the Softanza project — the dependency-free backend it stands on — while remaining fully usable with no knowledge of Softanza at all. It complements Softanza's own server paradigms rather than replacing them.
The awkward ones
Why would I use this instead of Node or Bun?
If their setup tax is costing you
If Node is serving you well, keep it — sincerely. RingServ's case is specific:
zero setup (one file, no node_modules, no supply chain to audit), a
database and a fiscal-grade journal built in, a declared and enforced
topology with offline sync, and a language you can teach in a day.
And it is measured rather than argued: a full service round trip is 0.75 ms, ~5,700 requests/s at peak on four workers — losses published next to wins.
Is it fast enough for real applications?
For the applications it exists for
The numbers above come from the actual binary on service-shaped work — dispatch, JSON, SQLite round trips. For business systems, counters, field tools and sites, the server is not the bottleneck. For heavy number crunching, keep using what you already use.
Does it do HTTPS?
No — a proxy in front does
Caddy, nginx or Traefik handle certificates in a few lines. RingServ speaks plain HTTP on purpose: encryption libraries are large and change often, and copying one in would break the promise that the binary has no dependencies. The server refuses to start on a public address until you confirm a proxy is there, so this cannot bite you silently.
Can I trust "it runs Ring"?
Checked on every change
About 970 programs — Ring's official sample set and every code block in Ring's documentation — run through RingServ and through native Ring, compared character by character, on every change. Zero mismatches is a test that fails the build, not a claim.
What does 0.9 mean?
Ready to use — not finished
Everything documented works and is tested on Linux, macOS and Windows, but a command or a declaration may still change before 1.0 — expect to read release notes when you upgrade. What the tests do not yet cover well is listed openly, and the road ahead is a public plan.
What does it refuse to do?
A few things, all on purpose and all said out loud. No TLS (above). Number formatting in JavaScript covers eight languages and nine currencies, and names anything outside them rather than formatting it wrongly. The config file reads ordinary settings, not the whole YAML standard. And the journal has no delete — a cancellation is an event with a reason, never an erasure, because that is what makes the record worth keeping.
Practical
Can I install it with Ring's package manager?
Yes — one line
ringpm install ringserv from mayouni, then
ringpm run ringserv. That brings the guides and both example
applications too, so ring main.ring example comptoir runs a whole
application straight away.
The package carries no binary on purpose — one is ~7 MB, and five platforms of it would live in git history forever — so installing downloads the single binary your machine needs from the tagged release. With no network it still installs, and tells you exactly which file is missing and where it goes.
What platforms?
Linux (x64, arm64), macOS (Intel, Apple Silicon) and Windows — one file each, built and tested by CI from the tagged commit, with checksums beside them, on the releases page.
What is inside the binary, exactly — and whose work is it?
Mahmoud Fayed and the Ring team's
Ring VM; D. Richard Hipp's
SQLite; the
QuickJS-ng JavaScript engine,
descended from Fabrice Bellard's QuickJS; Karl Seguin's
http.zig; and Youssef Saeed's
tree-sitter-ring grammar
behind ringserv check — all vendored, pinned and credited in
vendor/VENDOR.md,
compiled into one file by Andrew Kelley and the Zig team's
Zig.
License?
MIT, for everything.
Where do I ask something this page missed?
Open a discussion or an issue on GitHub — awkward questions welcome; the best ones end up here.