Get Started

Clone to first message in minutes.

No installer, no cluster, no signup. One Go binary that provisions its own database, and four commands between you and an accepted message.

Go1.22 or newer
MySQL8.0 (self-provisioned by the gateway)
Redisoptional — hot-path acceleration
OSLinux, Windows or macOS
01

Clone and configure

Grab the repo and copy the example environment file. The .env holds your listen address and store connections — MySQL is the only requirement to start.

step 01
$ git clone github.com/yakugate/yakugate
$ cd yakugate
$ cp .env.example .env
# set YAKU_API_ADDR and your MySQL DSNs
02

Run the HTTP edge

One binary, run by role. On first start the gateway creates its own database, applies migrations and seeds a dev account — no manual schema work.

step 02
$ make run ROLE=http-server

✓ bootstrap: database created, migrations applied
✓ seed: dev accounts provisioned
✓ http-server listening on :8080
03

Send your first message

Accepted means durably enqueued — the response confirms your message is safe in the queue with a ULID you can track through its whole lifecycle.

step 03
$ curl -X POST "http://localhost:8080/sms/v4/send" \
    -H "Content-Type: application/json" \
    -H "yaku-sms-key: $TOKEN" \
    -d '{"from": "TEST", "to": "+14155550100", "message": "Hello"}'

{ "status": "ACCEPTED", "messageId": "01J3…" }
04

Add the rest of the pipeline

Start vendor senders, DLR handling, retry and billing as separate roles of the same binary — deploy exactly the shape you need, scale each role independently.

step 04
$ make run ROLE=smpp-vendor   # vendor egress
$ make run ROLE=dlr           # receipts → clients
$ make run ROLE=retry         # backoff & expiry
$ make run ROLE=billing       # rate & charge

Where to next?

Prove the performance on your own hardware, read the full feature spec, or bring in a partner when it's time for production SLAs.

Run the BenchmarksExplore FeaturesRead the FAQ