Self-hosted orchestration

Reliable scheduled work, on infrastructure you control.

Chronoverse is a distributed scheduler for heartbeat checks and container workloads, built around durable state, replay-safe events, searchable logs, and observable execution.

scripts/k8s/setup.sh --mode production --context <context>
Chronoverse astronaut with an hourglass visor
workflow.buildcompleted
job.leaserenewed · 30s
outbox.publishkafka/jobs
trace.contextpropagated
5gRPC domains
6worker roles
4Kafka topics
1+runtime nodes
Product

One lifecycle from schedule to evidence.

Define work once, run it automatically or on demand, and keep the operational trail needed to understand what happened.

Scheduled workflows
Run interval-based workloads with generation guards and asynchronous build preparation.
Manual runs
Dispatch immediate jobs through the same replay-safe lifecycle as automatic scheduling.
Container execution
Execute Docker-backed commands through runtime ownership, node health, and constrained socket proxies.
Heartbeat checks
Model lightweight service checks separately from log-producing container workloads.
Live logs
Stream running stdout and stderr to the dashboard over Server-Sent Events.
Retained search
Store logs in ClickHouse, search with Meilisearch, and download safely filtered output.
Analytics
Track workflow and job totals, log volume, and accumulated execution duration.
Notifications
Surface workflow and job state changes with replay-safe notification identity.
Engineering

Synchronous ownership. Asynchronous progress.

The public API stays responsive through gRPC domain boundaries while Kafka workers route delayed, distributed, and failure-prone execution through runtime-owned Docker nodes.

HTTP gatewaySessions · CSRF · REST · SSE
gRPC domains
usersworkflowsjobsnotificationsanalytics
Kafka workers
schedulerworkflowexecutionjob logsanalyticsoutbox
Runtime data plane
runtime-agentDocker proxyruntime_nodes
infrastructure
PostgreSQLClickHouseRedisKafkaMeilisearchLGTM
Synchronous domain ownership with asynchronous, replay-safe orchestration.
Event flow

Every stage has an owner and a recovery path.

  1. 01
    Command

    The gateway validates session, CSRF state, input, and idempotency.

  2. 02
    Commit

    The domain service writes state and an outbox event atomically.

  3. 03
    Dispatch

    The relay publishes to Kafka and partition workers take ownership.

  4. 04
    Execute

    An execution worker claims a lease, receives a runtime endpoint, runs the container, and renews ownership.

  5. 05
    Observe

    Logs, notifications, analytics, traces, and terminal state converge.

Reliability model

Failure is represented in state, not hidden behind retries.

Chronoverse assumes messages repeat, processes restart, and ownership expires. Correctness comes from explicit invariants at every boundary.

Explore replay safety
Idempotency keys

Retry the same command without duplicating a workflow or manual job.

Transactional outbox

Commit domain state and publication intent in one PostgreSQL transaction.

Workflow generations

Reject build, schedule, termination, and deletion work from old definitions.

Durable job leases

Prevent stale workers from completing work after ownership has moved.

Deterministic events

Deduplicate notifications, analytics, and retained log side effects.

Partition commit policy

Advance Kafka offsets only after the selected success or retry outcome.

PostgreSQL
Transactional state, idempotency, outbox rows, leases, retries, and analytics.
ClickHouse + Meilisearch
Ordered retained output with low-latency text search and safe highlights.
Redis
Sessions, cached reads, live log delivery, and runtime-node-scoped image-pull coordination.
TLS + OpenTelemetry
mTLS service communication and trace propagation across HTTP, gRPC, and Kafka.
Operations

Built to be inspected while it runs.

Health checks establish startup order. LGTM receives traces, metrics, and logs. Recovery loops make abandoned work visible and bounded.

$ kubectl -n chronoverse get deploy,dsoutbox-relay 2/2 availableexecution-worker 2/2 availabledocker-proxy ds runtime-agent sidecars readyjoblogs-processor 2/2 availableserver 2/2 available
47 authored guides · 23 generated API operations · static HTML

The engineering reference lives with the code.

MDX content, OpenAPI contracts, navigation, validation, and search are built in this repository and deployed with the landing page.