Skip to content

df49b9cd/Odin

Repository files navigation

Odin - Hugo Durable Orchestrator

.NET Build Status License

A Temporal/Cadence-style workflow orchestration platform built on Hugo 1.0.0 concurrency primitives.

Status: Phase 1 - Initial Development
The project structure is established. Core implementation is in progress.

What is Odin?

Odin provides durable workflow execution with history replay and distributed task routing. It combines:

  • Hugo's elegant concurrency model (WaitGroup, ErrGroup, Channels, Result)
  • Temporal-style workflow orchestration (durable execution, history replay, task queues)
  • Production-ready observability (OpenTelemetry, Prometheus, Grafana)
  • .NET 10 modern runtime with native performance

Quick Links

Key Features

Durable Workflows - Workflows survive process restarts and replay from history
Deterministic Execution - Guaranteed replay consistency using Hugo primitives
Task Distribution - Efficient lease-aware task routing with heartbeats
Advanced Visibility - SQL or Elasticsearch-based workflow search
Full Observability - OpenTelemetry traces, Prometheus metrics, structured logs
Multi-tenancy - Namespace isolation with RBAC
Production Ready - mTLS, monitoring, operational tooling

Project Structure

Odin/
├── src/                        # Source code
│   ├── Odin.Contracts/        # Shared DTOs and contracts
│   ├── Odin.Core/             # Core utilities
│   ├── Odin.Persistence/      # Data access layer
│   ├── Odin.ControlPlane.Api/ # REST API (port 8080)
│   ├── Odin.ControlPlane.Grpc/# gRPC service (port 7233)
│   ├── Odin.ExecutionEngine.*/# History, Matching, Workers
│   ├── Odin.Sdk/              # Worker SDK
│   ├── Odin.WorkerHost/       # Worker runtime
│   ├── Odin.Visibility/       # Visibility service
│   └── Odin.Cli/              # CLI tool
├── tests/                      # Test projects
├── samples/                    # Example workflows
├── docs/                       # Documentation
└── deployment/                 # Docker, K8s, Helm, Terraform

See Project Structure for details.

Quick Start

Prerequisites

Run with Docker Compose

git clone https://github.com/df49b9cd/Odin.git
cd Odin
docker-compose up -d

Access:

Build and Test

dotnet restore
dotnet build
dotnet test

Development Status

Phase 1 (In Progress):

  • Project structure and solution setup
  • Docker and deployment configurations
  • Documentation framework
  • Basic project interfaces
  • Persistence layer implementation
  • History service
  • Matching service
  • Worker SDK with Hugo integration
  • gRPC API implementation
  • CLI tool

See Service Blueprint for the full roadmap.

Technology Stack

  • Runtime: .NET 10
  • Core Library: Hugo 1.0.0 (concurrency primitives)
  • APIs: gRPC (Temporal-compatible) + REST
  • Persistence: PostgreSQL 14+ or MySQL 8.0.19+
  • Visibility: Elasticsearch 8.x or SQL advanced visibility
  • Testing: xUnit v3, Shouldly, NSubstitute
  • Observability: OpenTelemetry, Prometheus, Grafana, Jaeger
  • Deployment: Docker, Kubernetes, Helm

Example Workflow

using static Hugo.Go;
using Hugo;
using Odin.Sdk;

public class OrderWorkflow : IWorkflow<OrderRequest, OrderResult>
{
    public async Task<Result<OrderResult>> ExecuteAsync(
        OrderRequest input,
        CancellationToken cancellationToken)
    {
        return await ExecuteActivity<ValidateOrderActivity>(input)
            .Then(validated => ExecuteActivity<ProcessPaymentActivity>(validated))
            .Then(paid => ExecuteActivity<FulfillOrderActivity>(paid))
            .Recover(error => ExecuteActivity<CompensateOrderActivity>(error))
            .Finally(result => PersistAuditLog(result));
    }
}

See samples/ for complete examples.

Documentation

Contributing

We welcome contributions! See CONTRIBUTING.md for guidelines.

License

This project is licensed under the MIT License - see LICENSE file.

Acknowledgments

Support


Built with Hugo and .NET 10

About

No description, website, or topics provided.

Resources

License

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published