Skills DirectorySkills Directory
SkillsLearnSecurityCategoriesDocsCommunityBlog
Sign InSubmit Skill
Skills Directory

Security-tested agent skills for Claude, coding agents, and AI workflows.

Directory

  • Browse Skills
  • All Skills A–Z
  • Claude Skills
  • Claude Code Skills
  • Agent Skills
  • Categories
  • Submit a Skill

Learn

  • Learn Hub
  • Install Claude Skills
  • Write SKILL.md
  • Skills vs MCP
  • Directories Compared

Security

  • Security
  • Methodology
  • Secure Claude Skills
  • Security Badges

Company

  • About
  • Community
  • Blog
  • API Docs
  • Advertise

2026 Skills Directory. All rights reserved.

Back to skills

Glitchtip

BSecurity

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 Sentry

2 stars
0 votes
0 copies
0 views
Added 9/19/2026
ai-agentsjavascriptpythonrustgojavarubyphpc++c#bash

Works with

cliapimcp

Security Analysis

B76/100
mediumUses curl or wget to download content
criticalExfiltrates credentials via HTTP — exact pattern from Snyk ToxicSkills study
mediumInstalls packages at runtime which could introduce malicious dependencies

Scanned 9/19/2026

Install to Claude Code

$npx -y skills add Lu1sDV/skillsmd --skill glitchtip --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Glitchtip?

Add the live security badge to your README — it updates automatically with every re-scan.

