Read the logs and infer.
- A claim with no parents. You see the output, not the evidence.
- The rules live in code, not in anything a person can read.
- The prompt is built and thrown away.
workspace explorer · live API
Start with one audit case below, then connect a workspace to inspect the contracts that define it, the records that feed it, the runs that changed it, and the final views and prompt artifacts an agent can use.
Worked case + optional live tool. The case uses example records to explain the interface. The explorer itself does not invent workspace data: it stays empty until you connect, then reads your live API in read-only mode.
00 · the problem
In most systems you cannot. The claim came out of a prompt, which came out of a pipeline, and the trail ends at a log line. This page walks the other direction: from the sentence the agent was handed, back through the step that wrote it, to the message a person actually sent.
A profile says something about an account. You want to know why.
“The billing migration remains blocked on mobile compatibility evidence.”
The record names the step that wrote it, and what that step was allowed to read.
written by the profile step · 2 citations · the exact version, inputs and status
You reach a message a person actually sent. There is nothing underneath it.
“Mobile clients still use the legacy response fields.”
An API address and a workspace key, both read-only. Your key stays in this tab.
# let this page call your API, then paste URL + key export API_CORS_ORIGINS=https://memseek.ai
New to Memseek? You write one small configuration file describing what your application should remember. After that your application only appends what happened; Memseek does the deriving, keeps every conclusion linked to the evidence underneath it, and hands your agent a bounded briefing instead of a pile of text. Everything below is that file and what it produces — how it works.
Open Definitions and choose a collection. Its YAML answers whether records append or supersede, which fields are valid, which processors must finish, and whether the collection can be searched or answered over.
- name: profiles
version: 1
mode: keyed
required_processors: [embedding_v1]
search_profile: pg_default
answerable: truemode: keyedOne current record exists per profile key. A rewrite creates a new version and supersedes the old head instead of erasing it.
required_processorsThe record is not ready until required annotations such as its embedding have completed.
answerableThe collection may participate in cited synthesis. This is an explicit contract choice, not a UI toggle.
The published YAML for profiles — mode: keyed, an embedding required before a record is ready, answerable: true — plus its immutable definition hash. It writes nothing back to the catalog.
In Records, select the open-thread claim. The drawer shows its entity, key, status, content, citations, and writer run. Following the run reveals the exact derivation version and source snapshot that produced it.
The billing migration remains blocked on mobile compatibility evidence.
profile@definition-hash read a bounded new_events snapshot and emitted open_threads.
Mobile clients still use the legacy response fields.
Compatibility may be removed only after zero-traffic telemetry.
Opening the chain changes neither the record nor its run receipt.
Visible effect: a conclusion stops being opaque; one click reveals the execution and the evidence that produced it.
sources:
new_events:
kind: changes
collections: [main]
current_profile:
kind: current
collections: [profiles]
emit:
collection: profiles
type: fact
keys: [role, preferences, commitments,
open_threads, timeline]sourcesExplain what evidence the run was permitted to see. The receipt resolves these declarations to concrete record IDs.
emitExplain the only collection, type, and key the run was allowed to write.
run receiptConnect the abstract YAML to one execution: inputs, outputs, model calls, limits, status, and definition hash.
The current record — “The billing migration remains blocked on mobile compatibility evidence.” — its earlier versions, its two cited source UUIDs, and the audited run that wrote it. Still no mutation.
Open a view to run declared retrieval or render an artifact to see the prompt-ready context. Its YAML states which blocks exist, their token budgets, and the literal template around them.
blocks:
profile:
document:
collections: [profiles]
max_tokens: 2000
memory:
view: agent_relevant_memory@1
max_tokens: 3500
template: |
CURRENT PROFILE:
{{profile}}
RELEVANT MEMORY:
{{memory}}blocksName each context source so its result, truncation, and provenance can be inspected separately.
max_tokensMake the context budget a declared limit rather than a surprise in application code.
templateShow the exact text and ordering the agent receives; the renderer adds no secret prose.
You can explain the claim from the delivered prompt back through the run to the source message — “Mobile clients still use the legacy response fields.” The workspace remains unchanged.
01 · connect
Connect directly to a memseek API with a workspace bearer key. The key stays only in this browser tab’s memory and is never sent anywhere except the API URL you enter.
Set the API_CORS_ORIGINS environment variable before starting or restarting the API. It authorizes this browser origin to send bearer-token requests.
export API_CORS_ORIGINS='["http://localhost:4321"]' uv run uvicorn memseek.api:app --host 127.0.0.1 --port 8000
For production, replace http://localhost:4321 with the explorer’s exact HTTPS origin.
One workspace, with every boundary visible.
5 current profile keys renewed from 38 cited records.
3 questions retrieved and condensed into 2 reflections.
Transcript batch accepted, 14 records queued for enrichment.
14 vectors written to the default search space.
The versioned contracts that make this workspace legible.
One current value per key. A rewrite supersedes the previous record while preserving history and the evidence behind it.
name: profiles
version: 1
mode: keyed
required_processors: [embedding_v1]
search_profile: pg_default
answerable: trueImmutable, dated, and connected to the work that produced them.
| record | content | status | at |
|---|---|---|---|
| prof_84c1… | Preferences: direct answers with links to sources.profiles / preferences | ready | 09:42 |
| evt_029b… | Weekly planning conversation, with calendar changes.main / transcript | queued | 09:28 |
| ref_7f04… | The recurring goal is to protect deep work before meetings accumulate.reflections / reflection | ready | 09:30 |
| cal_36ab… | Design review — artifact draft needs approval.calendar_events / calendar | ready | 08:55 |
Declared work that makes a record searchable, scored, or structured.
embedding · required on 10 collections
96 msLLM score · scale 1–10
1.3 sLLM JSON · optional on conversations
0.8 sA collection declares its required and optional processors. A record becomes ready only after required work completes; each result remains attached to the record.
Bounded pipelines that turn evidence into current memory.
Typed, reusable queries—the stable read surface for people and agents.
Profile preference, cited from two recent planning conversations.
.94Open thread with an active calendar event and linked outcome.
.88Reflection from recurring scheduling evidence.
.82Deterministic assemblies of declared blocks, with an exact input manifest.