Marketplace / Workspace

Lens

Lens explains an image a person shared: what it shows, the text in it, what in their workspace it relates to, and what to do next, with citations.

  • Can save a note
  • Models via ContextStream
  • Reads your media
  • Searches code
  • Reads memory
  • Reads context
  • Marks cited context

What it does

Reads an image you shared and ties it to your workspace: the text in it, related code, docs, decisions and lessons, and what to do next, with citations.

What it does not do

It does not do these. A task like them is declined, and a declined run is free:

  • Making documents, PDFs, slides or new images from an image.
  • Reading media that is not an image, such as PDFs, audio or video.
  • Answering questions that are not about the image.
  • Browsing the web, or changing anything in the workspace beyond one optional note.

Real runs

What Lens did with a real input: the input, the result (shortened where it is long), how long it took, what it cost, and where it ran. Each live run used public or demo material only. An example marked as from the eval suite is not a live run.

Live runs fail at the moment: the demo run on 2026-10-27 timed out waiting for the model (model_timeout), and a failed run costs nothing. Until that is fixed, the example here comes from the agent's eval suite.

Live attempts that failed (no charge): task 22ab56c3-c8a9-44f5-951d-42281c75d5f9, 2026-10-27 17:25 UTC, model_timeout.

From the eval suite, not a live run

A screenshot of a failing test (eval case)

Agent
lens@0.2.0
Outcome
succeeded
Ran
2026-10-27 17:28 UTC
Took
Not timed (fakes)
Cost
No charge (offline)

The agent's offline eval suite: its real program, against a fake ContextStream, a scripted vision reply and fixtures, with no network. Not a live run; the image in the fixture is a placeholder, so it is not shown.

  • evals/lens/cases.jsonl in the Slipstream repository
Input
{
  "media_id": "0e0e0e0e-0000-4000-8000-000000000003",
  "question": "Which test is failing and why?"
}

Result

The token refresh test fails with a 401.

What the image is

terminal: The token refresh test fails with a 401.

Text read from the image

FAIL test/auth.test.ts > refreshes tokens
Expected 200, received 401

Answer

test/auth.test.ts, refreshes tokens, gets 401 where it expects 200.

Related in the workspace

  • test/auth.test.ts:12: Relates to what the image shows.

Next steps

  • Check the refresh token's expiry.
Checks: 4 of 4 passed
  • Passed: image_read: 68 characters of text and 2 entities.
  • Passed: workspace_lookups: 6 of 6 lookups answered; 1 items found.
  • Passed: citations: Every related item is one that was found in the workspace.
  • Passed: workspace_context: 0 context items from ContextStream for this job, about 0 tokens.

Provenance

Eval case
evals/lens/cases.jsonl, terminal-test-failure
Depot run
lh9rrpq6ff

Example inputs

Inputs from the agent’s own job contract, each checked against its input schema.

A screenshot of a stack trace: Lens reads it, finds the failing code, and the decisions and lessons about it.

{
  "media_id": "00000000-0000-4000-8000-000000000001",
  "question": "Why is the API failing?"
}
ss run lens media_id=00000000-0000-4000-8000-000000000001 question='Why is the API failing?'

A whiteboard photo: Lens transcribes it and links it to the docs and decisions it matches.

{
  "media_id": "00000000-0000-4000-8000-000000000002"
}
ss run lens media_id=00000000-0000-4000-8000-000000000002

Declined: making files is not Lens's job.

{
  "media_id": "00000000-0000-4000-8000-000000000003",
  "question": "Make a PDF of this"
}
ss run lens media_id=00000000-0000-4000-8000-000000000003 question='Make a PDF of this'

Input

FieldTypeWhat it is
media_idstring, requiredThe image, as a ContextStream media id. Inputs carry references, never bytes.
questionstringWhat you want to know about the image.
project_idstringSearch this project for related code.
save_notebooleanSave the analysis as a note that links to the image.

Where it runs

Model agent. A program on ContextStream’s model proxy, with a short-lived token that acts for you in one workspace.

It may run for up to 1 min before it is stopped.

ContextStream scopeWhat it lets a run do
media.readRead a media record, its download link and its previews, and fetch the bytes.
search.readSearch the workspace’s code, by keyword and by meaning.
memory.readSearch memory, and read decisions and lessons.
memory.write.noteSave one note per run.
context.readRead the run’s context pack from the workspace.
context.feedbackMark the context items a result cited as helpful.
model.invokeCall models through ContextStream’s model proxy, under the run’s credit cap.

Evals

6 of 6 offline eval cases pass for version 0.2.0 (baseline saved 2026-10-17). Offline means fakes and fixtures, with no network: the cases check what the agent guarantees, such as declining work that is not its job. They are not measurements of live runs; the live runs above are.