agentsclimarketplace

Glitchtip

Skill Lu1sDV/skillsmd/glitchtip

Use when deploying, configuring, integrating, or troubleshooting GlitchTip — including self-hosted installation, SDK setup, source maps, sentry-cli, uptime monitoring, alerting, environment variables, Docker Compose, Helm, social auth, and migration from SentryFrom its SKILL.md

Install
npx -y skills add Lu1sDV/skillsmd --skill glitchtip

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

2 things to look at

  • no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.
  • 1 stars1 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

SKILL.md

12.3 KB, ~3.2k tokens by cl100k_base, as published. Nobody here has run it

GlitchTip

Open-source, Sentry API-compatible error tracking and uptime monitoring. Django + PostgreSQL backend, Angular frontend. Runs on 256MB RAM (all-in-one) or 512MB (standard).

When to Use

  • Deploying GlitchTip self-hosted (Docker Compose, Helm, or manual)
  • Integrating Sentry SDKs (Python, JS, Ruby, etc.) with a GlitchTip DSN
  • Configuring source maps upload via sentry-cli
  • Setting up uptime monitoring and alerting (email, webhooks)
  • Troubleshooting event ingestion, worker failures, or Celery issues
  • Migrating from Sentry to GlitchTip

When NOT to Use

  • Sentry SaaS (sentry.io) — compatible SDK-side, but different server admin
  • Application Performance Monitoring (APM) — GlitchTip is error tracking only

Quick Reference

ResourceURL
Hosted (US)app.glitchtip.com
Hosted (EU)eu.glitchtip.com
SDK docsglitchtip.com/sdkdocs
Install guideglitchtip.com/documentation/install
CLI (gtc)pip install glitchtip-cli

Deployment

Docker Compose (recommended)

# Download sample compose file
curl -sLO https://glitchtip.com/assets/docker-compose.sample.yml
mv docker-compose.sample.yml compose.yml
# Edit environment variables, then:
docker compose up -d
# Upgrade: docker compose pull && docker compose stop && docker compose up -d

Minimal variant: compose.minimal.yml — all-in-one mode, ~256MB RAM.

Kubernetes (Helm)

helm repo add glitchtip https://gitlab.com/api/v4/projects/16325141/packages/helm/stable
helm install glitchtip glitchtip/glitchtip

Externally managed PostgreSQL recommended. Supports pod disruption budgets and anti-affinity for HA.

Managed Platforms

PikaPods, Elestio, Nodion, Railway (one-click template), RepoCloud.

Configuration

All via environment variables. Set in compose.yml or Helm values.

Required

