RepoLantern Start a guide

How RepoLantern observes itself

Every run can be followed from the request to each model and tool call, without recording your code, prompts, answers or keys.

One run, one trace

One run of a guide as one trace A trace tree with real span names. The request POST /api/jobs contains invoke_agent repolantern, which contains one span per stage: stage ingest (with the tools git.fetch, secrets.redact and injection.scan), stage estimate, stage map_batch, stage synthesize and stage write_section (each with chat spans that record the provider, model and input and output tokens; write_section also runs the tool grounding.check), stage assemble (with citations.resolve), stage evaluate and stage publish. Span names and nesting come from a real run; some spans are left out. POST /api/jobs invoke_agent repolantern stage ingest execute_tool git.fetch code, not a model execute_tool secrets.redact execute_tool injection.scan stage estimate stage map_batch chat <model> model and tokens stage synthesize chat <model> stage write_section chat <model> execute_tool grounding.check stage assemble execute_tool citations.resolve stage evaluate stage publish Span names and nesting from a real run; some spans left out. One run of a guide as one trace A trace tree with real span names. The request POST /api/jobs contains invoke_agent repolantern, which contains one span per stage: stage ingest (with the tools git.fetch, secrets.redact and injection.scan), stage estimate, stage map_batch, stage synthesize and stage write_section (each with chat spans that record the provider, model and input and output tokens; write_section also runs the tool grounding.check), stage assemble (with citations.resolve), stage evaluate and stage publish. Span names and nesting come from a real run; some spans are left out. POST /api/jobs invoke_agent repolantern stage ingest execute_tool git.fetch code, not a model execute_tool secrets.redact execute_tool injection.scan stage estimate stage map_batch chat <model> model and tokens stage synthesize chat <model> stage write_section chat <model> execute_tool grounding.check stage assemble execute_tool citations.resolve stage evaluate stage publish Span names and nesting from a real run; some spans left out.

RepoLantern can write OpenTelemetry traces, but only while the operator has switched tracing on, for a demonstration or an investigation. They are off by default and switch themselves off after 4, 24 or 48 hours. The operator also chooses where they go (Arize Phoenix, LangSmith, Langfuse or any OTLP backend). Nothing is traced continuously.

A run is one trace. It starts with the HTTP request, then invoke_agent repolantern for the job, one span for each stage, and inside each stage a chat <model> span for every model call and an execute_tool span for every tool that runs as code. Model calls carry the provider, the model and the input and output tokens, following the OpenTelemetry conventions for generative AI. A guide approved automatically within your limit is one trace; one you approve by hand is two, before and after your approval.

What is never recorded

By design, span attributes are names, ids and counts: they never hold your code, prompts, answers, keys or e-mail addresses. A live test runs a whole guide into a real Arize Phoenix and fails if code, prompt text, a bearer credential or an e-mail address appears in any span. The exporter's own credentials are treated as secrets and never printed.

What each trace says about itself

The operator's control tower

Operators get a control tower in the app, built from RepoLantern's own SQLite database, with no extra monitoring service. It is always on, whether or not tracing is:

It shows counts, ids, models and scores, never repository content, prompts or keys. Only administrators can open it, and they must sign in with two-step verification.

The operator's query console

Some questions in an incident are not on the control tower. For those, the control tower has a Query view: the operator writes one SELECT and sees the answer as a table, which can be saved as a CSV file. Like the control tower, it is always on.

It comes with forty-five sample questions, each tested against a real database, in six groups for the people who ask them, shown one group at a time with a filter across all of them:

The step-by-step procedure for operators is in the incident runbook, section 15 (Query the database).

Arize Phoenix as the trace viewer

Arize Phoenix is the optional trace viewer. For demonstrations and troubleshooting it runs self-hosted next to RepoLantern, with its own database and sign-in turned on. It sleeps unless the operator has switched tracing on, and it is not the record of what happened: the query console, which reads RepoLantern's own database, always is. Open the repolantern project and each run shows as one tree: the stages, then every model and tool call with its token counts. In the hosted service, export stays off unless the operator turns it on for a limited time.

See also: how a guide is made, security and privacy and how we check every guide.

Light up your first codebase

Free to use. Bring your own model key; see the cost before anything is spent.

Start a guide