Skip to content

Installation

Prerequisites

DependencyVersionPurpose
Go1.24+Build the CLI and Lambda handlers
Docker & Docker ComposeLatestLocal development (Redis + Postgres)
Redis7+Local provider backend
Terraform1.5+AWS deployment (optional)
AWS CLI v2LatestAWS deployment (optional)

Build from Source

Clone the repository and build the CLI binary:

git clone https://github.com/dwsmith1983/interlock.git
cd interlock
make build

This produces the interlock binary in the project root.

Build Targets

TargetDescription
make buildBuild the interlock CLI
make testRun all tests
make test-unitUnit tests only
make test-integrationIntegration tests (requires DynamoDB Local)
make lintRun golangci-lint
make fmtFormat source code
make distCross-compile for linux/amd64, linux/arm64, darwin/amd64, darwin/arm64
make build-lambdaBuild all 5 Lambda handler binaries

Lambda Binaries

The AWS deployment uses 5 Lambda handlers, each built as a separate binary:

make build-lambda

This runs deploy/build.sh and produces bootstrap binaries for:

HandlerPathPurpose
stream-routercmd/lambda/stream-router/DynamoDB Stream event routing
evaluatorcmd/lambda/evaluator/Single trait evaluation
orchestratorcmd/lambda/orchestrator/Multi-action state machine dispatch
triggercmd/lambda/trigger/Pipeline trigger execution
run-checkercmd/lambda/run-checker/Poll running job status

Project Layout

pkg/types/           Public domain types
internal/provider/   Storage interface + Redis/DynamoDB implementations
internal/engine/     Readiness evaluation engine
internal/evaluator/  Trait evaluator runners
internal/trigger/    Pipeline trigger execution
internal/alert/      Alert dispatching
internal/schedule/   Schedule, SLA, and retry utilities
internal/watcher/    Reactive evaluation loop (local mode)
internal/archiver/   Background Redis → Postgres archival
internal/lambda/     Shared Lambda initialization
cmd/lambda/          5 Lambda handler entry points
deploy/terraform/    AWS infrastructure as code
deploy/statemachine.asl.json  Step Function ASL definition