Skip to content

fabriziosalmi/dgrid

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

31 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

D-GRID: Decentralized Git-Relay Infrastructure for Distributed Tasks

License: MIT Python 3.11+ Docker GitHub Actions

๐Ÿš€ Blitz-Launch Operation - Use Git as a transactional and distributed state database for decentralized task execution.

๐ŸŽฏ Vision

D-GRID is a serverless, decentralized task execution system where:

  • ๐Ÿ—‚๏ธ Git as Database - All system state (nodes, tasks, results) is tracked on GitHub as the single source of truth
  • ๐Ÿ“Š Auto-Generated Dashboard - Public, real-time status dashboard on GitHub Pages
  • ๐Ÿค– Autonomous Worker Nodes - Python workers in Docker containers that self-register, execute tasks, and report results
  • โœ… Zero Central Dependencies - No central APIs, no external databases, no orchestrators needed

๐Ÿ—๏ธ Architecture

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚                  GitHub Repository                      โ”‚
โ”‚  (Single Source of Truth - Distributed State)          โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚  nodes/                  โ†’ Active node registry         โ”‚
โ”‚  tasks/queue/            โ†’ Pending tasks               โ”‚
โ”‚  tasks/in_progress/      โ†’ Running tasks (atomic)      โ”‚
โ”‚  tasks/completed/        โ†’ Successful tasks            โ”‚
โ”‚  tasks/failed/           โ†’ Failed tasks                โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
         โ†• (Pull/Push via Git)
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚         GitHub Pages (Status Dashboard)                โ”‚
โ”‚  (Read-only, auto-updated by GitHub Actions)          โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
         โ†‘ (Generated by)
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚         GitHub Actions (Orchestration)                 โ”‚
โ”‚  โ€ข Task submission validation                          โ”‚
โ”‚  โ€ข Dashboard generation & cleanup                      โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
         โ†‘ (Triggered by)
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚ Worker 1 โ”‚ Worker 2 โ”‚ Worker 3 โ”‚ Worker N โ”‚
โ”‚ (Python) โ”‚ (Python) โ”‚ (Python) โ”‚ (Python) โ”‚
โ”‚ (Docker) โ”‚ (Docker) โ”‚ (Docker) โ”‚ (Docker) โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

๐Ÿ”ง Technology Stack

Component Technology Why
Worker Node Python 3.11 Fast development, mature libraries, great community
Containerization Docker Alpine Lightweight (~150MB), secure, includes Python
Coordination Git + GitHub Single source of truth, decentralized, built-in history
Dashboard GitHub Pages + HTML Free, integrated, no extra infrastructure
CI/CD GitHub Actions Free, serverless, GitHub-native

๐Ÿš€ How It Works

1. Worker Node Lifecycle

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚ Worker starts (docker run)                  โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
               โ”‚
               โ†“
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚ 1. Clone repo (or pull if exists)          โ”‚
โ”‚ 2. Self-register: nodes/{id}.json          โ”‚
โ”‚ 3. Commit and push registration            โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
               โ”‚
               โ†“
        โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
        โ”‚ LOOP START   โ”‚
        โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
               โ”‚
        โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”
        โ”‚ Pull rebase โ”‚  (Always up-to-date)
        โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”˜
               โ”‚
        โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
        โ”‚ Task available?           โ”‚
        โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
               โ”‚
        โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
        โ”‚                                     โ”‚
        โ”‚                                     โ”‚
    [YES]โ”‚                                    โ”‚[NO]
        โ”‚                                     โ”‚
        โ†“                                     โ†“
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”              โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚ git mv atomic   โ”‚              โ”‚ Send heartbeat   โ”‚
โ”‚ queueโ†’in_prog   โ”‚              โ”‚ Update node      โ”‚
โ”‚ (transaction!)  โ”‚              โ”‚ .last_heartbeat  โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜              โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
         โ”‚                                โ”‚
         โ†“                                โ”‚
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”                       โ”‚
โ”‚ Commit and push โ”‚                       โ”‚
โ”‚ (First to push  โ”‚                       โ”‚
โ”‚  wins!)         โ”‚                       โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜                       โ”‚
         โ”‚                                โ”‚
         โ†“                                โ”‚
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”                       โ”‚
โ”‚ Execute Docker  โ”‚                       โ”‚
โ”‚ container       โ”‚                       โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜                       โ”‚
         โ”‚                                โ”‚
         โ†“                                โ”‚
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”                       โ”‚
โ”‚ Report result   โ”‚                       โ”‚
โ”‚ completed/ or   โ”‚                       โ”‚
โ”‚ failed/         โ”‚                       โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜                       โ”‚
         โ”‚                                โ”‚
         โ”‚                    โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
         โ†“                    โ†“
        โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
        โ”‚ Sleep (PULL_INTERVAL)    โ”‚
        โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                       โ”‚
                       โ””โ”€ (back to Pull)

