imgsrv is an early-stage Go service for storing, cataloging, and serving disk
and VM image artifacts through a native HTTP API.
The v0 prototype is intended to prove verified content-addressed uploads, immutable published image versions, aliases, and proxied downloads backed by PostgreSQL and Garage. The initial service foundation is in place; the current implementation exposes operational health endpoints while the v0 API is built out in focused slices.
Current repository commands exercise the documentation site and initial Go service foundation.
- Node.js 22, matching .nvmrc
- npm
- Go 1.26
- Moon
- uv, for repository setup automation
- gh, authenticated with access to
meigma/imgsrv
npm --prefix docs cimoon ci --summary minimal
go test ./...npm --prefix docs run startgo run ./cmd/imgsrv --listen :8080The initial service foundation exposes GET /healthz and GET /readyz.
Logs default to text output and can be switched to JSON with --log-format json;
verbosity is controlled with --verbosity. Prometheus metrics are served from
127.0.0.1:9464/metrics by default and can be disabled with
--metrics-listen "".
Set --postgres-url or IMGSRV_POSTGRES_URL to open PostgreSQL at startup and
apply embedded Goose migrations before the HTTP listener starts.
The service is planned as a single Go binary using standard-library HTTP,
PostgreSQL for the control plane, Garage through its S3-compatible API for
object storage, log/slog for logging, OpenTelemetry metrics with a Prometheus
endpoint, and a hand-written OpenAPI v3 specification.
See docs/docs/design.md for the current working design.
- Docs home: docs/docs/index.md
- Working v0 design: docs/docs/design.md
- Repository settings manifest: .github/repository-settings.toml
Use GitHub Discussions for questions and design discussion. Use GitHub Issues for non-security bug reports and scoped feature requests. Do not report vulnerabilities in public channels. See SECURITY.md.
See CONTRIBUTING.md for contribution guidelines, local setup expectations, and pull request workflow.
See SECURITY.md for supported versions and private vulnerability reporting.
imgsrv is dual-licensed under either:
- Apache License, Version 2.0 (LICENSE-APACHE)
- MIT license (LICENSE-MIT)
at your option.