Pre-launch — Gluecron is in final validation. Public signups and git hosting for non-owner users open after launch review.
Help & quickstart

Ship onto gluecron in five minutes.

Everything an owner migrating a product onto gluecron needs in one page. If something's unclear, open an issue — link at the bottom.

Step 01

Getting started

Register, verify, and create your first repo.

1. Register an account. Head to /register, pick a username, and set a password. Usernames are your public handle and appear in every repo URL.
2. Verify your email. We send a one-time link the first time you sign in. Verified addresses can receive issue, PR, and gate-run notifications.
3. Create your first repo. From the dashboard hit New repository, or visit /new. Pick public or private, add a README, and you're ready to clone.
Protocol

Git over HTTPS

HTTPS works out of the box. Authenticate with your account password or, better, a personal access token.

Clone
git clone https://<your-host>/<owner>/<repo>.git
Push
git push origin main
Pull
git pull origin main
Protocol

Git over SSH

SSH avoids typing credentials and is recommended for day-to-day work.

1. Add your key. Copy your public key (usually ~/.ssh/id_ed25519.pub) and paste it into /settings/keys. Keys take effect immediately.
2. Clone using the SSH URL.
git clone git@<your-host>:<owner>/<repo>.git
3. Rotate or revoke any key from the same settings page — useful when a laptop walks off.
Migration

Importing from GitHub

One-time mirror with full history, branches, and tags.

Visit /import, paste the source URL, and gluecron will mirror the repository — full history, branches, and tags. The mirror is a one-time copy; subsequent pushes land on gluecron, not the source. Private sources need a PAT on the source side.
Integrations

Webhooks

Per-repo webhooks live at /:owner/:repo/settings/webhooks. Register a URL, pick events (push, issue, pr, star), and set a secret.

HMAC signature. Every delivery includes X-Gluecron-Signature: sha256=<hex>. Compute HMAC-SHA256 over the raw request body using your secret and compare in constant time.
Payload shape.
{
  "event": "push",
  "repo": { "owner": "acme", "name": "api" },
  "ref": "refs/heads/main",
  "before": "<sha>",
  "after": "<sha>",
  "commits": [ /* ... */ ],
  "sender": { "username": "kit" }
}
Deliveries are retried with exponential backoff; inspect the last N attempts from the webhook's settings page.
Integrations

Slack & Discord

Install the Gluecron bot from /settings/integrations to drive your repos from chat. PR opens, merges, and AI review summaries also push back into the channel.

Slash commands.
/gluecron pr list owner/repo
/gluecron pr open owner/repo "Add dark mode"
/gluecron issue list owner/repo
/gluecron issue create owner/repo "Bug in foo()"
/gluecron spec ship "rewrite the cron scheduler"
/gluecron chat "How do I run the tests?"
/gluecron help
Signature verification. Slack requests are checked against your signing secret (HMAC-SHA256 over v0:<timestamp>:<body>). Discord interactions are verified against your Application Public Key with Ed25519. Bad signatures get a 401.
Outbound notifications. Once installed, PR opens / merges, issue creates, and AI review summaries auto-post to your channel. Disable on a per-workspace basis from /settings/integrations.
Auth

Personal access tokens

Tokens authenticate CLI clients, CI jobs, and scripts. Create them at /settings/tokens; the value is shown once, so copy it immediately. Tokens start with glc_.

Example: list your repos via the API.
curl -H "Authorization: Bearer glc_your_token_here" \
  https://<your-host>/api/v2/repos
Tokens can also authenticate git over HTTPS — use the token as the password in place of your account password.
Quality

Gates & AI review

Push-time scanning + an AI pair reviewer on every PR.

Every push to the default branch (usually main) triggers a gate run: GateTest scans the diff for secrets, dependency advisories, and policy violations, while the AI reviewer reads the patch and comments on any PRs that touch the same files. Failing gates block the push by default; results appear on the commit page and in the repo's Gate runs tab. Configure gate policy per-repo in Settings → Gates.
AI-native

AI-native flow

Surfaces that ride on ANTHROPIC_API_KEY, with deterministic fallbacks when it's missing.