2. Task Submission Flow

Fork โ†’ Create task in tasks/queue/ โ†’ Pull Request โ†’
Merge (auto-validated) โ†’ GitHub Actions scans state โ†’
Worker node finds it โ†’ Execution โ†’ Result pushed back

๐Ÿ“‹ Directory Structure

d-grid/
โ”œโ”€โ”€ .github/
โ”‚   โ””โ”€โ”€ workflows/
โ”‚       โ”œโ”€โ”€ process-task-pr.yml     # Validate task submissions
โ”‚       โ””โ”€โ”€ update-gh-pages.yml     # Generate dashboard & cleanup
โ”œโ”€โ”€ nodes/
โ”‚   โ””โ”€โ”€ {node_id}.json              # State of each node
โ”œโ”€โ”€ tasks/
โ”‚   โ”œโ”€โ”€ queue/                      # Pending tasks
โ”‚   โ”œโ”€โ”€ in_progress/                # Running tasks (atomic acquisition)
โ”‚   โ”œโ”€โ”€ completed/                  # Successfully completed tasks
โ”‚   โ””โ”€โ”€ failed/                     # Failed tasks
โ”œโ”€โ”€ worker/
โ”‚   โ”œโ”€โ”€ main.py                     # Worker entry point
โ”‚   โ”œโ”€โ”€ config.py                   # Configuration & validation
โ”‚   โ”œโ”€โ”€ logger_config.py            # Unified logging
โ”‚   โ”œโ”€โ”€ git_handler.py              # Git operations
โ”‚   โ”œโ”€โ”€ state_manager.py            # Node registration & heartbeat
โ”‚   โ”œโ”€โ”€ task_runner.py              # Task execution
โ”‚   โ”œโ”€โ”€ web_server.py               # Local worker dashboard
โ”‚   โ””โ”€โ”€ requirements.txt            # Python dependencies
โ”œโ”€โ”€ docs/
โ”‚   โ””โ”€โ”€ index.html                  # GitHub Pages dashboard
โ”œโ”€โ”€ .gitignore
โ”œโ”€โ”€ Dockerfile                       # Worker image build
โ”œโ”€โ”€ docker-compose.yml              # Local development setup
โ”œโ”€โ”€ README.md                        # This file
โ””โ”€โ”€ progress.md                      # Development progress tracking

๐ŸŽฒ Task Format

Submit tasks as JSON files in tasks/queue/:

{
  "task_id": "task-001",
  "script": "echo 'Hello, D-GRID!' && python3 --version",
  "timeout_seconds": 30
}

Task results are stored in tasks/completed/{node_id}-{task_id}.json:

{
  "task_id": "task-001",
  "node_id": "worker-001",
  "exit_code": 0,
  "stdout": "Hello, D-GRID!\nPython 3.11.0",
  "stderr": "",
  "timestamp": "2025-10-16T10:01:23Z",
  "status": "success"
}

