Skip to main content

Setting Up a Local Development Environment

This guide walks you through setting up a complete SIROS ID development environment on your local machine. By the end, you'll have the full wallet stack running locally with hot-reload for frontend and backend development.

Prerequisites

  • Git — to clone the repositories
  • Docker and Docker Compose (v2) — to run the services
  • GNU Make — to drive the environment

For building from source you'll additionally need:

  • Node.js 20+ — for the wallet frontend
  • Go 1.22+ — for the wallet backend and go-trust
No source needed for golden releases

If you just want to run the stack without building from source, use GOLDEN=yes — it pulls pre-built container images and only requires Docker. See Golden Releases below.

Quick Bootstrap

The fastest way to get started is the bootstrap script, which clones all required repositories and checks out the correct branches:

curl -fsSL https://raw.githubusercontent.com/sirosfoundation/sirosid-dev/main/install.sh | bash

This clones the following repositories into the current directory:

RepositoryBranchDescription
sirosid-devmainDev environment orchestration (Makefile + Docker Compose overlays)
wallet-frontendrelease/sirosidReact PWA wallet UI
go-wallet-backendmainGo wallet backend
go-trustmainAuthZEN trust PDP
wallet-commonrelease/sirosidShared TypeScript types
vcmainCredential issuer, verifier, API gateway, registry

After cloning, start the stack:

cd sirosid-dev
make up

Starting the Stack

All stack operations go through make up with options:

# Default: wallet frontend + backend + go-trust (allow-all)
make up

# Add production-like VC services (issuer, verifier, API gateway, registry)
make up VC=yes

# Use whitelist trust mode (only configured issuers/verifiers are trusted)
make up PDP=whitelist VC=yes

# Use pre-built golden release images (no local source build)
make up GOLDEN=yes

Available Options

OptionValuesDefaultDescription
PDP=allow, whitelist, deny, mockallowTrust PDP mode
VC=yes / 1offEnable VC services
TRANSPORT=wmp, httpwebsocketTransport protocol
CONFORMANCE=yes / 1offEnable OpenID Conformance Suite
GOLDEN=yes / <release-name>offUse pre-built images

Common Commands

make status        # Check service health
make status-vc # Check VC service health (when VC=yes)
make logs # Tail Docker logs
make down # Stop everything
make help # Full option reference

Service Endpoints

Once running, the following services are available on localhost:

ServiceURLDescription
Wallet Frontendhttp://localhost:3000Web wallet UI
Wallet Backend APIhttp://localhost:8080Backend REST API
Admin APIhttp://localhost:8081Tenant and registration management
Wallet Enginehttp://localhost:8082Credential engine
VC Issuerhttp://localhost:9000OpenID4VCI issuer (when VC=yes)
VC Verifierhttp://localhost:9001OpenID4VP verifier (when VC=yes)
VC API Gatewayhttp://localhost:9003OAuth2 AS + credential metadata (when VC=yes)

Golden Releases

Golden releases let you run the stack using pre-built, tested container images without cloning or building any source code:

make up GOLDEN=yes          # Use the default golden release
make up GOLDEN=beta_r2 # Use a specific named release

Golden images are pulled from ghcr.io/sirosfoundation/*. You may need to authenticate with docker login ghcr.io if the images require access.

VC services build from source

When using GOLDEN=yes VC=yes, wallet and go-trust services use golden images but VC services are still built from local source due to config format differences between releases.

Updating All Repos

To force-update all repositories to their default upstream branches:

cd sirosid-dev
make update

This fetches and hard-resets each repo to its upstream branch (main or release/sirosid as appropriate).

Directory Layout

After bootstrapping, your workspace looks like this:

your-workspace/
├── sirosid-dev/ # This repo — Makefile + Docker Compose overlays
├── wallet-frontend/ # React PWA (release/sirosid branch)
├── go-wallet-backend/ # Go wallet backend
├── go-trust/ # AuthZEN trust PDP
├── wallet-common/ # Shared TypeScript types (release/sirosid branch)
└── vc/ # VC services (issuer, verifier, apigw, registry)

Next Steps