A restaurant POS you actually own.
Front of house, kitchen, delivery, and however your customers already order — one system, running on your own hardware.
BeepBite is a Go API and a React app running against your own Postgres — on a laptop in the back office, a machine in the cupboard, or a VM you rent. Delivery platforms take 15–30% of every order and own the customer relationship; cloud POS vendors charge per terminal per month. BeepBite takes nothing and holds nothing, because there is no BeepBite service — there is only the copy you run.
Shown: the shipped app on a real seeded demo restaurant ("The Copper Table"). See the screenshots doc for how these are captured.
Every surface a restaurant needs
A touch POS, a kitchen display, inventory, and channel-agnostic ordering — built to be self-hosted, not rented.
Touch POS
Tabs, splits, voids, comps and manager approval, with a floor plan and table management built in.
Kitchen display
Per-station routing and an expo view, so tickets land where they're cooked, not just on a printer.
Inventory & purchasing
Recipes, costing, the 86 list, suppliers, purchase orders, goods receipts and waste tracking.
WhatsApp & QR ordering
Customers order from wherever they already are — WhatsApp chat with your own Meta credentials, or QR-at-table and web ordering. Both built today.
Money & people
Cash drawer sessions and reconciliation, cash/card/transfer/voucher tenders, time clock, payroll and tip pools.
No payment facilitator
BeepBite records tenders; it never touches your money. "Card" means your own card machine on your own counter — no PCI scope, no cut of your revenue.
Full feature list in the docs. Discord, Slack and email/DMTAP ordering are planned, not yet built — see Status.
A real POS, on a real seed
Every shot below is a real seeded tenant ("The Copper Table"), captured from the actual running app — nothing is mocked up.






Light and dark variants of every surface are captured by npm run screenshots — see the docs gallery for the full set and what's excluded.
Quick start
A Go backend, a Postgres database, and a React frontend — no Docker required, no external service to sign up for.
git clone https://github.com/vul-os/beepbite cd beepbite # 1. database createdb beepbite # 2. configure — set DATABASE_URL and JWT_SECRET cp .env.example .env # 3. migrate cd backend && go run ./cmd/migrate --env=local --up # 4. API go run ./cmd/server --env=local # 5. app cd .. && npm install && npm run dev # :5174
- 1DatabaseA local Postgres 15+ — a laptop or a machine in the back office is enough.
- 2ConfigureOnly
DATABASE_URLandJWT_SECRETare required. WhatsApp, maps and AI stay off until you supply your own credentials. - 3Seed & runRun the seed script for an owner login and a populated demo organisation, then sign in and start taking orders.
Pre-1.0, and honest about it
The POS, kitchen, inventory and ordering surfaces are substantially built; several architectural changes are in flight. A feature that silently does nothing is worse than one that says it isn't built.
Built
POS, KDS, floor plan, orders, inventory, purchasing, recipes, gift cards, loyalty, WhatsApp ordering, and QR-at-table / web ordering — covered by integration and e2e tests.
Not built yet
Discord, Slack and email/DMTAP ordering have no channel-adapter abstraction yet. Single-binary + SQLite and offline-first multi-site sync are planned, not done.
A real known bug
The customer tracking page's live map and ETA don't render — a backend/frontend JSON shape mismatch, found and documented, not yet fixed. See the full table in the docs.
Part of VulOS
Vulos is a family of open, self-hostable apps. BeepBite runs standalone on its own hardware, and can also run as an app hosted by the Vulos OS. No hub, no account, no coupling required.
Explore Vulos →