Azums is a durable execution platform for supported intents. It provides ingress, durable queueing, execution orchestration, callbacks, receipts, replay, and status visibility across Solana and Paystack execution rails.
Full product and technical documentation:
Implemented components in this repo:
- Ingress API (
apps/ingress_api) - Execution Core (
crates/execution_core) - Adapter Contract (
crates/adapter_contract) - Solana Adapter (
crates/adapter_solana) - Paystack Adapter (
crates/adapter_paystack) - Callback / Delivery Core (
crates/callback_core) - Status API / Query Layer (
crates/status_api) - RPC Layer (
crates/rpc_layer) - Reverse Proxy (
crates/reverse-proxy) - Worker runtime (
apps/admin_cli) - Operator UI (
apps/operator_ui) - Shared Types (
crates/shared_types) - Observability Helpers (
crates/observability)
- Client sends request or webhook to reverse proxy.
- Reverse proxy forwards
/api/*and/webhooks/*to ingress. - Ingress authenticates, validates, normalizes, and submits durable intent.
- Execution core records submission, routes adapter, enqueues dispatch job.
- Worker leases dispatch jobs and invokes adapter.
- Adapter returns structured normalized outcomes.
- Execution core records transitions + receipts and schedules retry or terminal state.
- Callback jobs are enqueued only after terminal durable state is written.
- Callback worker delivers outbound callbacks and records delivery attempts/history.
- Status API serves request state, receipt, history, callback history, and replay actions.
Use the pre-wired stack in deployments/compose:
cd deployments/compose
cp .env.example .env
docker compose upDefault public entrypoint: http://localhost:8000
Important default routing:
/api/*-> ingress/webhooks/*-> ingress/status/*-> status API poolREVERSE_PROXY_STRIP_STATUS_PREFIX=trueby default, so/status/requests/:idbecomes/requests/:idupstream- Solana execution is customer-signed only; direct API and webhook flows should target your configured non-devnet Solana RPC
- Playground is the only Azums surface that should run against Solana devnet
Submit a request:
curl -X POST "http://localhost:8000/api/requests" \
-H "authorization: Bearer dev-ingress-token" \
-H "x-tenant-id: tenant_demo" \
-H "x-principal-id: ingress-service" \
-H "x-submitter-kind: internal_service" \
-H "content-type: application/json" \
-d '{
"intent_kind":"solana.transfer.v1",
"payload":{
"intent_id":"intent_demo_001",
"intent_type":"transfer",
"to_addr":"11111111111111111111111111111111",
"amount":1,
"signed_tx_base64":"REPLACE_WITH_CUSTOMER_SIGNED_TX_BASE64"
}
}'Replace REPLACE_WITH_CUSTOMER_SIGNED_TX_BASE64 with a real customer-signed Solana
transaction encoded as base64 for the network your worker is configured to use.
Devnet is reserved for Playground sandbox flows.
Query status:
curl "http://localhost:8000/status/requests/<intent_id>" \
-H "authorization: Bearer dev-status-token" \
-H "x-tenant-id: tenant_demo" \
-H "x-principal-id: demo-operator" \
-H "x-principal-role: admin"Replay:
curl -X POST "http://localhost:8000/status/requests/<intent_id>/replay" \
-H "authorization: Bearer dev-status-token" \
-H "x-tenant-id: tenant_demo" \
-H "x-principal-id: demo-operator" \
-H "x-principal-role: admin" \
-H "content-type: application/json" \
-d '{"reason":"manual replay test"}'Runnable end-to-end examples live in examples/:
examples/solana_flow(API submit, status, receipt, history, replay)examples/webhook_to_solana(webhook submit routed to Solana intent)examples/paystack_refund_flow(API submit for Paystack refund create, then status, receipt, history, replay)examples/paystack_webhook_evidence(Paystack signed webhook evidence ingestion and correlation)examples/agent_solana_transfer(agent runtime structured Solana transfer with customer-signed payload)examples/agent_paystack_refund(agent gateway refund flow through the Paystack rail)
Both examples expect a customer-signed Solana transaction payload.
- Ingress API:
apps/ingress_api/README.md - Execution Core:
crates/execution_core/README.md - Status API:
crates/status_api/README.md - Reverse Proxy:
crates/reverse-proxy/README.md - Compose stack:
deployments/compose/README.md - Operator UI:
apps/operator_ui/README.md - Shared Types:
crates/shared_types/README.md - Config Pack:
crates/config/README.md - Observability:
crates/observability/README.md
- Compose (source-mounted dev stack):
deployments/compose/README.md - Docker (prebuilt images):
deployments/docker/README.md - Kubernetes (baseline manifests):
deployments/k8s/README.md - CI image/deploy workflows:
.github/workflows/docker-build.yml,.github/workflows/docker-publish.yml,.github/workflows/k8s-deploy.yml