Skip to main content
r/java icon

r/java

members
online


The everything app, for work. Get everyone working in a single platform designed to manage any type of work.

Trusted by 3 million+ teams, try ClickUp for free today!

Image The everything app, for work. Get everyone working in a single platform designed to manage any type of work.



I built a lightweight distributed orchestrator in Java 17 using raw TCP sockets (no Spring) I built a lightweight distributed orchestrator in Java 17 using raw TCP sockets (no Spring)

I built Titan, a lightweight distributed orchestrator, mainly as a way to learn the core primitives of distributed systems in Java like scheduling, concurrency, IPC, and failure detection without relying on Spring, Netty, or HTTP.

At a high level, Titan can:

  • Orchestrate long-running services and ephemeral batch jobs in the same runtime

  • Execute dependency-driven DAGs (serial chains, fan-out, fan-in)

  • Run with zero external dependencies as a single ~90KB Java JAR

The core runtime is written in Java 17 using:

  • Raw java.net.Socket with a small custom binary protocol

  • java.util.concurrent primitives for scheduling and execution

  • Process-level isolation using ProcessBuilder (workers can spawn child JVMs to handle burst load)

Workers register themselves with the master (push-based discovery), monitor their own load, and can auto-scale locally when saturated.

I built this mostly to understand how these pieces fit together when you don’t abstract them away behind frameworks.

If anyone’s interested, I’d love feedback on the current state.
I built this incrementally by satisfying base requirements of having a homelab setup for doing some coordinated scripts and then evolved to service orchestrator and then to a runtime for dynamic DAGs (so agentic ai can leverage the runtime parallelism etc).

Repo (with diagrams and demos):
https://github.com/ramn51/DistributedTaskOrchestrator