This repository is open for public debugging, not for pretending the runtime is fully healthy. Contributors should be able to reproduce current behavior, degraded paths, and observability signals without guessing the setup.
- Node.js 20+
- Python 3.11+
- Rust toolchain
Optional:
- Bun, if you want parity with some local JS workflows
npm install
pip install -r backend/python/requirements.txtOptional training dependencies:
pip install -r omni-training/requirements.txtRun Node-side tests:
npm run test:nodeRun Python-side tests:
npm run test:pythonRun the chat contract:
npm run test:e2e:chat-contractThe command above always checks fixture parity. To require the live Rust → Python → Node → Rust path, start the API and set both OMNI_E2E_API_URL=http://127.0.0.1:3001 and OMNI_E2E_REQUIRE_LIVE=true. The legacy OMNI_E2E_API_URL name is accepted temporarily, but new configuration should use OMNI_E2E_API_URL.
Run the Python entrypoint:
python backend/python/main.pyRun the Rust API:
cargo run --manifest-path backend/rust/Cargo.tomlRepresentative prompts for inspection:
- greeting:
ola - generic conversational:
o que e uma api? - memory-style prompt:
qual e o meu nome? - runtime explanation:
explique o fluxo do runtime Omni - tool-capable prompt:
analise o arquivo package.json
When reproducing a bug or degraded path, capture:
- prompt used
- command used
- platform and versions
runtime_moderuntime_reasonsemantic_runtime_laneexecution_runtime_laneexecution_path_usedfallback_triggeredcompatibility_execution_activeprovider_actualexecution_provenance- whether the result was matcher, local direct response, bridge, true action execution, or fallback
The canonical mode definitions live in:
The frontend chat status panel now exposes the last turn's runtime debug fields directly. When reproducing a bug through the browser, open the right-side status panel and inspect:
Runtime modeRuntime reasonExecution pathFallback triggeredCompatibility executionProvider actualProvider failedFailure class- whether
Cognitive runtime inspectionis present - whether
Execution provenanceis present Provider diagnosticsProvider fallback routingNo provider available
Recommended interpretation order:
runtime_moderuntime_reasonsemantic_runtime_laneexecution_runtime_laneexecution_path_usedfallback_triggeredcompatibility_execution_activeprovider_actualandexecution_provenance
The canonical decision-quality rules live in:
The curated regression dataset lives in:
tests/cognitive/decision_dataset.yaml
To validate decision quality directly:
python -m pytest -q tests/cognitive/test_decision_quality.pyWhen reporting a decision bug, include:
- the exact prompt
- expected strategy
- expected tool, if any
- expected
primary_execution_type - actual
decision_reasoning - actual
decision_reason_codes - actual
decision_suggested_tools
For learning-loop inspection:
For tool-capable prompts, inspect these fields before reading backend logs:
tool_execution.tool_selectedtool_execution.tool_attemptedtool_execution.tool_succeededtool_execution.tool_failedtool_execution.tool_deniedtool_execution.tool_failure_classtool_execution.tool_failure_reasontool_execution.tool_latency_ms
Interpretation:
tool_attempted=false- the turn planned or exposed a tool, but did not actually execute one
tool_denied=true- governance/policy/operator blocked the action
tool_failed=true- the tool runtime was reached and failed after attempt
tool_succeeded=true- the action executed successfully
If tool_failed=true but:
provider_failed=falsefailure_classis empty or bridge-safe
then the problem is downstream in the tool runtime, not in provider routing.
Use error.failure_class first when the response is degraded at a runtime boundary.
Current bridge failure classes:
PYTHON_BRIDGE_EMPTY_STDOUTPYTHON_BRIDGE_INVALID_JSONPYTHON_BRIDGE_NONZERO_EXITNODE_BRIDGE_EMPTY_STDOUTNODE_BRIDGE_INVALID_JSONNODE_BRIDGE_NONZERO_EXITNODE_BRIDGE_TIMEOUTNODE_EMPTY_RESPONSEFRONTEND_RESPONSE_SHAPE_MISMATCH
Layer hints:
PYTHON_*: Rust did not receive a valid public JSON object from PythonNODE_*: Python did not receive a valid public JSON object from NodeFRONTEND_RESPONSE_SHAPE_MISMATCH: Python main could not normalize the internal response into the public shape
Provider hints:
provider_failed=truewithfailure_classstarting withprovider_indicates a provider-layer failureprovider_diagnosticstells you whether a provider was only configured/selected or actually attemptedno_provider_available=truemeans Omni had no non-embedded provider available and relied on local behavior
When reporting a wrong-classification bug, include:
- the exact prompt
- the full
cognitive_runtime_inspectionpayload - whether Node actually executed
- whether
execution_request.actionsexisted - whether the turn was expected to be matcher, local direct, bridge, true action, compatibility, or fallback
- Some prompts still route through compatibility-heavy execution.
- The repository intentionally exposes degraded or partial behavior rather than hiding it.
- A response existing does not prove the strongest runtime path was taken.
- A response existing also does not prove the bridge itself was healthy; check
error.failure_classandsignals.execution_path_used.