Skip to main content
Ichnois
It never changes your code • Nothing is published without approval

Every incident leaves footprints. Ichnois follows them.

Ichnois turns a production error into an evidence-backed GitHub issue: the commit behind the failing line, a bounded AI explanation, and your approval. The AI explains. It never decides.

Autonomous Investigation Graph

Live Interactive Locus
Production Servicepayment.py:84Telemetry WebhookDSN & Ingress APIDatadog Alert[Planned]Ichnois CoreSHA-256 DedupeGitHub GraphQLBlame @ ReleaseSuspect Diffcommit 904c9d5Bounded LLMSynthesis onlyGitLab / Bitbucket[Planned]Human Review GateDraft ReadyGitHub Issue #999Published
Inspected Node:Ichnois Core

Fingerprint: 06c9cb5852aa | Active claim acquired

Category: evidence
Platform Investigation Graph

Topology of an incident investigation

Trace how unhandled production crashes traverse deterministic filters, git blame pinning, and bounded reasoning before touching human review.

9 Graph Nodes Active•
Tap any node to view forensic telemetry & rules

Authenticates project public keys, DSN tokens, and HMAC-SHA256 signatures on inbound telemetry webhooks.

Endpoints:/api/v1/telemetry/ingest & DSN
Perimeter:8-layer edge guard (app.py:1)
v2/edge_gateway/auth.pyIngress Webhook Docs

Executes GitHub GraphQL blame pinned at the deployed release commit SHA to identify the last author and commit touching the line.

Commit anchor:Target release SHA (f8c2b1a)
Diff budget:Capped to 6,000 chars (blame.py:18)
backend/ichnoscope/blame.pyGitHub Token Setup

Issues remain in draft state until reviewed and approved by an engineer.

Governance:Draft state mandatory
Override:Operator reject / manual publish
backend/ichnoscope/pipeline.pyOperations Runs
Live Operations Console

Investigate incidents in a real-time console

Experience the actual triage environment engineers use during an outage: pinned release blame, deterministic diff isolation, and human sign-off.

Launch Command Center
ichnoscope-ops-prod
•Dedupe: Measuring•Gate 2: Active
Incoming IncidentsLive Stream
Auto-fingerprinted100% Deterministic
INC-9042•payments-service•release-2026.10.12

ZeroDivisionError: division by zero

Isolated In-App FramePrefix /app/ stripped
payments/service.py:142Frame #4 (in-app)
Suspect Author (Pinned Blame)
Marcus Vance(@mvance)
Release Commit SHA
f8c2b1afeat(rates): dynamic commission divisor
Suspect Diff Snippet (GitHub REST API)6 KB safe context
def calculate_split(total_amount, total_installments):
- return total_amount // (total_installments or 1)
+ return total_amount // total_installments
# Suspect: zero-division when total_installments is 0
Gate 2 Status:Awaiting Operator Review
Mean Time to Draft
Measuring

Live telemetry benchmarking

Deduplication
Measuring

Production duplicate ratio

Write Permissions
0 Git Push

Bounded read-only model (explain.py:44)

Human Sign-off
Mandatory

Draft state required by default

Live Forensic ReconstructionSample Data

Watch an incident reconstruct itself.

Step-by-step forensic execution of the real payment bug (KeyError: 'stripe_token' at services/payment.py:84). Code gathers evidence; bounded AI explains.

triage-daemon.log● LIVE STREAM
[12:00:00.104] [INFO] gateway: Inbound Sentry HMAC signature verified. Event ea6811b4ff parsed.
Step 01: Ingest

Error Ingestion

Time: 12:00:00.104

Sentry error webhook received for checkout-service.

Exception: KeyError: 'stripe_token'
Environment: production
Failing Frame: services/payment.py:84
Release Commit: a14b9f2c7d
Users Affected: 63 users
Total Events: 120 events
Investigation Engine Architecture

Three bands of authority. No autonomous decisions.

Deterministic code finds the facts. A bounded LLM only synthesizes the evidence. A human engineer retains final authority before anything is published.

Band 1: Evidence (Deterministic Code)

100% Deterministic • Zero LLM Calls
Receive

HMAC-SHA256 signature verification

Dedupe

SHA-256 crash grouping

Release Blame

GraphQL blame @ deployed commit

Diff Context

Commit diff bounded to ~6 KB

Severity

Deterministic P1/P2/P3 rules

Redaction

