Quickstart
Sign in, create a project, point your Sentry-compatible SDK at your Ichnois DSN, and watch the dual-gate triage pipeline receive your first telemetry event — all in under 5 minutes.
Step 1 · Sign in & workspace creation
- Navigate to ichnoscope-wcc-30.vercel.app
- Sign in via Supabase Authentication (email magic link or team credentials).
- Your default workspace initialises automatically.
Step 2 · Create a project & obtain DSN
- Go to Fleet & Projects (
/app/projects) and click + Add Project. - Fill in project name, platform, and environment, then click Create Project.
- Copy your generated Ichnois DSN:
| 1 | https://proj_c76fccfd95bd@ichnoisapi.onrender.com/proj_c76fccfd95bd |
ichnoisapi.onrender.com. All telemetry ingestion goes through the 8-layer security perimeter before reaching the Core API.Step 3 · Connect your GitHub repository
- Navigate to Connections (
/app/connections). - Option A (Recommended): Click Install GitHub App (
Ichnois-Connection), authorise access, and select your repository. - Option B: Paste a GitHub Fine-Grained PAT with
Contents: ReadandIssues: Read/Writescope. - Link the project to
my-org/checkout-serviceon branchmain.
Step 4 · Instrument your backend service
Ichnois is 100% wire-compatible with standard Sentry SDKs. No custom binary agent needed — just point your SDK at your Ichnois DSN.
Python (FastAPI / Flask / Django)
| 1 | pip install sentry-sdk |
| 2 | |
| 3 | # sentry_sdk points to your Ichnois DSN — no Sentry SaaS account needed |
| 4 | import sentry_sdk |
| 5 | |
| 6 | sentry_sdk.init( |
| 7 | dsn="https://proj_c76fccfd95bd@ichnoisapi.onrender.com/proj_c76fccfd95bd", |
| 8 | traces_sample_rate=1.0, |
| 9 | environment="production", |
| 10 | release="v2.1.0", |
| 11 | ) |
Node.js / Express / Next.js
| 1 | npm install @sentry/node |
| 2 | |
| 3 | import * as Sentry from "@sentry/node"; |
| 4 | |
| 5 | Sentry.init({ |
| 6 | dsn: "https://proj_c76fccfd95bd@ichnoisapi.onrender.com/proj_c76fccfd95bd", |
| 7 | environment: "production", |
| 8 | tracesSampleRate: 1.0, |
| 9 | }); |
Go (Gin / Standard HTTP)
| 1 | package main |
| 2 | |
| 3 | import ( |
| 4 | "log" |
| 5 | "time" |
| 6 | "github.com/getsentry/sentry-go" |
| 7 | ) |
| 8 | |
| 9 | func main() { |
| 10 | err := sentry.Init(sentry.ClientOptions{ |
| 11 | Dsn: "https://proj_c76fccfd95bd@ichnoisapi.onrender.com/proj_c76fccfd95bd", |
| 12 | Environment: "production", |
| 13 | }) |
| 14 | if err != nil { |
| 15 | log.Fatalf("sentry.Init: %s", err) |
| 16 | } |
| 17 | defer sentry.Flush(2 * time.Second) |
| 18 | |
| 19 | sentry.CaptureMessage("Payment processor heartbeat failed") |
| 20 | } |
Next.js / TypeScript
| 1 | // sentry.client.config.ts / sentry.server.config.ts |
| 2 | import * as Sentry from "@sentry/nextjs"; |
| 3 | |
| 4 | Sentry.init({ |
| 5 | dsn: "https://proj_c76fccfd95bd@ichnoisapi.onrender.com/proj_c76fccfd95bd", |
| 6 | tracesSampleRate: 0.1, |
| 7 | environment: process.env.NODE_ENV, |
| 8 | }); |
Step 5 · Fire a test telemetry event
Execute a quick cURL envelope test to verify end-to-end ingestion without needing an instrumented service.
| 1 | curl -X POST "https://ichnoisapi.onrender.com/api/proj_c76fccfd95bd/envelope/" \ |
| 2 | -H "Content-Type: application/x-sentry-envelope" \ |
| 3 | --data-binary '{"event_id":"4a8f96e2b1034f7881c62534a780b852","sent_at":"2026-10-18T00:00:00Z"} |
| 4 | {"type":"event","content_type":"application/json"} |
| 5 | {"event_id":"4a8f96e2b1034f7881c62534a780b852","timestamp":1729209600,"environment":"production","exception":{"values":[{"type":"ZeroDivisionError","value":"division by zero","stacktrace":{"frames":[{"filename":"app/routers/checkout.py","lineno":42,"in_app":true}]}}]}}' |
/app/runs!Local offline replay (no network required)
Run the bundled fixture replay CLI against the included payment-service fixture. The --dry-run flag disables all outbound network calls, LLM queries, and GitHub publication.
| 1 | git clone https://github.com/bitroom-cat/Ichnois.git |
| 2 | cd Ichnois |
| 3 | pip install -r requirements.txt |
| 1 | python -m ichnoscope.replay \ |
| 2 | backend/bench/fixtures/payment_index_error.json \ |
| 3 | --dry-run |
| 1 | [pipeline] received event ea6811b4ff (KeyError: stripe_token) |
| 2 | [parse] in-app frame → checkout/views.py:147 |
| 3 | [dedupe] fingerprint 3a8c…9f12 — new incident |
| 4 | [blame] author: alice@example.com commit: d4e8f91 |
| 5 | [explain] domain=payments severity=P2 |
| 6 | [draft] GitHub issue prepared — awaiting human approval |
Dashboard reference
Fleet Operations & Dual-Gate Triage Center
Route: /app/overview & /app/runs
| 1 | INGESTED TELEMETRY | GATE 1 STAGING INBOX | GATE 2 AI APPROVAL | AUTO-PUBLISHED PRs |
| 2 | 1,429 Envelopes | 3 Awaiting Triage | 2 Ready to Publish | 48 GitHub Issues |
| 3 | +14% this hour | Requires Human Check | High Confidence 94% | Mean TTR: 4.2 mins |
| 4 | |
| 5 | SEVERITY INCIDENT TYPE SOURCE SERVICE FAILING FRAME SEEN STAGE ACTIONS |
| 6 | [ CRIT ] PaymentGatewayError checkout-service services/stripe.py:182 14x GATE 1 [Approve] [Dismiss] |
| 7 | [ HIGH ] KeyError: 'user_id' auth-api controllers/session.py:88 1x GATE 2 [Review] [Reject] |
| 8 | [ MED ] DatabaseDeadlock order-worker db/transactions.py:314 3x PUBLISHED [View #42] |
AI Root Cause Analysis & Deep Diagnostic Studio
Route: /app/runs/{run_id}
Each incident run shows: the failing frame, git blame attribution (commit SHA + author + timestamp), the bounded LLM root-cause synthesis, and a proposed fix diff — all awaiting your Gate 2 approval before touching GitHub.
Troubleshooting
Why did I receive "Security perimeter violation: Malformed character encoding"?
Standard Python/Node SDKs send GZIP-compressed envelopes by default. The Hybrid Telemetry Ingestion Engine (v2.1.0+) automatically identifies GZIP (\x1f\x8b) and Deflate streams and decompresses them on the fly. Upgrade to the latest Edge Gateway.
Why did I get "Invalid JSON syntax: Extra data"?
Modern Sentry SDKs send newline-delimited multi-JSON envelopes (header + item header + payload). The 4-Tier Hybrid Parser in Server A handles these gracefully and extracts both crash exceptions and session heartbeats.
I am a collaborator — can I connect my repository?
Via GitHub App: you must be an org admin or repo owner to install it. Via Personal Access Token: generate a Fine-Grained PAT with Contents: Read and Issues: Read/Write, then paste it under Connections → PAT Mode.
Are secrets or environment variables exposed to the AI?
No. All payloads pass through the synchronous DLP & PII scrubbing layer (Layer 7 of the Edge Perimeter) before entering the reasoning engine. Bearer tokens, passwords, cookies, and auth headers are masked with [REDACTED].