Skip to content
Space
← All articles
Engineering · Benchmarks

JEPA, Jev, and faster decisions for agent memory

We tested Jev against GPT-5.6 Luna, then used it to organize memory in Space. Here are the speed gains, the cost trade-offs, and where JEPA fits into the conversation.

From our benchmark

Median evidence-assessment time

81 reused synthetic cases · separate runs

Jev + Luna fallback
708 ms
Luna · low reasoning
5,690 ms
Lower is faster. Retrieval and storage are excluded. The fallback-enabled path cost more in these runs.

A small decision inside a larger system

A memory system makes many small judgments: does this passage support the question, does this claim concern a project, and should it appear under Dev or Accounting? Those decisions sit between ordinary application code and models that extract or write text. We tested whether a specialized model could make them faster.

TypeSafe’s Jev accepts state and typed questions and returns values and probabilities. Its Choice primitive selects from supplied options, Score evaluates a rubric, and Noul assesses a statement on a 0–1 scale. Our application combines those results with explicit rules.

Sources: TypeSafe introduction and primitives

JEPA is a research approach; Jev is the API we tested

JEPA stands for Joint Embedding Predictive Architecture. An embedding is a numerical representation of information. A JEPA learns to predict a target representation from a context representation, rather than reconstructing every detail of the original input. In I-JEPA, a 2023 image-learning model, context from one image region predicts representations of other regions.

That is a useful example of learning without generating a human-readable answer. It does not identify Jev’s architecture. The TypeSafe documentation we reviewed describes a custom architecture and training method but does not establish that Jev implements JEPA. Our measurements evaluate Jev’s hosted API, not I-JEPA or a JEPA research model.

Sources: Assran et al., Self-Supervised Learning from Images with a Joint-Embedding Predictive Architecture; TypeSafe’s Jev announcement

Why a constrained answer can arrive quickly

TypeSafe attributes Jev’s speed to giving up free-form string generation and sampling structured decisions in parallel. A conventional autoregressive model generates successive output tokens; Jev’s interface asks for predefined decisions instead. TypeSafe also describes training for calibrated decisions. These are the provider’s explanations, not architecture details we independently measured.

We know less about the contribution of model size, serving hardware, and internal implementation. Our timings include the network and the work performed by each tested adapter. They cannot isolate an architectural speedup.

Structured output still needs a correctness check. A valid category or probability can be wrong. We keep response validation, conservative thresholds, and a way to abstain or correct the result.

One memory, several narrow questions

  1. ContextSupply the memoryInclude the claim and the user’s category and project descriptions.
  2. JudgmentsAssess each matchAsk separately about Dev, Accounting, each project, and global applicability.
  3. ApplicationSave allowed labelsApply thresholds and map results to existing IDs. Preserve the source.

Space composes the decisions. A missing match can stay unassigned.

This is our application workflow, not a diagram of Jev’s internal architecture.

Sources: TypeSafe’s description of parallel structured outputs

The comparison: Jev versus GPT-5.6 Luna

We ran the same 81 synthetic evidence questions through Jev 1.13.0, Luna with reasoning disabled, and Luna with low reasoning. The arms were randomly interleaved, once per case, with one excluded warmup each and no retries. These cases had already informed development; they were not an independent holdout.

An exact match requires both the expected passages and their relevance labels. An unsupported question should return no evidence. The table measures evidence assessment after candidate passages are supplied, excluding retrieval, embeddings, database work, and storage.

The comparison: Jev versus GPT-5.6 Luna
MeasurementJev 1.13.0Luna · noneLuna · low
Median assessment484 ms2,146 ms5,690 ms
p95 assessment726 ms3,997 ms8,433 ms
Exact passages + labels79/8174/8178/81
Exact passage sets79/8175/8179/81
Unsupported questions returning evidence2/353/351/35
API calls819994
Estimated USD / 1,000 assessments$0.254$0.257$0.292

Jev’s median was about 4.4 times lower than Luna with reasoning disabled and 11.7 times lower than Luna with low reasoning. The small difference in exact matches does not establish general quality superiority. Jev confused similarly named entities in two unsupported questions, including Foal and Foals.

The adapters also do different work. Luna retains Space’s internal answer drafting, extracted-quote verification, and conditional conflict check. Jev uses a rubric developed in our earlier experiments and selects supplied passages. Jev reused an HTTP connection in this run; Luna opened clients per call. Those differences matter when interpreting speed.

