Open source · Rust · Headless

Commerce you
own.

A headless commerce engine that ships as one Rust binary. Host it yourself, change any part of it, and keep your customer data on your own servers.

Get started
~20MB
one binary
<10ms
p99 response
10k+
concurrent
42ms
cold start
rcommerce — zsh
$ rcommerce serve
rCommerce v1.0
▸ loading config from rcommerce.toml
▸ connected to postgres in 3ms
▸ REST API on :8080
✓ ready in 42ms · 20MB resident
$ curl :8080/products | jq '.[0].name'
"Aeron Chair"
The problem

You don't own the store
you pay for.

Hosted platforms are easy to start with. They take a cut of every order, keep the logic your business runs on out of view, and store your customers' data on their servers. When you need something they don't offer, or they put the price up, you find out how hard they have made it to leave.

The platform you rent
rCommerce

Every sale pays a fee. A percentage here, a payment surcharge there, taken from all of your growth.

No per-transaction fees. It is your binary on your server, so you keep the full value of every order.

Checkout, tax and pricing are hidden. When something is wrong you raise a ticket and wait.

Read the source, follow the request and fix it yourself. Nothing about your store is hidden.

Your customer and order data sits on servers you cannot see or control.

Self-hosted on PostgreSQL. The data is in your database, under your backups and your rules.

One custom requirement means fighting the platform, or bolting on a fragile third-party app.

Typed plugin hooks and webhooks. Extend the core in Rust without forking it.

Leaving is made hard on purpose. Exports are partial and the way out is easy to miss.

Open source, under AGPL or a commercial licence. Import your data in, and take it out whenever you like.

rCommerce takes the other approach: a fast, readable commerce core you run yourself, so the platform works for you.

How it compares

Lighter to run than PHP or JavaScript.

WooCommerce runs on PHP and Medusa on Node.js. Like rCommerce, both are open source and self-hosted. The language underneath sets what each one costs to run. This is the memory each needs before a single order.

PHP, a web server and WordPress, all running before your first sale
one 20MB binary and Postgres, around 20x lighter
hosted
≈ 768 MB
≈ 35 MB
Shopify
hosted SaaS · rented
WooCommerce
monolithic PHP · LAMP
rCommerce
single Rust binary

WooCommerce is a solid, popular choice, but its PHP stack is dated and wants real memory before you sell anything. Shopify hides the server completely, and charges a fee on every order to do it.

rCommerce WooCommerce Medusa
Language Rust PHP JavaScript / Node
Type safety Compiled, checked at build Dynamic, runtime errors Optional (TypeScript)
Baseline memory ~35 MB ~768 MB ~250 MB
What you deploy One static binary PHP-FPM, web server, MySQL Node runtime, Redis, Postgres
Concurrency Multi-threaded, no GC pauses Process per request Single-threaded event loop
Licence AGPL or commercial GPL MIT

All three are open source and yours to host. rCommerce trades the familiarity of PHP and JavaScript for a compiled core that holds its types, its memory and its throughput as your store grows.

What's inside

A whole store
in one download.

Catalogue, checkout, payments, inventory and the API to drive them are all in the binary. There are no add-ons to buy and nothing to licence per feature.

Nothing to buy on top

The full engine is in the binary, not locked behind a plan tier.

One thing to run

A single process on Postgres, not a set of microservices.

Yours to own

Open source and self-hosted. What you download is yours.

Architecture

One core, any front end.

Every request goes through the same typed core over the REST API. Each change to state is sent out as a signed event.

FRONT
ENDS
Next.js Astro iOS / Android POS
API
REST WebSocket
rCOMMERCE CORE · RUST
Catalog Cart Orders Inventory Payments Tax Pricing Auth
DATA PostgreSQL
STATE CHANGES
BECOME EVENTS
webhook · order.paid email receipt analytics OpenTelemetry
For developers

Build on the core.

Reach the same typed core from Rust, a plain REST API or the command line. Full types, JWT auth, and documentation that matches the code.

use rcommerce::prelude::*;

#[tokio::main]
async fn main() -> Result<()> {
    let app = RCommerce::new(config).await?;
    app.serve("0.0.0.0:8080").await
}
# List products
curl https://api.example.com/products \
  -H "Authorization: Bearer <key>"

# Create an order
curl -X POST /orders \
  -d '{"items": [{"sku": "AERO-01", "qty": 2}]}'
$ rcommerce serve
rCommerce v1.0
▸ loading config from rcommerce.toml
▸ connected to postgres in 3ms
▸ REST API on :8080
✓ ready in 42ms · 20MB resident
rcommerce.toml
# everything is config, versioned in git
[store]
name     = "Northwind"
currency = "USD"

[tax]
strategy = "stripe_tax"

[[payment]]
provider = "stripe"
methods  = ["card", "link"]
Config as code

Your store, in version control.

Tax, payments, currencies and shipping live in one typed TOML file. Review it in a pull request, roll it back with a revert, and promote it across environments.

  • Reproducible environments
  • No clicking through an admin to change settings
  • Checked at boot, so typos fail fast
Runs anywhere

One binary, almost any machine.

Statically linked with no runtime to install. The same rcommerce build runs on a Raspberry Pi, a bare-metal server in a rack or a cloud VM. Choose your OS and CPU, and we ship a build for it.

Operating systems
Linux macOS FreeBSD Docker
Architectures
x86-64 ARM64 RISC-V ARMv7
Migration

Bring your store with you.

Importers map your products, customers and orders across from the platform you are leaving, with nothing left behind.

WooCommerce
Medusa
Shopify
See migration guide

Start with one command.

Free and open source. Install the binary, connect Postgres, and start serving products.

Get started Star on GitHub