Source-available · Singapore-first

Restaurant ordering and POS that an AI agent can operate

Hawkerline is a source-available restaurant ordering, kitchen display, menu and POS system that an AI agent can operate, built for Singapore food businesses and running on one Cloudflare Worker and one D1 database.

See how an agent operates itRead the license summaryView on GitHub

What is Hawkerline?

Hawkerline is a source-available restaurant ordering, kitchen display, menu and POS system that an AI agent can operate, built for Singapore food businesses and running on one Cloudflare Worker and one D1 database.

  • It runs as one Cloudflare Worker and one Cloudflare D1 (SQLite) database, with static files served by Workers Assets. There is no separate server to maintain.
  • Singapore-first defaults: Singapore time, SGD prices, GST and service-charge settings, PayNow QR and postal-sector delivery zones.
  • It was extracted from the production system of a Singapore food business, 坡晓馒 PO XIAO MAN.

Four surfaces, one Worker

Customer storefront

Menu, product pages, cart, checkout, pickup or delivery, scheduled pre-order time slots within business hours, and an order invoice page. Bilingual Chinese and English.

Owner back office /admin

Products, prices, images, combos, promo codes, delivery zones, business hours, GST and service charge, payment settings, members, orders, refunds and a sales summary.

POS cashier /pos

Cashier login with PIN, counter sales, member lookup, wallet top-up at the counter, and staff clock-in and clock-out.

Kitchen /kitchen

A kitchen board with order status flowing new, preparing, ready, done, plus kitchen ticket printing through a Star CloudPRNT endpoint or a small print agent for macOS and Windows.

The AI agent layer

Every deployment exposes three agent interfaces: an MCP server at /mcp (Streamable HTTP, bearer-key auth), a REST API at /api/agent/v1 with an OpenAPI 3.1 document at /api/agent/v1/openapi.json, and /llms.txt, which explains to an agent how to operate the store. Any MCP client that can send an Authorization: Bearer header over Streamable HTTP can connect, for example Claude Code. OAuth is not implemented.

Example flow: photo of a menu to a published menu

  1. Photo of a menu. You give the agent a photo or PDF of your menu.
  2. Products. The agent creates the products and categories, in bulk if needed.
  3. Preview. It previews the draft against the live menu. Customers still see only the published release.
  4. Publish. It publishes exactly the previewed draft. The checksum must match.

After that, the same agent can list orders, read the kitchen board and move orders through the kitchen flow. Read the full agent interface.

Safety rails for letting an AI publish

Preview checksum

An agent can only publish the exact draft it previewed. If the checksum does not match, it does not publish.

Scoped keys

Agent keys carry scopes such as menu:read, menu:write and menu:publish. The owner decides what each key can do. Keys are shown once and stored only as a hash.

Audit log

Every agent call is written to an audit log visible to the owner.

Instant revocation

The owner can revoke a key in the back office at any time.

Draft, release and rollback

  • Edits go to a draft. Customers only see a published release.
  • Releases are immutable snapshots. Publishing can be immediate or scheduled in Singapore time.
  • A signed preview link, valid for 10 minutes, shows the draft before it goes live.
  • Rollback creates a new release from an older one.
  • Concurrent edits are protected by revision checks: a stale edit is rejected instead of overwriting.

Deployment model

Hawkerline is one Cloudflare Worker and one D1 database. The storefront, back office, POS and kitchen are separated by path or subdomain on the same Worker.

AI agent Owner and staff One Cloudflare Worker Storefront/admin/pos/kitchen Workers Assets: static files One D1 database MCP · REST
Diagram: an AI agent and people use the same Worker, which stores data in one D1 database.
TopicFact
LicenseHawkerline Community License; source-available, not OSI open source
HostingOne Cloudflare Worker; static files by Workers Assets
DatabaseOne Cloudflare D1 (SQLite) database
Agent interfaceMCP at /mcp, REST at /api/agent/v1, OpenAPI 3.1, /llms.txt
PaymentsStripe online payments with signed webhooks; PayNow dynamic QR for manual confirmation
DeliveryFee by zone; Lalamove courier price quotes only, no automatic booking
AlertsTelegram new-order alerts to subscribed staff chats
LocaleSGT, SGD, GST and service charge, bilingual Chinese and English storefront

Try it locally

Run a local copy with seeded demo data:

npm ci
npm run db:migrate:local
npm run demo:seed
npm run dev

Read the deployment guide and the agent guide on GitHub.

License in one minute

  • Free for a food and beverage business to run for its own outlets, if it had annual revenue (with affiliates) of not more than S$10,000,000 in the previous financial year.
  • You may install, modify, self-host, and have an IT contractor set it up for your own use.
  • System vendors, POS or SaaS providers, agencies and integrators cannot sell, resell, sublicense or host it for other businesses without a commercial license.
  • Provided as-is, without warranty.

Read the plain-language license page.

Showcase: 坡晓馒 PO XIAO MAN

坡晓馒 PO XIAO MAN is a Singapore bun shop. Its online ordering storefront, owner back office, POS and kitchen run on the system Hawkerline was extracted from, on Cloudflare Workers and D1, with live Stripe payments. Read the showcase or visit poxiaoman.com.

Frequently asked questions

What is Hawkerline?

Hawkerline is a source-available restaurant ordering, kitchen display, menu and POS system that an AI agent can operate, built for Singapore food businesses and running on one Cloudflare Worker and one D1 database.

Is Hawkerline open source?

Hawkerline is source-available, not OSI open source. The source code is public. A food and beverage business with annual revenue of not more than S$10,000,000 can run it free for its own outlets under the Hawkerline Community License.

Can an AI agent really publish my menu?

Yes, within limits you set. An agent connects through MCP at /mcp or REST at /api/agent/v1 with an agent key. It can only publish the exact draft it previewed, each key carries only the scopes you grant, every call is written to an audit log, and you can revoke a key instantly.

What do I need to run it?

One Cloudflare Worker and one Cloudflare D1 (SQLite) database. Static files are served by Workers Assets. There is no separate server to maintain.

Is it built for Singapore?

Yes. Defaults include Singapore time (SGT), SGD prices, GST and service-charge settings, PayNow QR and Singapore postal-sector delivery zones. The customer storefront and menu are bilingual, Chinese and English.

Can I resell it or host it for other businesses?

No, not under the community license. System vendors, POS or SaaS providers, agencies and integrators need a separate commercial license to sell, resell, sublicense, host it as a service for other businesses, or bundle it into a commercial product.

Is there a live example?

Yes. Hawkerline was extracted from the production system of 坡晓馒 PO XIAO MAN, a Singapore bun shop at poxiaoman.com.