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
Thedocker-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:4. Verify the installation
Confirm that Matcher is running by listing configuration contexts (the call returns an empty array on a fresh install):Docker compose services
The defaultdocker-compose.yml includes:
Development with hot reload
For active development, use:Kubernetes / helm (production)
Production deployments should use the official Helm chart.
Prerequisites
- Kubernetes 1.28+
- Helm 3.12+
kubectlconfigured for the target cluster
1. Create a namespace
2. Configure values
Create avalues.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:
Troubleshooting
Common issues
Connection refused to PostgreSQL
Connection refused to PostgreSQL
- Cause: PostgreSQL is not running or unreachable.
- Resolution:
- Verify PostgreSQL is running:
docker-compose ps postgres - Check connection values in
.env - Test connectivity:
nc -zv localhost 5432 - Review logs:
docker-compose logs postgres
Redis connection timeout
Redis connection timeout
- Cause: Redis is not running or credentials are incorrect.
- Resolution:
- Verify Redis is running:
docker-compose ps redis - Confirm
REDIS_PASSWORD - Test connectivity:
redis-cli -h localhost ping
RabbitMQ queues not created
RabbitMQ queues not created
- Cause: RabbitMQ is still initializing or the virtual host is missing.
- Resolution:
- Wait until RabbitMQ is healthy
- Access the management UI at http://localhost:15672
- Verify
RABBITMQ_VHOST
Authentication errors
Authentication errors
- Cause: Auth service is unreachable or the token is invalid.
- Resolution:
- Verify
PLUGIN_AUTH_ADDRESS - Disable auth for development:
PLUGIN_AUTH_ENABLED=false - Review auth service logs
Migration failed
Migration failed
- Cause: Database migrations could not be applied.
- Resolution:
- Check migration status:
make migrate-status - Review migration logs
- Apply migrations manually:
make migrate-up - Inspect the
schema_migrationstable if needed
Database migration errors after upgrading from main
Database migration errors after upgrading from main
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.

