This is the fastest way to get a working Orchestrator. Run the wizard, answer the prompts, and you'll have a running API in under 2 minutes.
Set up OFFER-HUB Orchestrator locally — fast path with the setup wizard or manual Docker setup.
Choose the setup path that fits your workflow:
| Option | Best for | Time |
|---|---|---|
| Option 1 — Setup wizard | Hackathons, first-time setup, staging/production | ~2 min |
| Option 2 — Full local setup | Custom environments, CI/CD pipelines, advanced control | ~10 min |
| Option 3 — SDK only | Integrating with an existing Orchestrator instance | ~1 min |
create-offer-hub-orchestrator is a one-command interactive setup wizard. It configures your .env, runs database migrations, and bootstraps the platform user — so you can skip the manual steps entirely. For a full breakdown of each prompt, generated environment files, and the platform bootstrap step, see the Scaffolder Guide.
This is the fastest way to get a working Orchestrator. Run the wizard, answer the prompts, and you'll have a running API in under 2 minutes.
git clone https://github.com/OFFER-HUB/OFFER-HUB.git && cd OFFER-HUB && npm installnpx create-offer-hub-orchestratorThe wizard prompts for:
| Prompt | Description |
|---|---|
| API Port | Default: 4000 |
| PostgreSQL URL | Use the pooler URL (port 6543) for Supabase |
| Redis URL | redis:// or rediss:// for TLS connections |
| Payment provider | crypto (Stellar/USDC, default) or airtm |
| Stellar network | testnet for development, mainnet for production |
| Trustless Work API key | From dapp.trustlesswork.com |
| Trustless Work Webhook Secret | From your TW dashboard |
| Public URL | Your server's HTTPS URL (used for webhook callbacks) |
| Run migrations? | Yes — applies all pending DB migrations |
| Generate API key? | Optional — requires the server to be running |
The wizard then automatically:
OFFERHUB_MASTER_KEYWALLET_ENCRYPTION_KEY (crypto mode).env with all values filled inprisma migrate deploynpm run bootstrap — creates the platform Stellar wallet and writes PLATFORM_USER_ID into .envnpm run devThe API starts on http://localhost:4000.
curl http://localhost:4000/api/v1/healthBack up WALLET_ENCRYPTION_KEY immediately. If you lose it, all user wallets become unrecoverable. Store it in a secrets manager (Railway Variables, AWS Secrets Manager, or 1Password). Do not commit .env to git.
The wizard is idempotent for bootstrap — safe to re-run. It will ask before overwriting an existing .env. Run with testnet first; switch to mainnet only when ready for production.
Use this path when you need full manual control — custom Docker networks, CI/CD pipelines, or environments where running an interactive wizard isn't appropriate.
git clone https://github.com/OFFER-HUB/OFFER-HUB.git && cd OFFER-HUBnpm installStart PostgreSQL and Redis using Docker Compose:
docker compose up -dThis starts:
54326379Copy the example environment file:
cp .env.example .envEdit .env with your values. The minimum required variables for local development:
Generate your WALLET_ENCRYPTION_KEY with: openssl rand -hex 32
Store this key securely — losing it makes wallet private keys unrecoverable.
Generate the Prisma client and apply migrations:
npm run prisma:generate && npm run prisma:migrateCreate the internal platform user required for escrow operations:
npm run bootstrapnpm run devThe API starts on http://localhost:4000.
Test that everything is working:
curl http://localhost:4000/api/v1/healthYou should see:
If you want to integrate with an existing OFFER-HUB Orchestrator instance (hosted by you or a partner), you only need the SDK:
npm install @offerhub/sdkThen configure it in your code:
See the SDK Guide for complete documentation.
Once the server is running, create an API key using your master key.
The @offerhub/cli is the fastest way to create an API key:
npm install -g @offerhub/cliofferhub keys createThis runs an interactive wizard that prompts for scopes and key name. See the CLI Guide for all available commands.
Response:
Save the api_key value immediately — it's only shown once. Use this key for all subsequent API calls.
Make sure Docker is running and the containers are up:
docker compose psIf containers aren't running, start them:
docker compose up -dIf you see migration errors, try resetting the database:
npm run prisma:migrate resetThis deletes all data. Only use in development.
If port 4000 is already in use, change the PORT in your .env file or stop the conflicting service.
create-offer-hub-orchestrator