Ramble Server
  • Go 73.3%
  • HTML 25%
  • Makefile 0.5%
  • Shell 0.4%
  • HCL 0.4%
  • Other 0.4%
Find a file
quartermasterow[bot] e91c827c37
feat(observability): report crashes to GlitchTip via sentry-go (#47)
Sentry SDK + Fiber middleware, init gated on SENTRY_DSN (injected from the
deployment secret - never in this public repo), release from the build
version, flush on shutdown. Panics are captured and the request 500s. The
job spec reads the DSN from the nomad/jobs/ramble variable.

Signed-off-by: Lance Haig <lnhaig@gmail.com>
Co-authored-by: Lance Haig <lnhaig@gmail.com>
2026-09-13 21:56:18 +02:00
.githooks chore: allow AI co-author lines in commit messages (#46) 2026-09-13 20:42:38 +02:00
.github/workflows docs + deploy: describe deployment without infrastructure identifiers 2026-09-13 09:47:09 +02:00
.vscode Go Debugger config 2021-05-04 10:01:06 +02:00
api-docs fix: regenerate swagger docs for 401 status code change 2026-02-05 21:01:28 +01:00
cmd style: gofmt-clean the tree under Go 1.26 (5.5) 2026-05-31 13:21:39 +02:00
deploy/nomad feat(observability): report crashes to GlitchTip via sentry-go (#47) 2026-09-13 21:56:18 +02:00
docs docs + deploy: describe deployment without infrastructure identifiers 2026-09-13 09:47:09 +02:00
examples Complete application rewrite with security hardening 2026-01-05 17:04:40 +01:00
internal feat(observability): report crashes to GlitchTip via sentry-go (#47) 2026-09-13 21:56:18 +02:00
prds docs(prds): mark verification report items as resolved 2026-08-02 16:39:57 +02:00
public chore: update robots.txt, expand sitemap, add security policy 2026-03-03 21:34:05 +01:00
scripts feat(release): sign and notarize macOS binaries 2026-07-29 19:40:14 +02:00
views docs(install): simplify Homebrew installation 2026-07-29 19:08:56 +02:00
.air.toml Add CLI mode, update checker, and documentation 2026-01-08 22:23:55 +01:00
.dockerignore Base API commit 2021-01-08 14:40:39 +01:00
.gitignore chore: add .planning/ to gitignore 2026-02-04 21:19:52 +01:00
.goreleaser.yml fix(release): drop deprecated verified parameter from the Homebrew cask (#43) 2026-09-13 20:12:33 +02:00
config.example.yml Complete application rewrite with security hardening 2026-01-05 17:04:40 +01:00
docker-compose.curr.yml Fix Token Encryption 2026-01-25 15:29:56 +01:00
Dockerfile fix(release): make version bump tag-driven so it works with protected main 2026-05-30 18:20:28 +02:00
go.mod feat(observability): report crashes to GlitchTip via sentry-go (#47) 2026-09-13 21:56:18 +02:00
go.sum feat(observability): report crashes to GlitchTip via sentry-go (#47) 2026-09-13 21:56:18 +02:00
LICENSE Change License to be compatible with Nomad 2021-11-01 14:17:50 +01:00
Makefile chore: DCO sign-off hook and dependency bumps (#42) 2026-09-13 19:25:49 +02:00
README.md chore: DCO sign-off hook and dependency bumps (#42) 2026-09-13 19:25:49 +02:00
SECURITY.md chore: update robots.txt, expand sitemap, add security policy 2026-03-03 21:34:05 +01:00
SELF-HOSTING.md fix(server): configurable trusted proxies, client IP from the first forwarded entry (#41) 2026-09-13 14:24:24 +02:00
tailwind.config.js Complete application rewrite with security hardening 2026-01-05 17:04:40 +01:00

Ramble - Nomad Job & Pack Registry

CI Release Go Version License Docker

A modernized registry for HashiCorp Nomad job files and Nomad Packs, with a built-in CLI for discovering, rendering, and running packs.

Deployment (ramble.openwander.org)

The public registry runs on a Nomad cluster. A release is gh workflow run release.yml -f bump_type=patch: the workflow tags, builds the multi-arch image, pushes ghcr.io/open-wander/ramble:<version> and runs deploy/nomad/ramble.nomad.hcl with the image as a variable. Nothing is edited on any server. Details: docs/deployment.md and deploy/nomad/README.md. Self-hosting your own registry: SELF-HOSTING.md.

Features

Registry Server

  • Modern UI: Responsive design using Tailwind CSS
  • Interactive Search: Live search-as-you-type powered by HTMX
  • Fast Navigation: SPA-like experience with server-side rendering
  • Job/Pack Registry: Easily discover and share Nomad specifications
  • Authentication: User accounts and OAuth support (GitHub, GitLab)
  • Organizations: Team collaboration features
  • Webhooks: Automatic version updates on git tag push

CLI Tool

  • Pack Discovery: Search and browse packs from registries
  • Template Rendering: Render pack templates with variables
  • Direct Submission: Run packs and jobs on Nomad clusters
  • Multi-Registry: Manage multiple registries
  • Caching: Local pack caching for offline use

Tech Stack

  • Backend: Go 1.23+, Fiber v2
  • Database: PostgreSQL (GORM)
  • Frontend: HTMX, Hyperscript, Tailwind CSS
  • CLI: Cobra

Installation

Homebrew (macOS & Linux)

brew install --cask open-wander/tap/ramble

Download Binary

# macOS (Apple Silicon)
curl -L https://github.com/open-wander/ramble/releases/latest/download/ramble_Darwin_arm64.tar.gz | tar xz
sudo mv ramble /usr/local/bin/

# macOS (Intel)
curl -L https://github.com/open-wander/ramble/releases/latest/download/ramble_Darwin_x86_64.tar.gz | tar xz
sudo mv ramble /usr/local/bin/

# Linux (x86_64)
curl -L https://github.com/open-wander/ramble/releases/latest/download/ramble_Linux_x86_64.tar.gz | tar xz
sudo mv ramble /usr/local/bin/

# Linux (ARM64)
curl -L https://github.com/open-wander/ramble/releases/latest/download/ramble_Linux_arm64.tar.gz | tar xz
sudo mv ramble /usr/local/bin/

# Windows (x86_64) - download and extract the zip
# https://github.com/open-wander/ramble/releases/latest/download/ramble_Windows_x86_64.zip

Security Notes

macOS: If you see "cannot be opened because it is from an unidentified developer", run:

xattr -d com.apple.quarantine /usr/local/bin/ramble

Windows: If SmartScreen shows "Windows protected your PC", click "More info" then "Run anyway".

Using Docker

docker pull ghcr.io/open-wander/ramble:latest

CLI Quick Start

# List packs from the default registry
ramble pack list

# Get pack information
ramble pack info myuser/mysql

# Run a pack (renders and submits to Nomad)
ramble pack run myuser/mysql --var db_name=mydb

# Dry run (render only)
ramble pack run myuser/mysql --var db_name=mydb --dry-run

# Run a local job file
ramble job run myjob.nomad.hcl

CLI Commands

ramble
├── server              # Start the web server
├── pack
│   ├── list            # List packs from registry
│   ├── info <pack>     # Get pack details
│   ├── run <pack>      # Download, render, and submit to Nomad
│   └── render <pack>   # Render templates without submitting
├── job
│   ├── list            # List jobs from registry
│   ├── info <job>      # Get job details
│   ├── run <file>      # Submit a raw .nomad.hcl file
│   └── validate <file> # Validate a job file
├── registry
│   ├── list            # List configured registries
│   ├── add <name>      # Add a new registry
│   ├── remove <name>   # Remove a registry
│   └── default <name>  # Set default registry
├── cache
│   ├── list            # Show cached packs
│   ├── clear           # Clear cache
│   └── path            # Show cache directory
└── version             # Show version information

Server Quick Start

Prerequisites

  • Go 1.23+
  • PostgreSQL

Local Development

  1. Clone the repository:

    git clone https://github.com/open-wander/ramble.git
    cd ramble
    make bootstrap
    

    make bootstrap installs the dev tools and enables the repo git hooks. Pull requests must pass the DCO check, so every commit needs a Signed-off-by trailer; the hook adds it for you (the same as git commit -s).

  2. Set up the database:

    export DATABASE_URL="host=localhost user=postgres password=postgres dbname=rmbl port=5432 sslmode=disable"
    
  3. Run the server:

    make run
    # or
    ramble server
    

    The server starts on http://localhost:3000.

Using Docker

docker run -p 3000:3000 \
  -e DATABASE_URL="your-connection-string" \
  -e SESSION_SECRET="your-secret" \
  ghcr.io/open-wander/ramble:latest

Documentation

Full documentation is available at:

Deployment

For production setup and self-hosting instructions, see the Self-Hosting Guide.

License

MPL-2.0