Thought Needle — trajectory capture

Capture what your agents really do.

A trajectory is the full record of what an AI agent actually did — every observation, decision, and tool call on the way to a result. We capture those from the real world and turn them into environments, analytics, and signal.

PII is stripped in the browser, before any trajectory leaves the machine.

capturing haystack · 178 pts
1 trajectory found 0 PII kept
The material

Models are trained on the open internet. But the most valuable record — how real work actually gets done with AI — is scattered across terminals, IDEs, and dashboards, and it vanishes the moment a session ends.

We think that record is the raw material for the next generation of AI. Thought Needle exists to capture it well: faithfully enough to learn from, privately enough to trust.

Capture → clean → use

One pipeline,
three moves.

01 — Capture

The real thing, not a proxy

Trajectories from actual work — not synthetic benchmarks or scraped transcripts. What agents do when the task is real.

02 — Clean

Private by construction

PII is detected and stripped on the client, before capture. What we store is structure and behavior, not secrets.

03 — Use

Turned into leverage

RL environments, analytics, and hiring signal — built on trajectories that reflect how your teams truly operate.

The capture layer

Harnest records trajectories
without recording you.

Harnest sits alongside your agents and captures each run as a structured trajectory. Redaction happens client-side — names, keys, paths, and secrets are masked on the machine where the work happens. Only the cleaned trajectory is ever transmitted.

  • Client-side PII detection & masking, pre-transmission
  • Structured steps: observations, actions, tool calls, results
  • Deterministic redaction you can inspect and audit
  • You keep ownership of every trajectory you capture
How the privacy model works
step 04 · tool_callredacted · 2
{
  "action": "write_file",
  "path": "/Users/██████/api/keys.ts",
  "author": "████████",
  "token": "sk-████████████",
  "diff": "add retry to fetch()",
  "ms": 812
}
masked on-device — never sent raw

Have trajectories
worth capturing?

We're working closely with a small number of early teams. If any of this is your problem, we'd like to hear about it.

[email protected]