Skip to content

Go2Engle/Gantry

Repository files navigation

Gantry

The open-source internal developer platform that ships as a single binary.

GitHub release License: Apache 2.0 Go 1.22+ Build GitHub Stars Docker

πŸ“– Documentation Β Β·Β  πŸš€ Releases Β Β·Β  πŸ› Report a Bug Β Β·Β  ✨ Request a Feature


What is Gantry?

Gantry is a self-hostable internal developer platform (IDP) β€” a lightweight alternative to Backstage that runs as a single Go binary with no external dependencies. It gives engineering teams a unified service catalog, self-service actions, GitOps-native configuration management, and a plugin ecosystem without the operational overhead.

Gantry Backstage
Setup time ~5 minutes Hours to days
Runtime dependencies None β€” single binary Node.js, PostgreSQL, often Kubernetes
Hosting Any server or Docker Kubernetes recommended
Embedded database SQLite, zero config External DB required
GitOps apply gantry apply built-in YAML ingestion via plugins

Features

  • Service Catalog β€” Typed, validated, and searchable entities for every service, API, team, and infrastructure component in your org
  • Self-Service Actions β€” Schema-driven forms so developers can trigger deployments or run workflows without opening a ticket
  • Plugin Ecosystem β€” First-party integrations for Kubernetes, GitHub, ArgoCD, Status Monitor, and Microsoft Teams
  • GitOps Native β€” Manage your catalog as YAML with gantry apply; diff, review, and roll back like code
  • Full-Text Search β€” Find any entity in milliseconds via SQLite FTS5 β€” no Elasticsearch required
  • Single Binary β€” CGO-free Go binary with an embedded React frontend, SQLite database, and all assets baked in
  • API Keys & JWT Auth β€” Browser sessions + Bearer token auth for CLI and automation; GitHub OAuth SSO optional
  • Audit Log β€” Every write operation is captured with before/after state and source IP
  • Prometheus Metrics β€” Built-in /metrics endpoint, no extra instrumentation needed

Quick Start

Install Script (Linux / macOS)

curl -fsSL https://raw.githubusercontent.com/go2engle/gantry/main/install.sh | sh
gantry serve

Docker

docker run -p 8080:8080 ghcr.io/go2engle/gantry:latest

Build from Source

git clone https://github.com/Go2Engle/Gantry.git && cd Gantry
make build
bin/gantry serve --dev

Open http://localhost:8080 β€” default login: admin / changeme

Full installation options: GantryIDP.dev/docs/getting-started/installation


CLI

The gantry binary is both server and client β€” think kubectl but for your developer platform.

# Start the server
gantry serve
gantry serve --port 9090 --dev
gantry serve --admin-password mysecret

# Apply entities from YAML β€” GitOps style
gantry apply -f services.yaml
gantry apply -f ./catalog/

# Query the catalog
gantry get services
gantry get Service payments-api -o yaml
gantry describe Service payments-api

# Check version / manage installation
gantry version
gantry upgrade
gantry uninstall

Configuration

All options can be set via environment variable, CLI flag, or a YAML config file.

Env Var Flag Default Description
GANTRY_PORT --port 8080 HTTP listen port
GANTRY_DB --db ./data/gantry.db SQLite path or postgres:// URL
GANTRY_DEV --dev false Permissive CORS + verbose logging
GANTRY_ADMIN_PASSWORD --admin-password changeme Initial admin password
GANTRY_JWT_SECRET β€” auto-generated JWT signing secret
GANTRY_DATA_DIR β€” ./data Data directory
GANTRY_ENCRYPTION_KEY β€” auto-generated AES-256-GCM key for plugin secrets

Full configuration reference: GantryIDP.dev/docs/getting-started/configuration


API Reference

Auth uses Authorization: Bearer <token> for CLI/API clients, or an HttpOnly session cookie for browsers.

# Authenticate
curl -X POST localhost:8080/api/v1/auth/login \
  -H 'Content-Type: application/json' \
  -d '{"username":"admin","password":"changeme"}'

# Create a catalog entity
curl -X POST localhost:8080/api/v1/entities \
  -H "Authorization: Bearer $TOKEN" \
  -H 'Content-Type: application/json' \
  -d '{
    "kind": "Service",
    "metadata": { "name": "payments-api", "title": "Payments API", "owner": "team-payments" },
    "spec": { "type": "backend", "lifecycle": "production" }
  }'

# Search the catalog
curl "localhost:8080/api/v1/search?q=payments" -H "Authorization: Bearer $TOKEN"
Full endpoint reference
Method Path Description
GET /healthz Health check
GET /readyz Readiness check
GET /metrics Prometheus metrics
POST /api/v1/auth/login Login, returns JWT
POST /api/v1/auth/logout Clear session cookie
GET /api/v1/auth/me Current user info
GET /api/v1/apikeys List API keys
POST /api/v1/apikeys Create a scoped API key
DELETE /api/v1/apikeys/{id} Revoke an API key
GET /api/v1/entities List all entities
GET /api/v1/entities/{kind} List by kind
GET /api/v1/entities/{kind}/{name} Get entity
POST /api/v1/entities Create entity
PUT /api/v1/entities/{kind}/{name} Update entity
DELETE /api/v1/entities/{kind}/{name} Delete entity
GET /api/v1/search?q= Full-text search
GET /api/v1/schemas/{kind} JSON Schema for a kind
GET /api/v1/plugins List plugins and enabled state
POST /api/v1/actions/{name}/execute Execute an action
GET /api/v1/actions/{name}/runs List action runs
GET /api/v1/audit Audit log
GET /api/v1/graph/{kind}/{name} Entity dependency graph
GET /api/v1/ws WebSocket (real-time events)

Full API documentation: GantryIDP.dev/docs/api


Development

Prerequisites: Go 1.22+, Node.js 18+, npm

# Recommended: live reload for both backend and frontend
go install github.com/air-verse/air@latest
make dev-watch
# β†’ Backend auto-rebuilds on .go changes (air)
# β†’ Frontend hot-reloads at http://localhost:3000 (Vite HMR)

# Or run them separately:
bin/gantry serve --dev          # Go server on :8080
cd web && npm run dev           # Vite dev server on :3000

# Tests & checks
go test ./...
cd web && npx tsc --noEmit
golangci-lint run ./...

Contributing guide: GantryIDP.dev/docs/contributing


Star History

Star History Chart


License

Apache 2.0 β€” see LICENSE.

If Gantry is useful to you, give it a ⭐ β€” it helps others find it.

About

The Developer Platform That Just Works

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors