open-standards/openpay/docs/deploy/quickstart.md
Transaction Science 70ecd6caa0 Initial import — three open standards under one shelf
Transaction Science open standards monorepo. Each subdirectory is a
self-contained reference protocol with its own README and licence.

- openpay/    Apache-2.0  payment-acceptance stack (Rust, 26 crates)
- smart-byte/ CC-BY-4.0   content-addressed value carrier (spec)
- eoc/        CC-BY-4.0   energy-optimised compute (spec)

The wire format and the right to fork are public. The optional hosted
services are the offer; the protocols are not.
2026-05-23 07:58:09 -04:00

91 lines
2.3 KiB
Markdown

# OpenPay — five-minute quickstart
The shortest path from `git clone` to a request hitting an
op-server process. No persistence, no TLS, no auth — that's for
the rest of `docs/deploy/`. This is just "does the wheel turn?"
## Prerequisites
- Rust **1.95** (edition 2024). The MSRV is pinned in
`rust-toolchain.toml` / `Cargo.toml`.
- A working `cargo`. No system deps beyond a C linker.
## The path
```bash
git clone https://github.com/openpay/openpay.git
cd openpay
cargo build --release -p op-server -p op-cli
```
`op-server` is the HTTP daemon; `op-cli` builds an `op` binary you
can use to talk to it. (The CLI is being built in parallel — if
your checkout doesn't have it yet, `cargo build --release -p op-server`
alone is enough; you can hit the API with `curl`.)
In one terminal:
```bash
./target/release/op-server &
# Output: op-server starting, addr=127.0.0.1:8080
```
In another:
```bash
./target/release/op health
# {"status":"ok"}
./target/release/op readiness
# {"status":"ready","stores":{...}}
```
Or with `curl` if the CLI isn't built yet:
```bash
curl http://127.0.0.1:8080/health
curl http://127.0.0.1:8080/readiness
```
## Round-trip a refund
```bash
./target/release/op refund create \
--payment-id pay_demo \
--amount-minor 1000 \
--currency USD \
--external-id "smoke-$(date +%s)"
# {"id":"rfnd_…","status":"Requested","amount":{...},…}
./target/release/op refund get rfnd_…
# Same record echoed back.
```
The refund lives in the in-memory graph; restarting `op-server`
drops it. To persist across restarts, see
[`README.md` §3 — persisting to a `.graph` file](README.md#3-persist-to-a-real-graph-file).
## Shut it down
```bash
kill %1 # if you backgrounded it with `&`
# Or Ctrl-C in the op-server terminal.
```
The binary installs both SIGINT (Ctrl-C) and SIGTERM handlers (see
`crates/op-server/src/main.rs::shutdown_signal`) and drains
in-flight requests on either signal.
## Next steps
| Want | Read |
|---|---|
| TLS in front of op-server | `README.md` §2 + `Caddyfile.sample` |
| Persistence | `README.md` §3 |
| Auth + rate limit | `README.md` §4 |
| Outbound webhooks | `README.md` §5-6 |
| FX quotes | `README.md` §7 |
| Crypto rail | `README.md` §8 |
| Run under systemd | `openpay.service` |
| Backup the graph file | `backup.md` |
| Wire logs to a backend | `monitoring.md` |