Issue → PR in one click. Open any issue you own and hit Build with AI in the header. The spec form pre-fills with the issue title + body and a Closes #N footer; Claude drafts the diff, opens a draft PR, and the merge auto-closes the originating issue.
AI-drafted PR descriptions. The new-PR form has a Suggest description with AI button that runs generatePrSummary against git diff base...head and fills the description with a structured summary (Why · Key changes · Test plan · Risks).
Auto-review on PR open. Non-draft PRs get a summary comment plus inline file/line annotations from the AI reviewer. A second comment posts label + reviewer + priority suggestions (the AI Triage block). All suggestions; nothing applied automatically.
Repo-wide AI surfaces. Explain a codebase, run semantic search, ask the chat anything about the repo, generate failing test stubs from a source file (the Tests link in the repo nav), and draft full PRs from a plain-English spec via Spec to PR. All require ANTHROPIC_API_KEY; without it the surfaces degrade gracefully to deterministic fallbacks.
Scheduled workflows. Drop on: schedule: [{cron: "0 * * * *"}] into any .gluecron/workflows/*.yml. The autopilot ticker fires the cron from the same node that handles your pushes — no external scheduler needed.
Discover

New AI surfaces

Seven cross-repo dashboards that ship with Gluecron — find them under the AI dropdown in the top nav, plus the always-on Pulls, Issues, Activity, and Inbox tabs.

/pulls — global pull-request dashboard. Every open PR across every repo you own or follow, grouped by review state. Filter by author, label, or repo. Replaces tab-flicking between repos when you just want to know "what needs me right now."
/issues — global issue dashboard. Same shape as /pulls for issues. Combine the ai:build filter with assigned to me to scan everything Claude is queued to build for you.
/inbox — unified inbox. Mentions, review requests, CI failures, and AI-generated actions in one stream. Filters at the top: filter=mentions, filter=review, filter=ci, filter=ai. The badge count next to Inbox in the nav is unread items.
/activity — your timeline. A chronological feed of every push, merge, comment, and AI action across your repos. Useful for writing your own weekly recap and for spotting when an autopilot task fired without you noticing.
/standups — daily AI brief. Claude writes a short standup at your configured time (defaults to 09:00 UTC) summarising yesterday's pushes, today's open PRs, and anything blocking. Toggle the cadence in Settings → Standups. Hit Refresh on the page to regenerate for the current window.
/voice — voice-to-PR. Hit record, speak a feature spec, stop — Claude transcribes, picks the target repo, drafts the diff, and opens a draft PR. The whole loop fits in a single browser tab; no native app, no Whisper setup. Uses the browser's MediaRecorder API under the hood — Chrome, Safari 17+, Firefox.
/refactors — multi-repo refactor agent. Paste a brief like "rename the cents field to amountMinor across every API repo." Claude walks each repo, generates a patch, and opens a draft PR per repo. Tracking dashboard shows per-repo status (drafted / pushed / merged / failed).
/specs — spec-to-PR loop.Every .gluecron/specs/*.md file across your repos shows up here. Add a spec, push it, then either run the spec-to-PR generator from the page or label the file and let autopilot do it overnight.
Per-repo

Chat with a repo

Rubber-duck a question against any single repo. Powered by the semantic code index — Claude pulls the relevant files on every turn so answers stay grounded in your actual code.

Visit /:owner/:repo/chat on any repo you can read (the dashboard Quick actions panel has a one-click link). Ask "where does auth happen?", "what does this Drizzle migration do?", "draft a test for <file>". The chat scrolls forever and the context is freshly retrieved on every message — so file moves and recent pushes are immediately visible to Claude.
Foundation: semantic search. /:owner/:repo/semantic-search?q=… is the underlying retrieval. Chunks are embedded with voyage-code-3 when VOYAGE_API_KEY is set; otherwise a lexical fallback (still useful — same chunking and ranking, just no embeddings).
Per-repo

Branch previews

Every non-default branch with a Dockerfile or a .gluecron/preview.yml gets an ephemeral preview URL. Spin up, share, tear down — automatically on push.

Open /:owner/:repo/previews to see the list of live previews for the repo. Each row shows the branch, the last commit, the preview URL, and the most recent build log. Previews self-destruct when the branch is deleted or merged.
Linked from PRs. Whenever a PR is opened against the default branch, the PR header surfaces the preview URL so reviewers click straight through to a running instance instead of pulling locally.
Per-PR

Runnable PR sandboxes

Every PR can spin up a live, executable sandbox at pr-N-owner-repo.sandbox.gluecron.com. Reviewers click "Try this PR live" and poke the change in a real browser before merging. Auto-destroys after 4h.

Opt-in defaults. Per-PR sandboxes are triggered manually from the PR detail page; flip auto_pr_sandbox on in repo settings to make every newly opened PR provision one automatically.
Customise via .gluecron/playground.yml. Commit this file at the repo root to control what the sandbox runs. If it's missing, Claude drafts one from your repo on first provision.
# .gluecron/playground.yml
runtime: docker
image: node:20-alpine
ports: [3000]
seed:
  - "npm install"
  - "node scripts/seed-demo.js"
command: "npm start"
env:
  NODE_ENV: development
API. Poll GET /:owner/:repo/pulls/:n/sandbox for the status JSON. POST .../sandbox/provision and POST .../sandbox/destroy drive the lifecycle. Sandboxes are deterministic by PR number, so the URL is stable across re-provisions.
Per-repo

Cloud dev environments

Hit /:owner/:repo/dev to get a hosted VS Code IDE in your browser, backed by a cold-start container. One env per (repo, user); idle envs stop themselves after 30 minutes so we don't leak compute. Customise per-repo via .gluecron/dev.yml.

Opt-in defaults. Cloud dev environments are off by default. Flip the toggle in repo settings under Settings → Dev environments to surface the route on your repo.
Customise via .gluecron/dev.yml. Commit this file at the repo root to control what your dev env runs. If it's missing, Claude drafts one from your repo on first start.
# .gluecron/dev.yml — Node example
image: node:20-alpine
ports: [3000]
install:
  - npm install
postCreate:
  - npm run db:seed
command: npm run dev
recommendedExtensions:
  - dbaeumer.vscode-eslint
  - esbenp.prettier-vscode
# .gluecron/dev.yml — Python example
image: python:3.12-slim
ports: [8000]
install:
  - pip install -r requirements.txt
postCreate:
  - python manage.py migrate
command: python manage.py runserver 0.0.0.0:8000
recommendedExtensions:
  - ms-python.python
  - ms-python.vscode-pylance
# .gluecron/dev.yml — Rust example
image: rust:1.78
ports: [8080]
install:
  - cargo fetch
postCreate: []
command: cargo run
recommendedExtensions:
  - rust-lang.rust-analyzer
  - vadimcn.vscode-lldb
API. POST /api/v2/repos/:owner/:repo/dev/start provisions (or warms-up) an env; POST /api/v2/repos/:owner/:repo/dev/stop gracefully stops one; and GET /api/v2/repos/:owner/:repo/dev/status returns the JSON shape used by the in-page poller.
Idle sweep. The dev-env-idle-sweep autopilot task runs every 5 minutes and stops any env whose last_active_at + idle_minutes has passed. Each page hit bumps last_active_at so an open IDE tab keeps the env warm.
Per-repo

Migration assistant

When you touch a Drizzle schema, Claude proposes the corresponding migration SQL and a one-line rollback plan. No more "did I forget the migration?" PRs.

Visit /:owner/:repo/migrations/propose and point the assistant at a recent schema change. It returns the SQL diff, an up/down script, and a checklist of edge cases (NULL→NOT NULL, type widening, default backfill). Save the suggestion straight into drizzle/NNNN_*.sql when you're happy with it.
Discoverability. Surfaced from Settings → Integrations on the repo, and auto-pinged when a push modifies src/db/schema.ts without a sibling migration file.
PR power

PR slash commands

Type / at the start of a PR comment to invoke Claude inline. The composer hint shows the list as you type.

Available commands.
/review              Re-run the AI reviewer on the latest diff
/summarise           Drop a fresh PR summary into the description
/test-plan           Generate a test plan from the diff
/explain-this        Plain-English summary of one file or hunk
/risk                Score the diff for breaking-change risk
/migrate             Propose a Drizzle migration for schema changes
/release-notes       Draft release notes covering this PR only
/help                List every command
Commands are deterministic when ANTHROPIC_API_KEY is missing (fallbacks summarise file lists; no model output). They also work from the CLI: gluecron pr cmd /review.
Releases

AI release notes

The release form has a Generate notes button that drafts a polished changelog from every PR merged since the previous tag.

From /:owner/:repo/releases/new, type a new tag name and click Generate notes. Claude calls POST /api/v2/repos/:owner/:repo/releases/notes with the from/to tags and returns markdown grouped by Features, Fixes, Internal. Edit before publishing or accept as-is.
Multi-agent

Agent multiplayer

Mint scoped tokens for AI agents, give each its own branch namespace + daily budget, and let them coordinate through the lease API so two Claudes never touch the same file.

Manage agents at /settings/agents. Each agent gets a name, a branch namespace (refs/heads/<namespace>*), and a daily spend cap. Tokens are shown once on creation — copy them immediately. The same page lists the most recent leases (work-in-progress markers) per agent.
Lease API. POST /api/v2/agents/leases acquires a lease on an issue, PR, or file path. Agents see currently-held leases via GET /api/v2/agents/leases and back off when a conflict is hit. Full protocol is in docs/multiplayer.md on the gluecron source repo.
API

Semantic search API

The same index that powers Chat with a repo is available as a JSON endpoint.

curl -H "Authorization: Bearer glc_…" \
  "https://<your-host>/api/v2/repos/<owner>/<repo>/semantic-search?q=password+hashing&limit=10"
Returns a JSON array of { path, startLine, endLine, snippet, score } objects sorted by relevance. When VOYAGE_API_KEY is unset on the server the endpoint falls back to lexical ranking — useful for offline / air-gapped installs.
CLI

Setup AI commits

Let Claude write your commit messages. Two ways in: an explicit gluecron commit wrapper, or a git hook that fires whenever git commit runs without -m.

1. Install the CLI. Grab a personal access token from /settings/tokens, then:
bun build --compile --outfile gluecron cli/gluecron.ts
sudo mv gluecron /usr/local/bin/
gluecron login   # paste the token
2. Use gluecron commit. Stage your changes the usual way, then:
gluecron commit          # AI drafts → [y]es / [e]dit / [n]o
gluecron commit -a       # same, but stages tracked changes first
gluecron commit -m "..." # plain pass-through, no AI
The draft is a Conventional Commit by default (feat(scope): subject + body explaining why). Pass --plain for a plain-English subject.
3. Or: install the git hook. One-time setup; every plain git commit (no -m) gets a draft pre-filled into the editor.
cd /path/to/your/repo
gluecron hook install commit-msg
# undo:
gluecron hook uninstall commit-msg
The hook only fires when the message is empty — explicit -m, --amend, and merge commits are left untouched.
All AI calls hit POST /api/v2/ai/commit-message, rate-limited to 60 requests/minute per token. If ANTHROPIC_API_KEY is unset on the server, the endpoint falls back to a deterministic heuristic so the CLI keeps working.
Power user

Keyboard shortcuts

Press ? on any page to pop the overlay.

gluecron ships a full keyboard-first mode — see /shortcuts for the complete cheat sheet. Press ? on any page to pop the overlay.
Reference

API

REST + GraphQL surfaces, both documented inline.

Full REST + GraphQL reference lives at /api/docs. The GraphQL explorer is at /api/graphql.
For AI vendors

Build-agent integration

Public spec for AI build-agent vendors (Holden Mercer, Cursor, Claude Code, etc.) who want to read issues, open PRs, and post review comments via the Gluecron API.

The full integration contract lives at /docs/build-agent-integration — endpoint list, auth scopes, webhook payloads, and theai:build label convention.
Prefer model-context-protocol over REST? Same page now documents the full 50+ MCP tool surface at /docs/build-agent-integration — every Gluecron action callable from any Claude/Cursor/etc. tool-use loop. The JSON-RPC endpoint is POST /mcp.
Self-host

Single-binary self-host

GitHub Enterprise Server is a 50 GB blob and a week of professional services. Gluecron self-host is a ~200 MB binary and 60 seconds. One curl, you own the whole stack.

One-liner.
curl -fsSL https://gluecron.com/install-server | bash
The script detects your OS + arch, downloads the right binary from /dist/, verifies SHA-256 against /dist/SHA256SUMS, installs to /opt/gluecron/bin/gluecron-server (or~/.gluecron/bin with no sudo), provisions Postgres, writes /etc/gluecron.env, runs migrations, and starts the systemd unit (linux) or launchd plist (darwin).
Hardware requirements.
  • 4 GB RAM (8 GB for teams > 20)
  • 20 GB disk for repos + Postgres data
  • Postgres 14+ (auto-installed via docker if missing)
  • Linux (x64 / arm64) or macOS (x64 / arm64)
Configuration walkthrough. The installer writes /etc/gluecron.env seeded from .env.example. At minimum, set:
  • DATABASE_URL — Postgres connection string
  • APP_BASE_URL — public URL of the instance
  • PORT — listen port (default 3010)
  • GIT_REPOS_PATH — bare-repo directory
Anything else (Anthropic key for AI features, GateTest callback secret, OAuth providers) can be added later without a restart via /admin/integrations.
Operations.
  • Backup. pg_dump $DATABASE_URL | gzip > gluecron-$(date +%F).sql.gz plus tar -czf repos-$(date +%F).tgz /opt/gluecron/repos.
  • Restore. Stop systemd, restore the SQL dump with gunzip -c < dump.sql.gz | psql $DATABASE_URL, untar the repos, and start the unit.
  • Upgrade. Re-run the installer — it overwrites the binary in place and restarts the service. The migrations runner is idempotent.
  • Logs. journalctl -u gluecron -f (linux) or tail -f ~/.gluecron/data/gluecron.err.log (darwin).
Versus GitHub Enterprise Server. GHES is a 50 GB OVA image, requires VMware/Hyper-V, and bills per-seat. Gluecron self-host is a single binary, runs anywhere bun runs, and is BYO-license.

Something missing? Open an issue on gluecron's source repo.