Skip to main content
Matcher automates financial reconciliation across multiple data sources, eliminating manual matching work and providing a full audit trail for every transaction. Setting up Matcher means putting in place the foundation for exception management, compliance reporting, and operational visibility. This guide walks you through deploying Matcher in development and production environments.
Matcher is available to licensed customers; its repository is maintained internally. The instructions below assume you already have access to the required Matcher project files.

Docker compose (development)


Docker Compose is the recommended approach for local development and testing.

1. Access the Matcher project

From the Matcher project directory:

2. Configure the environment

The docker-compose.yml file includes sensible defaults for local development. You can override any value by setting environment variables in your shell or by creating a .env file in the project root. Refer to Environment variables for details on available settings.

3. Start services

Start the required infrastructure services:
Wait until all services report a healthy status:
Start the Matcher application:
To start all services at once:

4. Verify the installation

Confirm that Matcher is running by listing configuration contexts (the call returns an empty array on a fresh install):
If the call succeeds, Matcher’s API and its dependencies (PostgreSQL, Redis, RabbitMQ, object storage) are reachable.

Docker compose services

The default docker-compose.yml includes:

Development with hot reload

For active development, use:
This starts Matcher with live reload enabled using Air.

Kubernetes / helm (production)


Production deployments should use the official Helm chart.

Prerequisites

  • Kubernetes 1.28+
  • Helm 3.12+
  • kubectl configured for the target cluster

1. Create a namespace

2. Configure values

Create a values.yaml file with your deployment configuration:

3. Create secrets

Create Kubernetes secrets for sensitive credentials:

4. Install the chart

5. Verify the deployment

Upgrading

To upgrade an existing deployment:

Environment variables


Matcher is configured entirely through environment variables.

Application

CORS

Database (PostgreSQL)

Database replica (PostgreSQL)

Cache (Redis)

Messaging (RabbitMQ)

Authentication

Object storage (S3-compatible)

Observability

TLS

Rate limiting

Swagger

Idempotency

Deduplication

Outbox

Workers

Scheduler

Archival

Fetcher / Discovery

These settings control Discovery, which reads from external databases through an in-process extraction engine embedded in Matcher — not a separate networked service. See Discovery for how it works.

Infrastructure

For multi-tenant deployment settings, see Multi-Tenant Mode. For runtime configuration management, see Runtime Configuration (Systemplane).

Verify the installation


Validate that Matcher is operating correctly by exercising the API:
A successful response confirms that the API and its dependencies (database, cache, message broker, object storage) are reachable. Kubernetes liveness and readiness probes are configured at the cluster level for orchestration; you do not need to call them directly.

Troubleshooting


Common issues

  • Cause: PostgreSQL is not running or unreachable.
  • Resolution:
  1. Verify PostgreSQL is running: docker-compose ps postgres
  2. Check connection values in .env
  3. Test connectivity: nc -zv localhost 5432
  4. Review logs: docker-compose logs postgres
  • Cause: Redis is not running or credentials are incorrect.
  • Resolution:
  1. Verify Redis is running: docker-compose ps redis
  2. Confirm REDIS_PASSWORD
  3. Test connectivity: redis-cli -h localhost ping
  • Cause: RabbitMQ is still initializing or the virtual host is missing.
  • Resolution:
  1. Wait until RabbitMQ is healthy
  2. Access the management UI at http://localhost:15672
  3. Verify RABBITMQ_VHOST
  • Cause: Auth service is unreachable or the token is invalid.
  • Resolution:
  1. Verify PLUGIN_AUTH_ADDRESS
  2. Disable auth for development: PLUGIN_AUTH_ENABLED=false
  3. Review auth service logs
  • Cause: Database migrations could not be applied.
  • Resolution:
  1. Check migration status: make migrate-status
  2. Review migration logs
  3. Apply migrations manually: make migrate-up
  4. Inspect the schema_migrations table if needed
If upgrading from the main branch, migrations 000020 and 000021 run automatically. Migration 000020 renames systemplane configuration keys for cross-product standardization. Migration 000021 converts the external_system column from an enum type to VARCHAR(255), allowing arbitrary external system identifiers. If migrations fail, check the schema_migrations table and ensure no conflicting manual changes exist.

Viewing logs

Debug mode

Enable debug logging for additional visibility:

Next steps


Quick start

Run your first reconciliation.

Configuration

Configure contexts, sources, and match rules.