Multi-Agent Workflow Orchestration Engine. One Bus. Zero Friction.
Project description
Glink
Multi-Agent Workflow Orchestration. One Bus. Zero Friction.
Glink is a lightweight orchestration engine that turns your AI agents into a collaborative assembly line. Define a workflow in YAML, and Glink routes each step to the right agent — passing context, handling failures, and logging every heartbeat onto a shared event bus.
No database. No message queue. No external dependencies.
Architecture
┌──────────────────────────────────────────────────────────┐
│ Glink Daemon │
│ │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ Main Bus │ │
│ │ Append-only JSONL Timeline │ │
│ └──────┬──────────┬──────────┬──────────┬─────────────┘ │
│ │ │ │ │ │
│ ┌────▼───┐ ┌───▼────┐ ┌───▼────┐ ┌──▼──────┐ │
│ │Agent-1 │ │Agent-2 │ │Agent-3 │ │... │ │
│ │:8420 │ │:8431 │ │:8432 │ │ │ │
│ └────────┘ └────────┘ └────────┘ └─────────┘ │
│ │ │ │ │ │
│ └──────────┴──────────┴──────────┘ │
│ Your AI Fleet │
└──────────────────────────────────────────────────────────┘
Quick Start
# Define your agents in main.py or daemon/core.py
# Default port mapping (customize freely):
# agent-1 :8420 (generalist)
# agent-2 :8431 (backend)
# agent-3 :8432 (frontend/UI)
# agent-4 :8434 (data)
# agent-5 :8435 (testing)
# Run a workflow (auto-resumes from last checkpoint)
python3 glink-daemon.py my-workflow
# Force restart from step 1
python3 glink-daemon.py my-workflow --force
# Jump to a specific step
python3 glink-daemon.py my-workflow --step 4
# Serve-only mode (API daemon without running workflow)
python3 glink-daemon.py --serve
# Open dashboard
open http://127.0.0.1:8426/commander.html
Features
| Feature | Description |
|---|---|
| YAML Workflows | Define steps, agents, dependencies, and fallbacks in one file |
| Main Bus | JSONL blackboard — append-only, agent-agnostic, replayable |
| Smart Routing | Primary agent down? Auto-fallback to the next in line |
| Checkpoint Resume | Crash mid-workflow? Restart picks up where it left off |
| Dependency Graph | Steps can depends_on each other; Glink handles ordering |
| Retry Loop | Auto-retry failed steps (configurable, default 2×) |
| HTTP API + SSE | Live status, agent health, and event stream on :8426 |
| Self-Healing | Daemon auto-restarts on crash, PID-based watchdog |
| Webhook Alerts | Push notifications to any HTTP endpoint |
| Zero External Deps | Pure Python 3.10+, standard library. No pip install. |
Define a Workflow
name: my-pipeline
version: 1.0.0
description: "A simple 3-step demo"
global_context: |
You are part of a multi-agent orchestration pipeline.
Build upon the output of previous steps.
steps:
- id: step-1
executor: agent-1
title: "Generate content"
output_file: projects/demo/step1.txt
task: |
Create a summary of what makes a good multi-agent workflow.
- id: step-2
executor: agent-2
title: "Enhance"
input_file: projects/demo/step1.txt
output_file: projects/demo/step2.md
task: |
Read and enhance the step-1 output. Add code examples.
- id: step-3
executor: agent-3
title: "Verify"
input_file: projects/demo/step2.md
output_file: projects/demo/VERIFIED.md
task: |
Verify the enhanced document is complete.
Append a verification seal if all checks pass.
API Reference
All endpoints served on the configured port (:8426 by default).
| Method | Endpoint | Description |
|---|---|---|
GET |
/health |
Liveness check |
GET |
/status |
Full project status + step-by-step progress |
GET |
/status/agents |
Which agents are online |
GET |
/status/events?n=20 |
Last N bus events |
GET |
/intel/step |
Detailed intelligence per step stage |
GET |
/intel/agents |
Agent-specific metrics |
GET |
/intel/timeline |
Step timeline visualization data |
GET |
/events/stream |
SSE real-time event stream |
POST |
/restart |
Resume from last checkpoint |
POST |
/restart?force |
Force restart from step 1 |
POST |
/restart?step=N |
Jump to specific step |
Configuration
See glink-config.yaml:
project:
default: hello-world
scheduling:
max_retries: 2
poll_interval: 3
poll_max_wait: 180
max_concurrent_steps: 1
reporting:
channels:
- type: console
label: "Glink"
# - type: webhook
# url: "https://hooks.example.com/..."
# label: "Slack"
server:
host: "127.0.0.1"
port: 8426
security:
startup_timeout: 10
Environment variables:
GLINK_DEFAULT_PROJECT— override default project nameGLINK_PORT— override API server portGLINK_REPORTER— set towebhook,console, orsilentGLINK_ALERT_WEBHOOK— webhook URL for alerts
Real-World Usage
Glink was used to orchestrate a 10-step game development pipeline across 5 agents:
- Step 1-4: 3D scene, physics, textures, UI
- Step 5-6: Game systems (save/load, scoring)
- Step 7-8: Quality verification
- Result: Single playable HTML file, 97 KB / 2,751 lines
All built by agent collaboration — zero lines of human-written code.
Project Structure
glink/
├── glink-daemon.py # CLI entry point
├── glink-config.yaml # Configuration
├── daemon/
│ ├── core.py # Workflow orchestration engine
│ ├── api.py # HTTP API server (17 endpoints)
│ ├── checks.py # PID management & auto-recovery
│ ├── config.py # Config loader
│ └── log.py # Reporter initialization
├── bus/
│ ├── main_bus.py # JSONL event bus
│ └── agent_client.py # Agent HTTP client
├── reporter/
│ └── reporter.py # Notification session (webhook/console)
├── dashboard/
│ ├── commander.html # C2 dashboard (realtime)
│ └── index.html # Legacy dashboard
├── workflows/ # Your YAML workflow definitions
└── projects/ # Step outputs by project
License
MIT — free for any use, open or commercial.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file glink_engine-0.3.0.tar.gz.
File metadata
- Download URL: glink_engine-0.3.0.tar.gz
- Upload date:
- Size: 53.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a8e05f741944a23ae01b3c912202d746865a19ba44f0361f53a7fc6fc67779e0
|
|
| MD5 |
26a9a64fd0475bbc884180fea6adfb57
|
|
| BLAKE2b-256 |
184ead926f769542c762857b7fbca40cbf7cc85b416d0f7a92ddfd01eee3bed6
|
File details
Details for the file glink_engine-0.3.0-py3-none-any.whl.
File metadata
- Download URL: glink_engine-0.3.0-py3-none-any.whl
- Upload date:
- Size: 50.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
db39fe4a649a9f031b029a88b0dfaf40433579ce247f927e534af12997224a8f
|
|
| MD5 |
8ee560ba98c80f972883f39f2d7d1414
|
|
| BLAKE2b-256 |
23bdd068ef64ccbdffe16cc8ab629a9fd62a7965008c1263772ea7937f5c66bb
|