A rich featureset for a differentiated .NET job orchestrator. Find the orchestration features you need, create your automations, set and forget.
Didact is a prebuilt platform, not just a library. No more needless application wiring for worker host apps or UIs. An orchestrator should provide this ahead of time.
Designed to be self-hosted from day one. You take Didact's prebuilt components and host them on your own infrastructure. Your Windows servers, your Linux VMs, your cloud tenants, not mine.
Since Didact is self-hosted, you own all the data and network security. License keys execute periodic checks for the paid commercial perks only, all else stays in your infrastructure. No security questionnaire needed.
Perhaps the defining characteristic and differentiator in the entire Didact plaform: background jobs - called Flows - are defined in dedicated .NET class libraries. Termed flow libraries, they are the perfect components to define and centralize background jobs into, yet until Didact no one has bothered to utilize them to their fullest potential.
Flow libraries are registered and consumed in Didact Engine by loading them as isolated runtime plugins. Each flow library has its own corresponding plugin, complete with an isolated AssemblyLoadContext and an independent dependency injection container. You reap the benefits of job isolation without incurring the cost of needless complexity or unnecessary host apps.
Didact provides a prebuilt execution engine - an actual app, not a NuGet package - that handles the complexity of running and managing background jobs and workflows. Built purely in C#, it yields all the modern advantages of a .NET host app like full async support, multithreadedness and parallelism, and a dedicated thread pool.
Didact Engine exposes a REST API for managing flows, deployments, and executions. No need to wire up a separate API server.
Because it's a stateless, 12-factor app, run Didact Engine as a single node or horizontally scale it with automatic coordination and distributed locking via the SQL database. No extra configuration needed, perks of a stateless design and database coordination.
Didact UI is a prebuilt, standalone web dashboard application. Beautiful, sleek modern dashboard to satisfy all your monitoring requirements, from granular execution details to environment report summaries.
Powered by flagship relational databases like SQL Server and PostgreSQL for convenient metadata persistent storage and queue orchestration. And yes, databases are excellent queues - the internet mantra is quite wrong.
The Didact data model has a highly-relational design, so it collects and reports on extensive metadata - as a proper job orchestrator should. And if you're an analytics person, you have a strong database design to extract data from.
Background jobs and workflows are defined inside of dedicated class libraries, called flow libraries. You can have any number of flow libraries; organize them by environment, by team, by app, whatever you fancy.
As mentioned above, each flow library is isolated and self-contained with its own corresponding plugin and dependency injection container in Didact Engine. This makes multi-library maintenance convenient for you. For example, if a dependency changes for a flow library, the only potentially-affected flows are the ones inside of that flow library.
Flow libraries are extremely easy to create. Didact offers a .NET template that, with a simple terminal command, creates a new flow library project with a preconfigured .csproj optimized for plugin usage.
Didact is designed from the ground up for C# developers only — not a Java or Python platform with a .NET SDK bolted on. Rather than be a polygot orchestrator, Didact aims to be the single best .NET offering in the ecosystem.
Background jobs in Didact are called flows. Flows are defined by implementing the IFlow interface on a C# class. The interface is very lean and requires you to implement only two methods: ConfigureAsync for flow registration and ExecuteAsync for the actual job logic.
A flow's ConfigureAsync method offers a method-injected context object that exposes a fluent API to set metadata and orchestration behavior. Instead of restrictive attribute brackets on your flow classes, you have the convenience and dynamic nature of a fluent API to configure your flow in any way.
Define cron, interval, and one-time schedules directly in code with a developer-friendly API.
Built around durable execution principles with retries, resumability, and persistent execution history.
Configure fixed delay and exponential backoff strategies to keep critical workloads moving.
Break workflows into observable execution steps for better visibility, debugging, and recovery.
Safely evolve your automation over time with deployment-aware flow and library versioning.
Compose larger automations from smaller building blocks with support for parent and child flow orchestration.
Suspend and resume long-running workflows without keeping processes alive or wasting resources.
Install, configure, deploy, and manage the Didact platform entirely from the terminal with an official CLI. Install the CLI with one simple install script, or download the binary and add to PATH. The CLI is separate from the other platform apps to minimize the memory footprint.
Install and run Didact Engine, Didact UI, and Didact CLI with lightweight, self-contained, single-file, crossplatform binaries optimized for simple deployments. One install script for the CLI, one CLI command for the engine and UI installs.
Since Didact UI and Didact Engine are separate binaries, configure your infrastructure however you want. Run them together on the same server or minimize the UI memory footprint and serve it on a smaller host or container.
A CLI, two binaries, and a SQL database: that's all you need to run Didact. No message brokers, no caches, no complex service dependencies. Didact was architected to be self-hosted from day one, so minimal infrastructure was non-negotiable.
Didact Engine stays up and running while you deploy job definitions. No needless worker service interruptions or unnecessary downtime for some miniscule job update.
Job defintions and orchestration infrastructure are ACTUALLY decoupled like they should've been eons ago. Didact is designed to run in long-lived environments, ensuring stability and reliability for extended periods.
Since Didact is long-lived and always-on, CI/CD pipelines are dead simple. No complex orchestration or deployment strategies required, just deploy your flow libraries with one CLI command.
The deploy CLI commands offer convenient wrappers for your flow library deployment sources. Whether you deploy to the local filesystem, an S3 bucket, a GitHub Artifact, or wherever else, the CLI will simplify the would-be-complicated-workflow for you in one easy command.
Didact's data model supports multitenancy for metadata, queues, and all orchestration using Didact Environments - logical boundaries built into the database layer. Use one set of infrastructure while maintaining separation between development, staging, and production and save on your infrastructure bill.
Setup and modify the behavior of the platform apps with a central configuration file. Config file supports smart syntax, secrets, and environment variables.
For complex, predefined deployment targets - across environments, across deployment sources, using dynamic secrets or variables, whatever - Didact offers an optional deployment config file at the flow library level to wire up infinite deployment paths.
Open source licensed core with commercial enhancements. The open core business model is the ideal middle ground for Didact and its end users: a monetized commercial offering ensures the longevity and sustainability of the product for years to come. Not to mention, Didact is my dream product that I've always wanted to create.
Didact is a great companion app to include in your open source project for background job and workflow needs. The Community version likely meets most of your orchestration requirements. While a commercial license key is not open-sourceable, it's perfect if you offer cloud hosting for your OSS and still want the extra commercial perks.
In the age of VC money, overhiring, and too many AI assistants, Didact stands out because I (the founder) personally curate and lead every aspect of the business. My mind is deeply interwoven into the source code, the marketing, and the docs with years of planning and meticulous details baked into every facet. Didact has taken me a miserable amount of time to curate, and that's because I refuse to settle on my product vision and code quality.
As Didact's founder, I regularly participate in build in public updates. I frequently write blog posts, make YouTube shorts and videos, host YouTube livestreams, and communicate on the socials and Discord channel. Drop in, I'd love to get to know you and your company!