A declarative, provider-agnostic cloud development environment system. Deploy consistent development environments to Fly.io, local Docker, or via DevPod to Kubernetes, AWS, GCP, Azure, and other cloud providers using YAML-defined extensions.
███████╗██╗███╗ ██╗██████╗ ██████╗ ██╗
██╔════╝██║████╗ ██║██╔══██╗██╔══██╗██║
███████╗██║██╔██╗ ██║██║ ██║██████╔╝██║
╚════██║██║██║╚██╗██║██║ ██║██╔══██╗██║
███████║██║██║ ╚████║██████╔╝██║ ██║██║
╚══════╝╚═╝╚═╝ ╚═══╝╚═════╝ ╚═╝ ╚═╝╚═╝
🔨 Forging Development Environments
📦 https://github.com/pacphi/sindri
Sindri (Old Norse: "spark") was a legendary dwarf blacksmith in Norse mythology, renowned for forging three of the most powerful artifacts: Mjölnir (Thor's hammer), Draupnir (Odin's ring), and Gullinbursti (Freyr's golden boar).
Like its mythological namesake, Sindri forges powerful development environments from raw materials—transforming cloud infrastructure, YAML configuration, and Docker into consistent, reproducible developer workspaces.
# Clone repository
git clone https://github.com/pacphi/sindri
cd sindri
# Initialize configuration
./cli/sindri config init
# Edit sindri.yaml for your needs
# See examples/ directory for templates
# Deploy locally
./cli/sindri deploy --provider docker
# Or deploy to Fly.io
./cli/sindri deploy --provider flyPrerequisites: Docker, yq. For Fly.io: flyctl CLI. For DevPod: devpod CLI.
- Modular Extension System - YAML-driven with dependency resolution
- Fast Startup - Optimized Docker images with pre-installed tools (10-15s cold start)
- Extension System - 32 modular extensions for languages, tools, and infrastructure
- Schema Validation - All YAML validated against JSON schemas
- Provider Adapters - Clean abstraction for Docker, Fly.io, and DevPod (with Kubernetes, AWS, GCP, Azure backends)
- Volume Architecture - Immutable
/docker/libsystem, mutable$HOMEvolume containing workspace - BOM Tracking - Comprehensive software bill of materials for security auditing
- Quickstart Guide - Fast setup and deployment
- FAQ - Searchable answers to common questions
- Architecture Overview - System design and concepts
- Configuration Reference - Complete sindri.yaml guide
- Extension Catalog - Available extensions and usage
- Extension Authoring - Creating custom extensions
- Bill of Materials - Software tracking and SBOM generation
- Deployment Overview - Provider comparison and selection
- Fly.io Deployment - Fly.io-specific guide
- DevPod Integration - DevContainer setup
- Docker Deployment - Local Docker setup
- Kubernetes Deployment - Enterprise K8s guide
- Secrets Management - Managing secrets across providers
- Project Management - Using new-project and clone-project
- Contributing Guide - Development workflow and standards
- Testing Guide - Running tests and CI/CD
- Workflow Architecture - CI/CD workflow structure and design
- CI Testing Deep Dive - Comprehensive CI testing guide
- Release Process - Creating releases and changelog automation
- Troubleshooting - Common issues and solutions
- Security - Security best practices
A Claude Code skill is available to guide extension development. When using Claude Code, ask about creating extensions and it will automatically provide guidance. See Sindri Extension Guide for the skill definition.
Example questions:
- "Help me create a new extension for Lua development"
- "What fields are required in extension.yaml?"
- "How do I use the apt installation method?"
- "Show me an example of a script-based extension"
MIT License - see LICENSE file for details.