No description
  • Go 98.6%
  • Makefile 0.8%
  • Dockerfile 0.6%
Find a file
zemdregon 6037f9d643
Some checks are pending
CI / lint (push) Waiting to run
CI / test (push) Waiting to run
CI / build (push) Waiting to run
CI / docker (push) Blocked by required conditions
chore(deps): bump docker/setup-buildx-action to v4
Self-hosted CI workflows only.
2026-08-10 18:19:23 -05:00
.github/workflows chore(deps): bump docker/setup-buildx-action to v4 2026-08-10 18:19:23 -05:00
cmd/module feat: workflow dispatch/seed definitions and module alignment 2026-07-22 19:10:04 -05:00
deploy feat: workflow dispatch/seed definitions and module alignment 2026-07-22 19:10:04 -05:00
internal fix(ci): self-hosted runners; packaging v0.1.6 2026-08-10 10:34:20 -05:00
.env.example feat: workflow dispatch/seed definitions and module alignment 2026-07-22 19:10:04 -05:00
CHANGELOG.md fix(ci): self-hosted runners; packaging v0.1.6 2026-08-10 10:34:20 -05:00
CONTRIBUTING.md feat: workflow dispatch/seed definitions and module alignment 2026-07-22 19:10:04 -05:00
Dockerfile fix: align with template patterns (contracts, MinCoreVersion, Dockerfile, main.go, deploy) 2026-06-13 13:42:47 -05:00
go.mod Expose max_parallel via RegisterSettings mesh. 2026-08-10 02:28:03 -05:00
go.sum Expose max_parallel via RegisterSettings mesh. 2026-08-10 02:28:03 -05:00
LICENSE feat: workflow dispatch/seed definitions and module alignment 2026-07-22 19:10:04 -05:00
Makefile feat: initial implementation 2026-06-13 13:24:15 -05:00
MEDIA-DAGS.md Wire media-transcode DAG to Analyze/Enqueue and transcoder capability. 2026-08-09 21:43:51 -05:00
muxcore.json fix(ci): self-hosted runners; packaging v0.1.6 2026-08-10 10:34:20 -05:00
README.md docs: release.yml, media DAG docs, GPL license note (#7) 2026-08-09 20:00:06 -05:00
SECURITY.md fix: align with template patterns (contracts, MinCoreVersion, Dockerfile, main.go, deploy) 2026-06-13 13:42:47 -05:00

Workflow Tapestry

Multi-step DAG workflow engine for MuxCore.

Overview

Workflow Tapestry is a MuxCore sidecar module that provides a WorkflowEngine contract (capability workflow.engine). It orchestrates multi-step workflows with declarative DAG dependencies, bounded parallel waves, exponential retry backoff, and optional IdempotencyProvider dedup via the mesh.

On start, the module seeds built-in definitions from internal/definitions/ (movie-request, tv-request, music-request, book-request, media-transcode, media-migrate, media-backup, library-scan). Steps dispatch to handlers by module ID or capability via the mesh.

Mesh method adapters: each step must resolve to a real RPC method. Prefer meta.method on the step (seeded for movie-request / tv-request). Fallback table maps known step names (metadata-lookupSearch, downloadAddTorrent, library-importImportPath, notifyNotify). Unknown steps without meta.method fail instead of calling mesh.Call with the bare step name.

MVP host: start with MVP_ENABLE_WORKFLOW_TAPESTRY=1 (see mvp/run-host.sh).

Media DAGs: see MEDIA-DAGS.md for movie-request / tv-request (and scaffold definitions).

Configuration

Environment Variable Default Description
WORKFLOW_GRPC_ADDR :9603 gRPC listen address
MUXCORE_GRPC_ADDR (required to run) Core mesh address (--muxcore-mesh-addr)
MUXCORE_MODULE_ID workflow-tapestry Module identity override (--muxcore-module-id)
MUXCORE_INSECURE_DISABLE_TLS unset Set true for insecure gRPC (dev only)

Usage

  1. Register a workflow definition with steps and dependencies (or use a seeded one).
  2. Start a run by definition ID.
  3. Monitor progress via Status/ListRuns.
  4. Cancel, pause, or resume runs.

API

The module exposes the WorkflowService gRPC service:

  • RegisterDefinition / RemoveDefinition / GetDefinition / ListDefinitions
  • Run / Status / Cancel / Pause / Resume / ListRuns

Build

make build
make test
make docker

License

GPL-3.0 (see LICENSE).