` marker, AFTER the page's own+ meta description (those stay per-page). --><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><link rel="icon" href="/favicon.svg" type="image/svg+xml"><link rel="icon" href="/favicon.ico" sizes="32x32"><link rel="apple-touch-icon" href="/apple-touch-icon.png"><link rel="preconnect" href="https://fonts.googleapis.com"><link rel="preconnect" href="https://fonts.gstatic.com" crossorigin><link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Fraunces:opsz,wght@9..144,420;9..144,560;9..144,640&display=swap"><script>const PRI_STORAGE={themeKey:"pri_site_theme_v1"};(()=>{const e=globalThis.localStorage.getItem(PRI_STORAGE.themeKey);"light"!==e&&"dark"!==e||(document.documentElement.dataset.theme=e)})()</script><script>const PRI_POSTHOG_KEY="PLACEHOLDER_POSTHOG_PROJECT_KEY",PRI_POSTHOG_HOST="https://us.i.posthog.com";PRI_POSTHOG_KEY.startsWith("PLACEHOLDER")||(!function(e,t){var r,o,s,i;t.__SV||(window.posthog=t,t._i=[],t.init=function(n,a,p){function g(e,t){var r=t.split(".");2==r.length&&(e=e[r[0]],t=r[1]),e[t]=function(){e.push([t].concat(Array.prototype.slice.call(arguments,0)))}}(s=e.createElement("script")).type="text/javascript",s.crossOrigin="anonymous",s.async=!0,s.src=a.api_host.replace(".i.posthog.com","-assets.i.posthog.com")+"/static/array.js",(i=e.getElementsByTagName("script")[0]).parentNode.insertBefore(s,i);var c=t;for(void 0!==p?c=t[p]=[]:p="posthog",c.people=c.people||[],c.toString=function(e){var t="posthog";return"posthog"!==p&&(t+="."+p),e||(t+=" (stub)"),t},c.people.toString=function(){return c.toString(1)+".people (stub)"},r="init capture register register_once register_for_session unregister unregister_for_session getFeatureFlag getFeatureFlagPayload isFeatureEnabled reloadFeatureFlags updateEarlyAccessFeatureEnrollment getEarlyAccessFeatures on onFeatureFlags onSurveysLoaded onSessionId getSurveys getActiveMatchingSurveys renderSurvey canRenderSurvey canRenderSurveyAsync identify setPersonProperties group resetGroups setPersonPropertiesForFlags resetPersonPropertiesForFlags setGroupPropertiesForFlags resetGroupPropertiesForFlags reset get_distinct_id getGroups get_session_id get_session_replay_url alias set_config startSessionRecording stopSessionRecording sessionRecordingStarted captureException loadToolbar get_property getSessionProperty createPersonProfile opt_in_capturing opt_out_capturing has_opted_in_capturing has_opted_out_capturing clear_opt_in_out_capturing debug getPageViewId captureTraceFeedback captureTraceMetric".split(" "),o=0;o<r.length;o++)g(c,r[o]);t._i.push([n,a,p])},t.__SV=1)}(document,window.posthog||[]),globalThis.posthog.init(PRI_POSTHOG_KEY,{api_host:PRI_POSTHOG_HOST,defaults:"2025-05-24"}))</script><style>:root{--paper:#f8f4ec;--paper-raised:#fdfbf6;--ink:#24262c;--ink-soft:#4c4f57;--muted:#75787f;--line:#e2dbcd;--rust:#ad4f2b;--rust-bright:#c25d35;--ochre:#a97e2f;--navy:#2e4468;--sage:#7d8f78;--focus:#2e4468}:root:not([data-theme=light]){--paper-raised:#20232a;--ink:#eae4d8;--ink-soft:#c2bcb0;--muted:#8e929b;--line:#33363f;--rust:#d0693f;--rust-bright:#dd7a4f;--ochre:#c99a48;--navy:#8fa9d4;--sage:#97a892;--focus:#8fa9d4}*{box-sizing:border-box;margin:0}html{scroll-behavior:smooth}body{background:var(--paper);color:var(--ink);font-family:ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif;font-size:1.0625rem;line-height:1.65;-webkit-font-smoothing:antialiased;min-height:100dvh;display:flex;flex-direction:column}.display,h1,h2,h3{font-family:Fraunces,Georgia,serif;font-weight:560;line-height:1.12;letter-spacing:-.015em;text-wrap:balance}a{color:var(--navy);text-decoration-thickness:1px;text-underline-offset:3px}a:hover{color:var(--rust)}:focus-visible{outline:2px solid var(--focus);outline-offset:3px;border-radius:2px}::selection{background:color-mix(in srgb,var(--ochre) 30%,transparent)}.wrap{width:min(72rem,100% - 3rem);margin-inline:auto}.prose{width:min(44rem,100%)}.prose p+p{margin-top:1.1em}.site-header{border-bottom:1px solid var(--line);background:color-mix(in srgb,var(--paper) 88%,transparent);backdrop-filter:blur(10px);position:sticky;top:0;z-index:10}.site-header .wrap{display:flex;align-items:center;gap:1.5rem;padding-block:0.85rem}.brand{display:flex;align-items:center;gap:.65rem;font-family:Fraunces,Georgia,serif;font-weight:640;font-size:1.15rem;letter-spacing:-.01em;color:var(--ink);text-decoration:none}.brand:hover{color:var(--ink)}.brand img{width:1.7rem;height:1.7rem}.site-nav{margin-left:auto;display:flex;align-items:center;gap:1.4rem}.site-nav a{color:var(--ink-soft);text-decoration:none;font-size:.95rem;letter-spacing:.01em}.site-nav a:hover,.site-nav a[aria-current=page]{color:var(--rust)}.theme-toggle{border:1px solid var(--line);background:0 0;color:var(--ink-soft);border-radius:999px;width:2rem;height:2rem;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;font-size:.9rem}.theme-toggle:hover{color:var(--rust);border-color:var(--rust)}.site-footer{margin-top:auto;border-top:1px solid var(--line);padding-block:2.5rem 3rem;color:var(--muted);font-size:.92rem}.site-footer .wrap{display:grid;gap:1.75rem;grid-template-columns:1fr}@media (min-width:720px){.site-footer .wrap{grid-template-columns:2fr 1fr 1fr}}.site-footer h3{font-family:inherit;font-weight:600;font-size:.8rem;letter-spacing:.09em;text-transform:uppercase;color:var(--ink-soft);margin-bottom:.6rem}.site-footer ul{list-style:none;padding:0;display:grid;gap:.35rem}.site-footer a{color:var(--muted);text-decoration:none}.site-footer a:hover{color:var(--rust)}.footer-brand{display:flex;align-items:center;gap:.6rem;margin-bottom:.7rem}.footer-brand img{width:1.5rem;height:1.5rem}.footer-brand span{font-family:Fraunces,Georgia,serif;font-weight:640;color:var(--ink);font-size:1.05rem}.kicker{font-size:.8rem;font-weight:600;letter-spacing:.12em;text-transform:uppercase;color:var(--rust);margin-bottom:.9rem}.section{padding-block:4.5rem}.section+.section{border-top:1px solid var(--line)}.btn{display:inline-block;background:var(--ink);color:var(--paper);font-weight:600;font-size:.98rem;text-decoration:none;padding:.7rem 1.35rem;border-radius:6px;border:1px solid var(--ink)}.btn:hover{background:var(--rust);border-color:var(--rust);color:#fdfbf6}.btn-quiet{background:0 0;color:var(--ink)}.btn-quiet:hover{background:0 0;color:var(--rust)}</style><style>.hero{padding-block:5rem 4rem;position:relative;overflow:clip}.hero .wrap{display:grid;gap:3rem;align-items:center;grid-template-columns:1fr}@media (min-width:880px){.hero .wrap{grid-template-columns:7fr 5fr}}.hero h1{font-size:clamp(2.6rem, 6vw, 4.4rem);font-weight:640}.hero h1 em{font-style:italic;color:var(--rust)}.hero .lede{margin-top:1.4rem;font-size:clamp(1.1rem, 2vw, 1.3rem);color:var(--ink-soft);max-width:34em}.hero .cta{margin-top:2.2rem;display:flex;gap:1rem;flex-wrap:wrap}.hero-ring{display:grid;place-items:center}.hero-ring img{width:min(26rem,80vw);height:auto;animation:ring-drift 80s linear infinite}@media (prefers-reduced-motion:reduce){.hero-ring img{animation:none}}@keyframes ring-drift{to{transform:rotate(360deg)}}.two-problems .wrap{display:grid;gap:2.5rem;grid-template-columns:1fr}@media (min-width:880px){.two-problems .wrap{grid-template-columns:1fr 1fr}}.problem{border:1px solid var(--line);border-radius:10px;background:var(--paper-raised);padding:2rem}.problem .num{font-family:Fraunces,Georgia,serif;font-size:2.4rem;font-weight:420;color:var(--ochre);line-height:1}.problem h2{font-size:1.5rem;margin-block:0.7rem 0.6rem}.problem p{color:var(--ink-soft)}.stance{background:var(--ink);color:var(--paper)}.stance,:root[data-theme=dark] .stance{border-block:1px solid var(--line)}.stance .wrap{padding-block:4rem}.stance p{font-family:Fraunces,Georgia,serif;font-weight:560;font-size:clamp(1.4rem, 3vw, 2rem);line-height:1.35;max-width:28em;text-wrap:balance}.stance p em{color:var(--ochre);font-style:normal}.loop-line{color:var(--muted);font-size:.95rem;margin-top:1rem}</style>

Robotics has two problems: understanding physical reality, and changing it.

Neither is possible without the other. To change the world a machine must understand it — precisely, granularly, from where it stands. To prove it understood, it must change it. Physical Reality builds the software that closes that loop.

The Physical Reality ring — a hand-painted circle of navy, rust, ochre, and sage brushstrokes
1

Understand it

Not “scene understanding” as a benchmark score. Understanding as a machine needs it: what is this object, where is it with respect to me, what happens if I push here. Knowledge indexed to the robot’s own situation — this frame, this joint, this contact, now.

2

Change it

Action is the test understanding has to pass. A model that predicts beautifully but can’t steer a gripper hasn’t understood anything a robot can use. Every action changes the world; the changed world feeds back. The loop is the product.

One circle, drawn in a single stroke. That is the ring on this page, and it is not decoration.

Most of the field is trying to skip the hard part. We think the hard part is the product: reality, modeled precisely enough to act on.

What we build

The software layer between a robot and the world

Physical Reality builds the software that lets a machine understand itself and its surroundings precisely enough to act — and to keep acting as the world answers back. Perception grounded in the robot’s own body. World models honest enough to plan against. Evaluation infrastructure that treats reality as the test suite it is.

The approach, in full →