AssetGoblin

Serve static files and transform images through presets or URL parameters. Optional Python plugins add audio, video and extra formats without rebuilding the server.
Requirements
- Go 1.27.3 or newer (for building from source)
- ImageMagick and/or vips
- Python 3.10+ (for Python plugins; select an interpreter with
python_executablein configuration) - FFmpeg (optional, for media transformations and QOI)
Quick start
Download a binary from Releases , or build from source:
go build -o assetgoblin .
./assetgoblin -serve
Put images in assets/img and static files in public, relative to your working
directory. Request /img/640/photo.webp to resize and convert an image, or
/path/to/file to serve a file from public. The default port is 8080.
For a container deployment, see the Docker guide .
Documentation
- Configuration : defaults, presets, lookup paths and caching.
- Images : URL formats and transformation options.
- Request security : rate limiting and signed URLs.
- Command-line usage : server and maintenance flags.
- Plugin API : deployment, callbacks, tools, codecs and inheritance.
- Example plugins : audio, video, QOI and QOA setup.
- Docker : container images, mounts and GHCR publishing.
- Development : checks and documentation publishing.
The same documentation is available as a GitHub Pages site .
Acknowledgements
AssetGoblin is built with the following open-source projects. Thank you to their authors and contributors.
| Project | Used for | |
|---|---|---|
| go-limiter | Per-IP HTTP rate limiting | |
| go-selfupdate | Verified executable updates | |
| Charm terminal utilities | Terminal detection | |
| Fuego | HTTP server and routing | |
| 🥒 | Gocuke | Gherkin feature tests |
| Hugo | Documentation site generation | |
| Lip Gloss | Terminal styling and tables | |
| Viper | Configuration loading |
External packages
- AssetGoblinLua : Optional Lua 5.1 backend for custom builds.
