Spatio-Temporal Memory & Perception

OhhO OS gives every robot a persistent, queryable memory of what it has seen, where, and when (ohho.memory), fed by pluggable perception (ohho.perception). Pure standard library; persists as JSON per robot at ~/.ohho/memory/<robot>.json, shared by the CLI and the agent.

  • Object permanence — a sighting of the same label near a known position updates that entity instead of creating a duplicate
  • Spatial queries — where is the cup? what's near (1, 2)?
  • Temporal queries — event timeline, "last seen 42 s ago", free-form notes
  • Perceptors — a deterministic sim perceptor (FOV + range over the sim world) and an optional Claude-vision perceptor for real camera frames

CLI

ohho look and ohho memory were not part of the checked PyPI run. The commands that did exit are in Install.

Python

from ohho import Robot
from ohho.memory import SpatialMemory, default_memory_path
from ohho.perception import SimPerceptor, remember_detections

bot = Robot.connect("omnibot")
memory = SpatialMemory(path=default_memory_path("omnibot"))

detections = SimPerceptor(bot).look()          # sim world, FOV + range gated
remember_detections(memory, detections)

e = memory.where_is("cup")                     # Entity(x, y, last_seen, count…)
memory.near(1.0, 2.0, radius=1.5)              # entities around a point
memory.timeline(label="cup")                   # every sighting, time-stamped
memory.note("picked up the cup")               # free-form events
memory.save()

Claude-vision perception (real cameras)

With the [agent] extra and ANTHROPIC_API_KEY, VlmPerceptor turns camera frames into detections:

from ohho.perception import VlmPerceptor

vlm = VlmPerceptor()                       # model="claude-sonnet-5" by default
detections = vlm.look(jpeg_bytes)          # [Detection(label, confidence), …]

Agent integration

The agent's tool registry includes the memory suite automatically: look_around() (perceive + remember + report), where_is(label), objects_near(x, y, radius), and remember_note(text) — and the robot's memory summary is injected into the agent's context at the start of every goal, so "go back to where you saw the cup" works across sessions.