โœจ Key Features

  • Atomic Operations: Uses git mv for transactional task acquisition (no race conditions)
  • Self-Healing: Auto-detects orphaned tasks and moves them back to queue
  • Isolated Execution: Docker containers with strict security (network=none, read-only FS, limited processes)
  • Real-Time Dashboard: Auto-generated, always up-to-date status view
  • Zero Infrastructure: Works with free GitHub tier (no servers, no databases)
  • Worker Autonomy: Nodes self-register and heartbeat without central coordination
  • Full Transparency: All state visible in Git history

๐Ÿ” Security (Current Status)

MVP implementation with essential security:

  • โœ… Container isolation (network=none, read-only, user=1000:1000)
  • โœ… Fixed base image (python:3.11-alpine, not customizable)
  • โœ… Output limits (10KB max per task to prevent DoS)
  • โœ… JSON validation and required fields
  • โœ… Task submission validation via GitHub Actions

Future hardening needed:

  • Task signing & verification
  • Enhanced container sandboxing
  • Rate limiting per worker
  • Multi-signature quorum for critical operations

๏ฟฝ Quick Start

Prerequisites

  • GitHub account and a public repository
  • Docker installed (for running workers)
  • Python 3.11+ (for local development)
  • Git CLI

For Repository Maintainers

# 1. Create a new repository on GitHub
# 2. Clone it locally
git clone https://github.com/<your-username>/d-grid.git
cd d-grid

# 3. Enable GitHub Pages
#    Settings โ†’ Pages โ†’ Source: gh-pages branch

# 4. Enable GitHub Actions
#    Settings โ†’ Actions โ†’ Allow all actions

# 5. Create a GitHub Personal Access Token (if needed for private repos)
#    Settings โ†’ Developer settings โ†’ Personal access tokens
#    Keep this secret!

For Workers (Start a Node)

Using Docker (Recommended)

docker run -d \
  --name dgrid-worker-001 \
  -e NODE_ID=worker-001 \
  -e DGRID_REPO_URL=https://github.com/<your-username>/d-grid.git \
  -e GIT_TOKEN=ghp_your_token_here \
  -e PULL_INTERVAL=10 \
  -e LOG_LEVEL=INFO \
  -v /var/run/docker.sock:/var/run/docker.sock \
  -p 8000:8000 \
  fabriziosalmi/d-grid-worker:latest

Then check the dashboard at http://localhost:8000

Using Docker Compose (Development)

# Clone the repository
git clone https://github.com/<your-username>/d-grid.git
cd d-grid

# Configure environment in docker-compose.yml
# Then start:
docker-compose up -d

# Check logs:
docker-compose logs -f dgrid-worker

Local Python (Development Only)

cd worker
pip install -r requirements.txt
python main.py

Submitting Tasks

  1. Fork the repository
git clone https://github.com/<your-username>/d-grid.git
cd d-grid
  1. Create a task file
cat > tasks/queue/my-first-task.json << 'EOF'
{
  "task_id": "my-first-task",
  "script": "echo 'Hello from D-GRID!' && python3 --version",
  "timeout_seconds": 30
}
EOF
  1. Commit and push
git add tasks/queue/my-first-task.json
git commit -m "Add task: my-first-task"
git push origin main
  1. Monitor execution

Visit your dashboard at: https://<your-username>.github.io/d-grid/

Results appear in tasks/completed/ or tasks/failed/ depending on outcome.

๐Ÿ“Š Dashboard

Access your real-time dashboard at: https://<your-username>.github.io/d-grid/

Dashboard shows:

  • ๐ŸŸข Active nodes (with last heartbeat time)
  • โณ Pending tasks in queue
  • ๐Ÿ”„ Currently executing tasks
  • โœ… Successfully completed tasks
  • โŒ Failed tasks