Regex token scrubbing (<25ms)

Fallback Branch:If blame is inconclusive or file was squash-merged, Ichnois emits the last 3 commits on the file with confidence: low. It never invents an author.

Band 2: Reasoning (Bounded AI)

Single Bounded Prompt Budget • Zero Write Access
What the LLM May Output:
  • •Domain classification: backend, frontend, database, or infra.
  • •Root-cause hypothesis: 2-sentence explanation from diff and traceback.
  • •Exactly 3 verification checks: actionable checklist for on-call triage.
What the LLM May NEVER Choose:
  • •Suspect commit SHA: Selected strictly by git blame at release.
  • •Author / Assignee: Selected strictly by version history.
  • •Severity level: Evaluated strictly by deterministic user/event rules.
  • •Code modification: Zero file write or branch push permissions.
Fallback Branch:If the LLM provider experiences downtime or schema failure, Ichnois emits a plain deterministic template containing raw stack and blame evidence. It never stalls.

Band 3: Human Control (Authority Gate)

Draft Staged • Mandatory Approval
1. Inspect
Review Diff & Evidence

Examine suspect commit diff and failing frame context in cockpit.

2. Edit
Refine Checklist

Optionally modify suggested fix or re-assign to another team member.

3. Decide
Approve or Dismiss

Sign off with single click or discard non-actionable incident.

4. Publish
GitHub Issue Created

Issue dispatched with fingerprint label and notification card.

Modular Architecture

Discrete, verifiable engine modules

Every step of incident correlation is handled by a standalone, testable component backed by repo source code or explicitly marked as planned.

Read Architecture Docs
Built

Stack parser

Parses Sentry error payloads, strips container prefix paths, and isolates the failing in-app frame.

strip_prefix("/app/", frame.abs_path) -> "src/payments/service.py:142"
backend/ichnoscope/parse.pyExplore
Built

Duplicate filter

Computes a deterministic SHA-256 fingerprint from exception type, path, and line number to suppress duplicate events.

sha256(f"{type}:{path}:{line}").hexdigest()
backend/ichnoscope/dedupe.pyExplore
Built

Blame correlator

Executes GitHub GraphQL blame pinned at the deployed release commit SHA to identify the last author and commit touching the line.

query BlameAtSHA($sha: GitObjectID!) { commit(oid: $sha) }
backend/ichnoscope/blame.pyExplore
Built

Bounded explainer

Queries an LLM with deterministic evidence to produce a domain label, root-cause hypothesis, and exactly 3 verification checks.

class ExplanationOutput(BaseModel): domain: str hypothesis: str checks: list[str]
backend/ichnoscope/explain.pyExplore
Built

Secret redactor

Scrubs credentials, bearer tokens, AWS keys, Stripe secrets, and passwords from payloads before prompt construction.

re.sub(r"(sk_live_[a-zA-Z0-9]+)", "[REDACTED_STRIPE]", raw)
backend/ichnoscope/redact.pyExplore
Built

Severity rules

Determines P1, P2, or P3 incident priority using fixed deterministic arithmetic on user and event counts.

if users >= 50 and events >= 100: return "P1-Critical"
backend/ichnoscope/severity.pyExplore
Built

Issue publisher

Drafts or publishes structured GitHub issues containing evidence, suspect commit, diff, and assignee tag via GitHub App installation tokens or PAT.

gh.issues.create(title=f"[{sev}] {title}", body=markdown)
backend/ichnoscope/publisher.pyExplore
Built

Offline replay CLI

Replays bundled or captured incident payloads end-to-end with zero external network or LLM API calls.

python -m ichnoscope replay --fixture samples/zerodiv.json
backend/ichnoscope/replay.pyExplore
Planned

Post-mortem draft

Automated timeline and retrospective document drafting from resolved triage runs.

Roadmap MilestoneExplore
Planned

Coding-agent hand-off

Direct hand-off of triage evidence, suspect diff, and checklist to local coding agents.

Roadmap MilestoneExplore
Governance & Security

Safety by construction, not by prompt

Production environments cannot tolerate autonomous bots executing arbitrary commands. Ichnois enforces strict architectural boundaries at every layer.

Review Token Scopes

Autonomous "Auto-Fix" Bots

