Skip to main content
This page summarizes the current public mubit.v1.ControlService RPC surface. Use it for generated-client debugging and transport-parity checks.

Service identity

  • Package: mubit.v1
  • Service: ControlService

Core memory RPCs

GroupRPCs
IngestionIngest, BatchInsert, GetIngestJob, GetRunIngestStats, ArchiveBlock, Dereference
Retrieval and contextQuery, GetContext, ListActivity, ExportActivity, GetRunSnapshot
Diagnostics and reflectionDiagnose, Reflect, ListLessons, DeleteLesson, GetMemoryHealth

MAS and learning-loop RPCs

GroupRPCs
Agent identityRegisterAgent, ListAgents, AgentHeartbeat, AppendActivity
Compaction and reinforcementCheckpoint, RecordOutcome, RecordStepOutcome, SurfaceStrategies
CoordinationCreateHandoff, SubmitFeedback
Run managementDeleteRun, LinkRun, UnlinkRun

Explicit planning state RPCs

GroupRPCs
GoalsAddGoal, UpdateGoal, ListGoals, GetGoalTree
VariablesSetVariable, GetVariable, ListVariables, DeleteVariable
ConceptsDefineConcept, ListConcepts
ActionsSubmitAction, GetActionLog
Decision cyclesRunCycle, GetCycleHistory

Practical parity checks

  • Helper-first SDKs should map cleanly onto these RPC groups even when they expose more ergonomic names.
  • GetContext is the primary gRPC compaction-safe context assembly surface.
  • ListActivity and ExportActivity are the chronological audit/browse surfaces; use them when you need exact ordering and pagination rather than ranked retrieval.
  • Diagnose, GetMemoryHealth, Reflect, RecordOutcome, RecordStepOutcome, and SurfaceStrategies are the key loop-inspection and reinforcement RPCs.
  • RecordStepOutcome records per-step process rewards with signal, rationale, and directive hint for dense RL within a run.
  • Reflect accepts step_id, last_n_items, and include_step_outcomes for step-wise scoped reflection.
  • Ingest, Query, and GetContext accept lane fields (lane, lane_filter) for multi-agent memory isolation within a shared run.
  • ArchiveBlock and Dereference are the exact-reference pair: archive an exact artifact once, then recover it later by stable reference_id.

Evidence provenance and telemetry

Query and GetContext now expose exact-reference provenance on surfaced evidence:
  • retrieval_mode
  • reference_id
  • referenceable
  • origin_entry_type
GetContext also returns context-pressure telemetry:
  • source counts by entry type and retrieval mode
  • evidence candidates considered
  • evidence dropped by token budget
  • exact references surfaced

Step-level outcomes

RecordStepOutcome records a per-step process reward signal within a run, complementing the run-level RecordOutcome. Use it after each agentic step where you want dense feedback for reflection.
FieldTypeDescription
run_idstringSession/run identifier
step_idstringUnique step identifier within the run
step_namestringHuman-readable step label (e.g. "initial_planning")
outcomestringOne of success, failure, partial, neutral
signalfloatReward signal from -1.0 to 1.0
rationalestringWhy this outcome was assigned
directive_hintstringHindsight guidance for future runs (Hindsight-Guided OPD)
agent_idstringAgent that performed the step
user_idstringOptional logical user scope
metadata_jsonstringArbitrary JSON metadata
Response returns step_outcome_id and accepted. Emits context.step_outcome_recorded event.

Lane-scoped memory

Lanes partition memory within a shared run so each agent sees only relevant entries.
RPC / FieldDescription
IngestItem.laneTags ingested items with a named lane
AgentQueryRequest.lane_filterRetrieves only entries tagged with the specified lane
ContextRequest.lane_filterFilters context assembly by lane
AgentRegisterRequest.shared_memory_lanesDeclares which lanes an agent participates in
Items without a lane are visible to all queries. Items with a lane are visible only when lane_filter matches or is empty.
lane (MAS memory isolation) is distinct from the core data-plane retrieval lane concept used in direct search routing.

Failure modes and troubleshooting

SymptomRoot causeFix
gRPC behavior differs from helper behaviorYou are comparing a helper to the wrong raw RPCCheck whether the helper wraps Query, GetContext, or another control RPC
Reflection succeeds but learning feels weakOutcomes are not being recordedPair Reflect with RecordOutcome
Context feels incompleteWrong mode or budget settingsValidate ContextRequest mode, sections, and token budget fields
Step outcomes recorded but reflection ignores theminclude_step_outcomes defaults to falsePass include_step_outcomes=True in ReflectRequest
Lane-filtered query returns nothingLane name mismatch or items ingested without laneVerify the lane value at ingest time matches lane_filter at query time

Next steps