Security grade badge for Glitchtip
[![Security: B — Skills Directory](https://www.skillsdirectory.com/api/skills/lu1sdv-glitchtip/badge)](https://www.skillsdirectory.com/skills/lu1sdv-glitchtip)

More formats (shields.io, HTML) on the badges page.

Download Zip
Files
SKILL.md
---
name: glitchtip
description: 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 Sentry
---

# 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).

- Site: https://glitchtip.com
- Docs: https://glitchtip.com/documentation
- API: https://app.glitchtip.com/api/docs
- Repo: https://gitlab.com/glitchtip/glitchtip-backend
- License: MIT

## 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

| Resource | URL |
|----------|-----|
| Hosted (US) | `app.glitchtip.com` |
| Hosted (EU) | `eu.glitchtip.com` |
| SDK docs | `glitchtip.com/sdkdocs` |
| Install guide | `glitchtip.com/documentation/install` |
| CLI (gtc) | `pip install glitchtip-cli` |

## Deployment

### Docker Compose (recommended)

```bash
# 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)

```bash
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

| Variable | Purpose |
|----------|---------|
| `SECRET_KEY` | Random string for Django security |
| `DATABASE_URL` | PostgreSQL 14+ connection string |
| `GLITCHTIP_DOMAIN` | Full URL with scheme (`https://glitchtip.example.com`) |
| `DEFAULT_FROM_EMAIL` | Sender address for notifications |

### Email

| Method | Config |
|--------|--------|
| SMTP | `EMAIL_URL=smtp://user:pass@host:port` |
| Mailgun | `MAILGUN_API_KEY` + `EMAIL_BACKEND=anymail.backends.mailgun.EmailBackend` |
| SendGrid | `SENDGRID_API_KEY` + `EMAIL_BACKEND=anymail.backends.sendgrid.EmailBackend` |
| Console (dev) | `EMAIL_URL=consolemail://` |

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

### Data Retention

| Variable | Default |
|----------|---------|
| `GLITCHTIP_MAX_EVENT_LIFE_DAYS` | 90 |
| `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

| Variable | Default | Purpose |
|----------|---------|---------|
| `VALKEY_URL` | — | `redis://:pass@host:port/db` (Valkey/Redis 7+) |
| `DATABASE_POOL_MAX_SIZE` | 20 | psycopg connection pool |
| `GRANIAN_WORKERS` | 1 | Web server workers (async, rarely needs >1) |
| `VTASKS_CONCURRENCY` | 20 | Background task concurrency |

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

### Feature Flags & Security

| Variable | Default | Purpose |
|----------|---------|---------|
| `ENABLE_USER_REGISTRATION` | true | Allow self-signup |
| `ENABLE_ORGANIZATION_CREATION` | false | Allow users to create orgs |
| `GLITCHTIP_ENABLE_UPTIME` | true | Uptime monitoring |
| `GLITCHTIP_ENABLE_MCP` | false | Model Context Protocol server |
| `ENABLE_OBSERVABILITY_API` | false | Prometheus metrics |
| `ALLOWED_HOSTS` | `*` | Comma-separated allowed domains |
| `CSRF_TRUSTED_ORIGINS` | — | Reverse proxy origins |
| `BASE_PATH` | — | Subpath hosting (`/glitchtip`) |

### File Storage

| Backend | `DEFAULT_FILE_STORAGE` | Key Variables |
|---------|----------------------|---------------|
| AWS S3 / DO Spaces | `storages.backends.s3boto3.S3Boto3Storage` | `AWS_ACCESS_KEY_ID`, `AWS_SECRET_ACCESS_KEY`, `AWS_STORAGE_BUCKET_NAME` |
| Azure Blob | `storages.backends.azure_storage.AzureStorage` | `AZURE_ACCOUNT_NAME`, `AZURE_ACCOUNT_KEY`, `AZURE_CONTAINER` |
| GCS | `storages.backends.gcloud.GoogleCloudStorage` | `GS_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

```python
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.

- SDK docs: https://glitchtip.com/sdkdocs
- Install/storage guide: https://glitchtip.com/documentation/install

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

### Discover Org & Project Slugs

```bash
# 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

```bash
# 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)

```javascript
// 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

| Gotcha | Detail |
|--------|--------|
| `.sentryclirc` ignored | Bundler 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 DSN | DSN = SDK event ingestion. Auth token = CLI/API operations (Profile > Auth Tokens). Do not mix them |
| Upload succeeds, UI empty | CLI output can be decoupled from server persistence — always check server logs for 500s |
| `releases finalize` fails | Not fully supported on GlitchTip — skip finalize, rely on release creation + artifact upload |
| Proxy/TLS false 401 | Corporate proxies cause "Invalid token" errors — enable `sentry-cli --log-level debug`, verify proxy env vars are full URLs |

## Uptime Monitoring

Four monitor types:

| Type | Behavior |
|------|----------|
| **Ping** | HTTP HEAD request (most common) |
| **GET** | HTTP GET, validates expected status code |
| **POST** | HTTP POST, validates expected status code |
| **Heartbeat** | Awaits 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

| Tool | Setup |
|------|-------|
| **GitLab** | Settings > Monitor > Error Tracking > Sentry provider > GlitchTip URL + Auth Token |
| **Grafana** | Data 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:
```json
{ "server_url": "https://idp.example.com/auth/realms/realm/.well-known/openid-configuration" }
```

## CLI Tool (gtc)

```bash
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

| Issue | Fix |
|-------|-----|
| Events not appearing | Verify DSN, check SDK `sampleRate`, confirm `GLITCHTIP_DOMAIN` matches |
| High event volume | Lower `traces_sample_rate` / `sample_rate` in SDK config |
| Email not sending | Check `EMAIL_URL` or provider API key, try `consolemail://` for debugging |
| 401 on API/integration | Regenerate Auth Token in Profile > Auth Tokens |
| Worker not processing | Check `VALKEY_URL`, ensure worker container running, verify `VTASKS_CONCURRENCY` |
| Out of memory | Use all-in-one mode (`compose.minimal.yml`) or increase RAM to 512MB+ |
| Uptime checks failing | Verify monitor URL accessible from GlitchTip server, check expected status code |
| Social auth not working | Verify callback URL, check Django Admin socialaccount config |
| Search not working | Check PostgreSQL `text_search_config` for non-English languages |
| Disk growing fast | Lower `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 empty | Check file storage config (S3/volume), inspect server logs for 500s on assemble endpoint |
| `debug_id_or_release_required` | Upload only `.js` + `.map` pairs, not entire `dist/` — remove files without matching maps |
| `files_fileblob_checksum_key` duplicate | Clean 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 minified | Verify: (1) storage has files, (2) release value matches SDK init, (3) `--url-prefix` matches runtime paths |

## Common Mistakes

| Mistake | Fix |
|---------|-----|
| Using Sentry SDK features unsupported by GlitchTip | Check GlitchTip compatibility — no performance tracing, no replays |
| Missing `GLITCHTIP_DSN` env var | SDK silently drops events without a valid DSN |
| Source maps not matching release version | `sentry-cli releases files <release> upload-sourcemaps` must match `release` in SDK init |
| Running without Redis/Celery workers | Events queue but never process — always run `celery-worker` service |
| Setting `DEBUG=True` in production | Leaks secrets in error pages; use `ENVIRONMENT=production` |

Attribution

Lu1sDVLu1sDV
View sourceMore from Lu1sDV →
SSkills DirectorySkills Directory

Ship a skill? Prove it's safe.

Free 120-pattern security scan, letter grade, and an embeddable README badge.

Submit a skill

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments (0)

No comments yet. Be the first to comment!

SSkills DirectorySkills Directory

Ship a skill? Prove it's safe.

Free 120-pattern security scan, letter grade, and an embeddable README badge.

Submit a skill

Related Skills

Caveman

Ultra-compressed communication mode. Cuts token usage ~75% by speaking like caveman while keeping full technical accuracy. Supports intensity levels: lite, full (default), ultra, wenyan-lite, wenyan-full, wenyan-ultra. Use when user says "caveman mode", "talk like caveman", "use caveman", "less tokens", "be brief", or invokes /caveman. Also auto-triggers when token efficiency is requested.

1023331 votes

Hyperplan

Adversarial multi-agent planning skill. Self-orchestrates 5 hostile category members (unspecified-low, unspecified-high, deep, ultrabrain, artistry) via team-mode for ruthless cross-critique debate, distills only the defensible insights, then MANDATORILY hands the distilled insight bundle to the `plan` agent for executable plan formalization. Use when planning needs maximum rigor and surfacing of weak assumptions, blind spots, and over-engineering. Triggers: 'hyperplan', 'hpp', '/hyperplan', ...

686011 votes

Mcp Code Execution

Routes multi-tool workflows through MCP servers for large datasets and pipelines. Use when Bash tool overhead is limiting throughput on data-heavy tasks.

3331 votes

catchup

Recovers prior coding-agent session context by running `catchup <agent> --since-compact`, which extracts a clean summary of a previous Codex, Claude Code, Antigravity, OpenCode, or Pi Agent session. Use when the user says "catch up", "what did the last session do", "get me up to speed", "I switched agents", or asks to recover/summarize a previous session before continuing. Do NOT use for the current conversation, git history, or any non-agent log.

611 votes

math-skill

A comprehensive mathematical reasoning skill for AI assistants — handles arithmetic to research-level problems with rigorous step-by-step reasoning, systematic verification, and transparent uncertainty handling

381 votes
View all in ai-agents →