High Operational Risk
  • Requires full repo write access, commit push rights, and CI trigger tokens.
  • Sends entire unredacted crash payloads and environment dumps directly to commercial LLM APIs.
  • Hallucinates false fix branches or opens unreviewed PRs directly touching production code.
  • Zero deterministic verification: relies purely on non-deterministic model confidence.

Ichnois Bounded Architecture

Zero Write Access
  • Zero file or code modification: Ichnois never writes code, pushes commits, or touches branches.
  • Regex credential redaction: Bearer tokens, Stripe keys, and secrets scrubbed in < 0.1ms (measured: 0.011 - 0.022 ms in bench/results.md).
  • Release SHA pinning: GraphQL blame query locked strictly to the deployed commit SHA.
  • Mandatory human sign-off: Issues remain in draft state until reviewed and approved by an on-call engineer.

Verifiable Security Guarantees (claims.ts registry)

Honesty Rule: All features backed by repo code or tagged Planned
Signed telemetry webhooksBuilt

Authenticates project public keys, DSN tokens, and HMAC-SHA256 signatures on inbound telemetry webhooks.

v2/edge_gateway/auth.py
Secret redactionBuilt

Automatic stripping of bearer tokens, API keys, and connection strings prior to LLM analysis.

backend/ichnoscope/redact.py
Bounded AI without write accessBuilt

The LLM has zero file system, git push, or deploy access; it outputs only an explanation and checklist.

backend/ichnoscope/explain.py
Mandatory human approvalBuilt

Issues remain in draft state until reviewed and approved by an engineer.

backend/ichnoscope/pipeline.py
Least-privilege tokensBuilt

Operates with read-only repository access and minimal issue creation permissions.

backend/ichnoscope/config.py
Role-based access control (RBAC)Built

Granular permissions (owner, admin, member, viewer) with team action audit logging.

backend/ichnoscope/teams.py
Edge Gateway PerimeterBuilt

Server A DMZ microservice with TLS termination, Slowloris protection, 50KB payload ceiling, and synchronous PII scrubbing.

v2/edge_gateway/app.py
Supabase JWT AuthBuilt

FastAPI bearer token verification middleware decoding Supabase HS256 JWTs with edge session guards.

backend/ichnoscope/auth_middleware.py
Single sign-on (SSO / SAML)Planned

Enterprise SSO via Okta, Google Workspace, and SAML 2.0.

Enterprise Roadmap
Immutable audit logPlanned

Exportable compliance log of all webhook receipts, LLM prompts, and approval decisions.

Enterprise Roadmap
Verifiable Benchmarks

Directly measured latency from backend benchmarks

No invented numbers or extrapolated estimates. All values are sourced directly from backend/bench/results.md and codebase definitions.

Audited against bench/results.md
Secret Redaction PassBuilt
< 0.1ms

Synchronous PII scrubbing verified at 0.011 - 0.022 ms in benchmark suite.

backend/bench/results.md:19
Core Pipeline LatencyBuilt
0.09ms

Average parse, dedupe, redact, and severity rating latency across fixtures.

backend/bench/results.md:5
Diff Context BudgetBuilt
6,000chars

MAX_DIFF_CHARS context limit enforced to protect prompt context budgets.

backend/ichnoscope/blame.py:18
Offline Replay RunBuilt
Measuring

Full CLI execution timing actively being benchmarked across platforms.

backend/ichnoscope/replay.py

Fixture Latency Breakdown (backend/bench/results.md)

Evaluated across 3 reference crash fixtures under the automated benchmark suite.

Avg Core Latency: 0.09 ms
•
Throughput: ~10,909 inc/sec
FixtureException TypeSeverityParseRedactSeverity RateTotal Core
bug1_keyerror_payment.jsonKeyErrorP1-Critical0.050 ms0.011 ms0.005 ms0.084 ms
bug2_attributeerror_cart.jsonAttributeErrorP2-High0.103 ms0.022 ms0.003 ms0.133 ms
edge_library_frame_last.jsonValueErrorP3-Medium0.041 ms0.011 ms0.001 ms0.058 ms
Network & LLM API stages (GitHub GraphQL & Gemini/OpenAI): Measuring (provider-dependent).View Benchmark Methodology
Developer-First Deployment

Stop guessing root causes in production

Correlate crashes to suspect commits at release SHA. Route your microservice telemetry webhook or run offline replay locally.

terminal — local replay cli
$git clone https://github.com/ichnoscope/ichnoscope.git && cd ichnoscope/backend && python -m ichnoscope replay
# 0 API calls