The dashboard updates every 60 seconds and regenerates every 5 minutes via GitHub Actions.

๐Ÿ›ฃ๏ธ Roadmap

Phase 1: โœ… Foundations (COMPLETE)

  • Worker node core implementation
  • State manager (node registration & heartbeat)
  • Task runner with Docker execution
  • Git coordination and atomic operations
  • Robust error handling and recovery

Phase 2: ๐Ÿšง GitHub Actions & Automation (IN PROGRESS)

  • Task submission validator
  • Dashboard generator
  • Orphan task cleanup
  • Auto-scaling recommendations
  • Performance metrics collection

Phase 3: ๐ŸŽฏ Deployment & Release

  • Publish Docker image to registries
  • Enhanced documentation
  • Example tasks and templates
  • Public launch

Phase 4: ๐Ÿ”ฎ Advanced Features (Future)

  • End-to-end test suite
  • Task dependency management
  • Worker reputation system
  • Task priority levels
  • Distributed consensus for critical ops
  • Web UI for task submission

๐Ÿค Contributing

Everyone can contribute! The easiest way is to launch a worker node:

docker run -e DGRID_REPO_URL=https://github.com/<repo> \
           -e NODE_ID=my-worker \
           -v /var/run/docker.sock:/var/run/docker.sock \
           fabriziosalmi/d-grid-worker:latest

You can also:

  • Submit tasks by creating JSON files in tasks/queue/
  • Improve code by forking and submitting pull requests
  • Report issues on the GitHub issue tracker
  • Suggest improvements in discussions

Development Setup

# Clone and setup
git clone https://github.com/<your-fork>/d-grid.git
cd d-grid

# Create virtual environment
python3 -m venv venv
source venv/bin/activate

# Install dependencies
cd worker
pip install -r requirements.txt

# Run locally (requires Docker)
python main.py

๐Ÿ“š Documentation

๐Ÿ› Troubleshooting

Worker won't start:

# Check configuration validation
LOG_LEVEL=DEBUG python worker/main.py

# Verify Docker is running
docker ps

# Check Git credentials (if private repo)
git config credential.helper

Tasks aren't being picked up:

# Check repository sync
cd /tmp/d-grid-repo && git log --oneline -5

# Verify task format
cat tasks/queue/*.json | python3 -m json.tool

# Check worker logs
docker logs dgrid-worker-001

Dashboard not updating:

  • Verify GitHub Actions is enabled in Settings
  • Check Actions tab for workflow run history
  • Ensure GitHub Pages is configured in Settings

๏ฟฝ Support & Community

๏ฟฝ๐Ÿ“ License

MIT License - Feel free to use, experiment, and build your own D-GRID!

See LICENSE for full terms.

๐ŸŽ‰ Acknowledgments

Built with:

  • โค๏ธ Passion for decentralization
  • ๐Ÿ”ง Python, Git, and Docker
  • ๐Ÿš€ GitHub's free tier (Actions, Pages, API)
  • ๐ŸŒŸ Open source community

FAQ

Q: Does this work without Internet? A: No, it requires connectivity to GitHub. It's designed for cloud/internet deployments.

Q: Can I use this for production workloads? A: Currently MVP. For production, add the security hardening listed in the Security section.

Q: How many workers can I run? A: Unlimited! Each worker is independent and only needs the repo URL.

Q: What happens if GitHub is down? A: Workers will retry until connectivity is restored. No data is lost since Git stores everything.

Q: Can I run on Kubernetes? A: Yes! Deploy workers as Kubernetes jobs that pull tasks from the Git repo.

Q: How do I scale this? A: Simply run more worker containers. They auto-coordinate via Git atomic operations.


Mission Status: ๐Ÿš€ BLITZ-LAUNCH OPERATION IN PROGRESS

Decentralization starts here.

About

Resources

Stars

Watchers

Forks

Releases

No releases published

Contributors 4

  •  
  •  
  •  
  •