Skip to content

GlitchTip — READ access pro agenta (číst chyby přes REST API)

Rozdíl od glitchtip-agent-onboarding.md: onboarding = odesílání chyb DO GlitchTipu (DSN, Sentry SDK). Tenhle runbook = číst chyby VEN (agent nemá browser → REST API s bearer tokenem). Validováno 2026-07-13 (venom-agent token).

Přístupový model (proč to funguje bez „přidávání do projektu")

  • Žádné týmy neexistují (teams_team = 0 řádků). Přístup k projektům jede přes org roli, ne team membership.
  • Org studio-60 (id 1). Uživatel agents@studio60.cz (users_user id 34, org-user id 2) má roli ADMIN (role=1)vidí všechny projekty org-wide (badwolf, billit, pulse, s60-auth, s60-mail, venom). (libor = role=3 OWNER.)
  • Takže agent „nemá přístup" = jen mu chybí token, ne oprávnění. Read už na úrovni GlitchTipu funguje.

Token model

  • Tabulka api_tokens_apitoken (glitchtip DB na pg-alfa 100.125.3.121:6432, dostupná přes SU).
  • Sloupce: id, token, label, scopes, created, user_id. token = plaintext bearer (GlitchTip nehashuje → lze číst i vytvořit přímo v DB).
  • scopes = 9223372036854775807 (max int64 = full; read funguje). Runbook onboarding varuje „scopes=0 nefunguje" — proto full.
  • Vzor: 1 token na agenta (label <agent>-agent), vše pod userem 34.

Postup: vytvořit read token pro nového agenta

# 1) generuj bearer (64 hex)
TOK=$(openssl rand -hex 32)

# 2) INSERT do glitchtip DB (user agents=34, full scope) — pg-alfa SU
ssh root@100.125.3.121 "sudo -u postgres psql -d glitchtip -tA -v ON_ERROR_STOP=1 -c \
  \"INSERT INTO api_tokens_apitoken (token,label,scopes,created,user_id) \
    VALUES ('$TOK','<agent>-agent',9223372036854775807,now(),34) RETURNING id\""

# 3) VERIFY přes API (GlitchTip web běží na sentinelu 127.0.0.1:8000)
curl -s -H "Authorization: Bearer $TOK" \
  "http://127.0.0.1:8000/api/0/organizations/studio-60/projects/" | python3 -c "import sys,json;print([p['slug'] for p in json.load(sys.stdin)])"
curl -s -o /dev/null -w '%{http_code}\n' -H "Authorization: Bearer $TOK" \
  "http://127.0.0.1:8000/api/0/organizations/studio-60/issues/?project=<id>&limit=1"   # očekávej 200

# 4) předej agentovi INLINE relay zprávou (Tailscale-only) — token NIKDY do gitu/plaintextu jinam
send-message.sh <agent> INFO "GlitchTip read token" "TOKEN: $TOK  + API návod (viz níže)"
⚠️ Token v kroku 4 jde inline v relay zprávě ([[feedback_relay_safe]]) — agenti nemají přístup na sentinel. V konzoli maskuj.

API endpointy pro čtení (co dát agentovi)

  • Base: https://errors.studio60.cz · org slug studio-60
  • Projekty (id): s60-auth=1, pulse=2, billit=3, venom=4, badwolf=5, s60-mail=6

# poslední unresolved issues projektu
GET /api/0/organizations/studio-60/issues/?project=<id>&limit=25&query=is:unresolved
# detail issue
GET /api/0/organizations/studio-60/issues/<issue_id>/
# eventy issue (stacktrace)
GET /api/0/issues/<issue_id>/events/latest/
Vše Authorization: Bearer <token>.

Existující read tokeny (api_tokens_apitoken)

id label user pozn.
1 sentinel-admin libor (OWNER) admin
2 agents-readonly agents sdílený read (fallback)
3 pulse-agent agents
4 billit-agent agents
5 venom-agent agents vytvořen 2026-07-13

Revokace

ssh root@100.125.3.121 "sudo -u postgres psql -d glitchtip -c \"DELETE FROM api_tokens_apitoken WHERE label='<agent>-agent'\""

Souvisí: glitchtip-agent-onboarding.md (DSN/odesílání), ../services/glitchtip/INDEX.md.