Skip to content
Ichnois
docs/quickstart

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:
Your project DSN
1https://proj_c76fccfd95bd@ichnoisapi.onrender.com/proj_c76fccfd95bd
The DSN points to Server A (Edge Gateway) at 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: Read and Issues: Read/Write scope.
  • Link the project to my-org/checkout-service on branch main.

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)

instrument.py
1pip install sentry-sdk
2
3# sentry_sdk points to your Ichnois DSN — no Sentry SaaS account needed
4import sentry_sdk
5
6sentry_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

instrument.js
1npm install @sentry/node
2
3import * as Sentry from "@sentry/node";
4
5Sentry.init({
6 dsn: "https://proj_c76fccfd95bd@ichnoisapi.onrender.com/proj_c76fccfd95bd",
7 environment: "production",
8 tracesSampleRate: 1.0,
9});

Go (Gin / Standard HTTP)

main.go
1package main
2
3import (
4 "log"
5 "time"
6 "github.com/getsentry/sentry-go"
7)
8
9func 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

sentry.client.config.ts
1// sentry.client.config.ts / sentry.server.config.ts
2import * as Sentry from "@sentry/nextjs";
3
4Sentry.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.

terminal
1curl -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}]}}]}}'
Within 500ms the incident will appear on your Fleet Operations Dashboard at /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.

terminal — clone & install
1git clone https://github.com/bitroom-cat/Ichnois.git
2cd Ichnois
3pip install -r requirements.txt
terminal — replay
1python -m ichnoscope.replay \
2 backend/bench/fixtures/payment_index_error.json \
3 --dry-run
expected output
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
Read-only guarantee: Ichnois never pushes commits, modifies branches, or triggers deployments. It only reads git history and drafts issues for human review.

Dashboard reference

Fleet Operations & Dual-Gate Triage Center

Route: /app/overview & /app/runs

Fleet Operations Dashboard
1INGESTED 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
5SEVERITY 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].