- Rust 100%
Add table of structs containing secrets with manual Debug implementations: - Task: redact secrets, vars - JobContext: only log key names from base_env - ExecRequest: only log key names from env #[derive(Debug)] not allowed on these types. Addresses review comment #492. |
||
|---|---|---|
| docs/plans | ||
| src | ||
| .gitignore | ||
| AGENTS.md | ||
| ampoule-threat-model.md | ||
| Cargo.lock | ||
| Cargo.toml | ||
| config.toml.example | ||
| DIFFERENTIAL_REVIEW_2026-06-21.md | ||
| README.md | ||
Ampoule — Forgejo Actions Runner
Ampoule is a Forgejo Actions runner that executes each job inside an ephemeral, isolated environment. The initial backend uses Firecracker microVMs; the architecture supports alternative backends (cloud VMs, etc.) through a pluggable executor interface.
Introduction
Forgejo is a software forge, like GitHub and GitLab. It contains Forgejo Actions, which is modeled closely on GitHub Actions, but not entirely the same.
A Runner is a tool that takes job definitions from an Actions workflow and executes them.
Motivation
Since a job is essentially just some random executable code, inherently it cannot be trusted. Therefore it needs to be isolated. To combat that, this project provides a runner that creates a lightweight virtual machine to run this code in.
Naming
The project is named ampoule — a hermetically sealed, single-use glass container used in medicine and chemistry. The metaphor fits: each job gets a clean, sealed environment that is discarded after use. The name has no association with any specific technology or vendor, which is intentional given that the executor backend is designed to be swappable.