VariablePurpose
SECRET_KEYRandom string for Django security
DATABASE_URLPostgreSQL 14+ connection string
GLITCHTIP_DOMAINFull URL with scheme (https://glitchtip.example.com)
DEFAULT_FROM_EMAILSender address for notifications

Email

MethodConfig
SMTPEMAIL_URL=smtp://user:pass@host:port
MailgunMAILGUN_API_KEY + EMAIL_BACKEND=anymail.backends.mailgun.EmailBackend
SendGridSENDGRID_API_KEY + EMAIL_BACKEND=anymail.backends.sendgrid.EmailBackend
Console (dev)EMAIL_URL=consolemail://

Also supports Postmark, Mailjet, Mandrill, SparkPost, Brevo via Anymail.

Data Retention

VariableDefault
GLITCHTIP_MAX_EVENT_LIFE_DAYS90
GLITCHTIP_MAX_TRANSACTION_EVENT_LIFE_DAYS(inherits above)
GLITCHTIP_MAX_FILE_LIFE_DAYS(inherits above)
GLITCHTIP_MAX_UPTIME_CHECK_LIFE_DAYS(inherits above)

Cache & Workers

VariableDefaultPurpose
VALKEY_URLredis://:pass@host:port/db (Valkey/Redis 7+)
DATABASE_POOL_MAX_SIZE20psycopg connection pool
GRANIAN_WORKERS1Web server workers (async, rarely needs >1)
VTASKS_CONCURRENCY20Background task concurrency

Set VALKEY_URL to empty string to disable and use PostgreSQL as queue.

Feature Flags & Security

VariableDefaultPurpose
ENABLE_USER_REGISTRATIONtrueAllow self-signup
ENABLE_ORGANIZATION_CREATIONfalseAllow users to create orgs
GLITCHTIP_ENABLE_UPTIMEtrueUptime monitoring
GLITCHTIP_ENABLE_MCPfalseModel Context Protocol server
ENABLE_OBSERVABILITY_APIfalsePrometheus metrics
ALLOWED_HOSTS*Comma-separated allowed domains
CSRF_TRUSTED_ORIGINSReverse proxy origins
BASE_PATHSubpath hosting (/glitchtip)

File Storage

BackendDEFAULT_FILE_STORAGEKey Variables
AWS S3 / DO Spacesstorages.backends.s3boto3.S3Boto3StorageAWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, AWS_STORAGE_BUCKET_NAME
Azure Blobstorages.backends.azure_storage.AzureStorageAZURE_ACCOUNT_NAME, AZURE_ACCOUNT_KEY, AZURE_CONTAINER
GCSstorages.backends.gcloud.GoogleCloudStorageGS_BUCKET_NAME, GS_PROJECT_ID, GOOGLE_APPLICATION_CREDENTIALS

SDK Integration

GlitchTip uses Sentry SDKs — 58 implementations across 18 languages. Configure any Sentry SDK by pointing the DSN to the GlitchTip instance:

https://<SENTRY_KEY>@<GLITCHTIP_DOMAIN>/<PROJECT_ID>

Find the DSN in Project Settings > Security Endpoint.

Supported Platforms

JavaScript: Browser, React, Angular, Vue, Ember, Next.js, Backbone Node.js: Express, Koa, Connect, plain Node Python: Django, Flask, Celery, FastAPI (ASGI), AWS Lambda, WSGI, + 10 more PHP: Laravel, Symfony, Drupal, Monolog Ruby: Rails, Rack Java: Android, Log4j, Logback, App Engine Go: net/http, plain Go C#: ASP.NET Core Rust, Elixir, Flutter, React Native, Electron, Cordova, C/C++, Objective-C

Reduce Event Volume

sentry_sdk.init(
    dsn="...",
    traces_sample_rate=0.01,  # 1% of transactions
    sample_rate=0.5,          # 50% of errors
)

Source Maps (sentry-cli)

GlitchTip is Sentry API-compatible but does not support the newer artifact-bundle/debug-ID upload flow. Use legacy release-based uploads only.

Prerequisites: File storage must be configured (S3/Azure/GCS or local volume) — source maps are storage-backed, not just metadata.

Discover Org & Project Slugs

# Slugs ≠ display names. Query the API to find correct values:
curl -s https://<GLITCHTIP_DOMAIN>/api/0/projects/ \
  -H "Authorization: Bearer <AUTH_TOKEN>" | jq '.[].slug'

Legacy Upload Workflow

# 1. Set release in your SDK init: release: "<RELEASE_ID>"
# 2. Build with source maps enabled
# 3. Upload (--url is a GLOBAL flag, must precede subcommand):
sentry-cli --url https://<GLITCHTIP_DOMAIN> releases \
  --org <org-slug> --project <project-slug> \
  files "<RELEASE_ID>" upload-sourcemaps ./dist \
  --url-prefix "~/"

Bundler Plugin (Vite/Webpack/esbuild/Rollup)

// Use uploadLegacySourcemaps — the default artifact-bundle mode
// triggers 404 on GlitchTip's /artifactbundle/assemble/ endpoint
sentryPlugin({
  url: "https://<GLITCHTIP_DOMAIN>",  // REQUIRED — defaults to sentry.io
  authToken: process.env.SENTRY_AUTH_TOKEN,
  org: "<org-slug>",
  project: "<project-slug>",
  release: { uploadLegacySourcemaps: "./dist" },
})

Next.js Specifics

  • Set productionBrowserSourceMaps: true in next.config.js
  • Pass sentryUrl (not url) into withSentryConfig
  • Watch for trailing slashes in the instance URL — they can break uploads

Gotchas

GotchaDetail
.sentryclirc ignoredBundler plugin v2 no longer reads .sentryclirc — pass config via plugin options or env vars (SENTRY_URL, SENTRY_AUTH_TOKEN, SENTRY_ORG, SENTRY_PROJECT)
CLI calls sentry.io--url is a global flag — must come before the subcommand, not after
Auth token vs DSNDSN = SDK event ingestion. Auth token = CLI/API operations (Profile > Auth Tokens). Do not mix them
Upload succeeds, UI emptyCLI output can be decoupled from server persistence — always check server logs for 500s
releases finalize failsNot fully supported on GlitchTip — skip finalize, rely on release creation + artifact upload
Proxy/TLS false 401Corporate proxies cause "Invalid token" errors — enable sentry-cli --log-level debug, verify proxy env vars are full URLs

Uptime Monitoring

Four monitor types:

TypeBehavior
PingHTTP HEAD request (most common)
GETHTTP GET, validates expected status code
POSTHTTP POST, validates expected status code
HeartbeatAwaits inbound requests from your app at a generated URL

Link monitors to a project with email alerts configured for status change notifications.

Integrations

Alerting

Configure in Projects > Alert Recipients:

  • Email: Team member notifications on error frequency thresholds
  • Webhooks: POST to any URL on alert trigger

External Tools

ToolSetup
GitLabSettings > Monitor > Error Tracking > Sentry provider > GlitchTip URL + Auth Token
GrafanaData source > Sentry type > GlitchTip URL + org + Auth Token

Auth tokens: Profile > Auth Tokens (scope: read-only or full).

Social Auth (OAuth)

Configure via Django Admin (/admin/socialaccount/socialapp/):

GitHub, GitLab, Google, Microsoft, Gitea, DigitalOcean, NextCloud, Okta, OpenID Connect (Keycloak, etc.)

Callback URL: https://example.com/accounts/<provider>/login/callback/

OpenID Connect settings:

{ "server_url": "https://idp.example.com/auth/realms/realm/.well-known/openid-configuration" }

CLI Tool (gtc)

pip install glitchtip-cli
gtc list      # list organizations
gtc create    # create organization
gtc delete    # delete organization
gtc members   # show org membership

First run prompts for API token and instance URL. Config saved to .env.

Troubleshooting

IssueFix
Events not appearingVerify DSN, check SDK sampleRate, confirm GLITCHTIP_DOMAIN matches
High event volumeLower traces_sample_rate / sample_rate in SDK config
Email not sendingCheck EMAIL_URL or provider API key, try consolemail:// for debugging
401 on API/integrationRegenerate Auth Token in Profile > Auth Tokens
Worker not processingCheck VALKEY_URL, ensure worker container running, verify VTASKS_CONCURRENCY
Out of memoryUse all-in-one mode (compose.minimal.yml) or increase RAM to 512MB+
Uptime checks failingVerify monitor URL accessible from GlitchTip server, check expected status code
Social auth not workingVerify callback URL, check Django Admin socialaccount config
Search not workingCheck PostgreSQL text_search_config for non-English languages
Disk growing fastLower GLITCHTIP_MAX_EVENT_LIFE_DAYS, check source map / file retention
404 on /artifactbundle/assemble/GlitchTip doesn't support artifact-bundle flow — switch to uploadLegacySourcemaps or releases files upload-sourcemaps
"Nothing to upload" but UI emptyCheck file storage config (S3/volume), inspect server logs for 500s on assemble endpoint
debug_id_or_release_requiredUpload only .js + .map pairs, not entire dist/ — remove files without matching maps
files_fileblob_checksum_key duplicateClean release artifacts before re-uploading identical builds; upload is not idempotent
releases finalize → "version required"Skip finalize — not fully supported on GlitchTip. Use release creation + artifact upload only
CLI sends to sentry.io unexpectedly--url must precede subcommand; check .sentryclirc defaults.url; bundler plugin v2 ignores .sentryclirc
Stack traces stay minifiedVerify: (1) storage has files, (2) release value matches SDK init, (3) --url-prefix matches runtime paths

Common Mistakes

MistakeFix
Using Sentry SDK features unsupported by GlitchTipCheck GlitchTip compatibility — no performance tracing, no replays
Missing GLITCHTIP_DSN env varSDK silently drops events without a valid DSN
Source maps not matching release versionsentry-cli releases files <release> upload-sourcemaps must match release in SDK init
Running without Redis/Celery workersEvents queue but never process — always run celery-worker service
Setting DEBUG=True in productionLeaks secrets in error pages; use ENVIRONMENT=production

What ships with it: 1 file

2.0 KB alongside SKILL.md

Keep looking

Skills are one crate of 325,949. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.