At the observed cache reuse, Jev and Luna with reasoning disabled cost almost the same. Luna reused about three quarters of its input tokens. Costs are estimates from API usage and tariffs recorded on September 17, including cache writes and reasoning output; they exclude taxes, credits, and other app costs. Changing cache reuse changes the comparison.

Sources: Space benchmark cases, measurements, and recorded tariffs (JSON)

The deployed route keeps a fallback

Space uses Jev for eligible short passages and sends uncertain, conflicting, or longer inputs to the text assessor. The integration replay called the actual relevance-selection code, including response checks and every fallback call. It used fresh HTTP clients per request, no warmup, and no retries.

Across 97 synthetic cases, this route matched 94 complete passage-and-label sets and 95 passage sets. It returned unsupported evidence for 1 of 42 unanswerable questions. Median assessment time was 721 ms and p95 was 6,060 ms. Sixty cases finished directly through Jev, 34 fell back, two used the text model directly, and one empty case needed no model.

For a comparison on matching questions, the table below uses only the 81 reused cases. Luna’s numbers come from the earlier run, so provider load and cache behavior were not controlled between these measurements.

The deployed route keeps a fallback
Same 81 casesJev + Luna fallbackEarlier Luna · low
Exact passages + labels78/8178/81
Median assessment708 ms5,690 ms
Estimated USD / 1,000 assessments$0.370$0.292
API calls11894

Typical assessment was faster, but estimated cost was about 27% higher. Some requests pay for both Jev and Luna. The p95 result also shows that a quick median does not make every request quick. This is the trade-off we accepted for staging, rather than a claim that the integrated route is always cheaper.

Sources: Space benchmark cases, measurements, and recorded tariffs (JSON)

Classification improved when we described the labels clearly

We then tested a different task: assigning a memory to user-defined categories, sections, and projects. This was a separate Jev evaluation with eight catalog items: three categories, two sections, and three projects. An exact match requires the correct scope and every assignment set.

The initial broad instructions matched only 8 of 20 cases, mostly because Jev abstained. We replaced the shared instructions with a specific question, target description, and rubric for each label type. The same 20 development cases then matched exactly. Ten additional cases were frozen before their first live run.

Classification improved when we described the labels clearly
Classification runComplete matchesMedianEstimated USD / 1,000 claims
Initial instructions8/20571 ms$0.060
Revised instructions · same cases20/20556 ms$0.100
Revised instructions · fresh cases9/10550 ms$0.100

The fresh-case miss assigned Food correctly but left a lasting cilantro preference’s scope unassigned: its global probability was 0.80, below our 0.90 threshold. Category and section matches use 0.85; project and global matches use 0.90. Those are operating choices, not guarantees of accuracy.

The improvement came from clearer decision rules, not adding the expected answer to the input. This small, agent-authored test is useful development evidence, not a production accuracy estimate. We did not compare Luna on memory classification, and its per-claim costs should not be compared with the earlier multi-passage relevance assessments.

Sources: Space benchmark cases, measurements, and recorded tariffs (JSON)

What is running in Space now

On September 17, we enabled Jev relevance assessment and memory classification in the staging API and extraction worker. Users can create categories and sections, link projects to sections, and inspect or correct assignments. A manual assignment stays pinned through automatic updates to the same claim. Existing memories require explicit classification; we did not silently backfill them.

Each classification receives a memory’s title and text plus the catalog’s names, descriptions, and kinds. Space validates the response and maps it to saved IDs. Automatic classification currently supports at most 32 active catalog items combined; larger catalogs are left unassigned. Labels do not change access permissions or the source citation.

A live smoke test produced three memories from a synthetic document and verified automatic assignments, manual corrections, and reclassification. The whole queued extraction took 139.27 seconds. A separate Jev-only request from the operator machine took 766 ms. The first includes queue and startup time, extraction, embeddings, classification, and persistence. We did not measure those stages individually, so this is not evidence that classification caused the delay.

Sources: Space benchmark cases, measurements, and recorded tariffs (JSON)

The measurements we still need

Jev has earned a narrow role in Space: fast judgments over supplied context with application rules around the result. It does not replace the model that extracts text or the embeddings used to retrieve candidates. Typed answers remain fallible.

Next we need representative user corpora, larger catalogs, repeated measurements, better tests of similarly named projects, and a profile of the full extraction pipeline. We also need to measure how often people correct labels. A fast decision is useful when it reliably puts the right context in front of the user.

Read as Markdown Documentation index for agents