← All documentation

Reference

Application Bridge API

The command layer between OOMU's interface (Next.js 16 / React 19) and its native engine (Tauri 2 / Rust).

Every action the interface takes crosses this boundary. There is no direct filesystem, network, or database access from the front end. The engine registers 246 commands, and nothing outside that list is reachable.

This reference describes OOMU 0.4.0. It is a description of an internal boundary, not a public integration surface: command names and shapes change between releases.


1. How the bridge works

1.1 Invocation

Commands are invoked through Tauri's IPC. The Content Security Policy restricts connect-src to ipc:, http://ipc.localhost, and tauri:, and nothing else; object-src is none and frame-ancestors is none. The interface cannot open a connection to any outside host. Web content rendered inside OOMU cannot reach these commands.

1.2 Naming

Commands are snake_case in Rust and invoked as such. Payload fields are camelCase in both directions, and most request structs are declared with deny_unknown_fields: an unrecognized field is an error, not something silently ignored.

1.3 Errors

Errors are structured, not strings:

{
  "code": "project_not_found",
  "entityKind": "project",
  "field": null,
  "diagnostic": "the project record does not exist"
}

code is stable and drives interface copy. diagnostic is for logs and support, not for display.

1.4 Mutations carry receipts

Any command that changes durable state returns a MutationResult<T>:

{
  "value":   { "...": "the changed record" },
  "receipt": {
    "receiptId":     "...",
    "operationId":   "...",
    "operation":     "create_project",
    "entityKind":    "project",
    "entityId":      "project_...",
    "resultDigest":  "<sha256>",
    "committedAtMs": 1756300000000,
    "replayed":      false
  }
}

The caller supplies operationId. The engine records it in data_mutations alongside a request digest and the result. Re-sending the same operationId returns the original result with replayed: true instead of performing the change again.

This makes the whole mutation surface idempotent. A retry after a dropped response cannot create a second project or send a second draft.

1.5 Native pickers are native

Commands prefixed choose_ open a real macOS file dialog. The path is never a parameter. choose_and_install_mod, choose_and_add_local_models, choose_project_documents, choose_project_document_paths, choose_chat_attachments, choose_and_add_document, and add_local_mcp_server all work this way.

The consequence: no model output, prompt, or page content can direct OOMU at a file. A human picked it, in a system dialog.


2. Command families

2.1 Startup, license, and setup

Command
get_license_state · accept_license · decline_licenseThe license gate. Nothing else works until accepted.
get_setup_state · get_runtime_setup_state · finish_setupSetup readiness. The runtime projection deliberately does not touch Keychain.
get_first_launch_preview_stateFirst-launch preview, using isolated development data.
get_launch_options · get_native_runtime_statusLaunch flags and runtime state.
set_native_menu_locale · set_profile_localeLocalize the native macOS menu bar and the interface.
open_release_notesOpen the release notes from the update prompt.

2.2 Models and providers

Command
list_system_models · choose_and_install_system_model · install_model_artifactThe router, assistant, and vision models. Verified by SHA-256.
download_model_artifact · list_model_downloads · cancel_model_download · open_model_sourceDownloading a system model from its official source, with pause and resume.
get_model_update_status · install_model_updateSystem 1 router updates, separate from app updates.
list_local_models · choose_and_add_local_models · set_default_local_model · rename_local_model · reverify_local_model · choose_and_replace_local_model · remove_local_modelYour own GGUF models.
get_local_model_dependencies · get_cloud_model_dependencies · reassign_cloud_model_dependenciesWhat points at a model, so removal cannot orphan chats or agents.
get_cloud_provider_catalog · sync_cloud_provider_catalog · get_provider_credential_statuses · list_cloud_model_connectionsThe signed provider catalog, Refresh models, and credential state.
connect_cloud_provider · connect_custom_provider · verify_saved_cloud_provider · delete_cloud_provider_credentialConnecting providers. Every connect performs a real round trip before saving.
get_system_hardware_profileMemory, cores, Metal support, and the resulting local context ceiling.

2.3 Chat and turns

Command
list_chat_sessions · create_chat_session · create_chat_session_with_context · update_chat_session_context · rename_chat_session · archive_chat_sessionSessions.
list_recoverable_chat_deletions · stage_chat_session_deletion · undo_chat_session_deletion · commit_chat_session_deletionStaged deletion with undo.
list_chat_messages · append_chat_messageMessages.
submit_chat_turnThe main entry point: route, execute, synthesize.
list_explicit_tagsThe @ tags available right now, including Mod tags.
get_session_compaction_state · update_session_compaction_settings · compact_session_historyContext compaction for local models.
export_chat_markdownSave a whole chat as Markdown through the native save dialog.
start_voice_capture · stop_voice_captureOn-device dictation with Apple's speech framework.
queue_turn · clear_queueQueue work behind a running turn.
steer_active_turnInject a correction into a turn already running.
cancel_active_turnCancel.
choose_chat_attachments · import_chat_attachments · remove_chat_attachmentAttachments, extracted locally.

2.4 Agents

list_agents · create_agent · update_agent · archive_agent · delete_agent · get_chat_agent_binding · set_chat_agent · start_agent_chat · choose_and_import_agent · migrate_agent_avatar_tones

choose_and_import_agent reads an agent folder, such as a Beta 1 export, and reports exactly which fields carried over and which did not.

2.5 Projects and documents

Command
list_projects · create_project · update_project · archive_projectProjects.
list_recoverable_project_deletions · stage_project_deletion · undo_project_deletion · commit_project_deletionStaged deletion with undo.
set_project_instructionsStanding instructions, up to 32,000 characters.
get_project_scratchpad · update_project_scratchpadThe versioned Notes.
list_project_documents · choose_project_documents · import_project_documentsFiles, extracted and indexed locally.
search_project_documents · ask_project_documentsRetrieval and cited answers.
export_project_document_answer_docxExport an answer with its citations.
compare_project_documents · export_project_comparison_docxTwo-to-five document comparison and redline.

2.6 Artifacts

list_artifacts · export_artifact · open_deliverable · reveal_deliverable · copy_deliverable_file · list_document_engines · choose_and_add_document · get_document_preview · get_deliverable_preview · get_document_preview_helper_status · open_document_preview_helper_download · list_recoverable_artifact_deletions · stage_artifact_deletion · undo_artifact_deletion · commit_artifact_deletion · clear_stale_artifacts

list_document_engines probes by actually building and verifying a file per format, so its answer reflects the machine rather than a build flag.

2.7 Workflows and scheduling

Command
list_workflows · create_workflow · update_workflow · duplicate_workflow · archive_workflowWorkflows.
list_recoverable_workflow_deletions · stage_workflow_deletion · undo_workflow_deletion · commit_workflow_deletionStaged deletion with undo.
list_workflow_authoring_capabilities · get_workflow_authoring_definitionThe authorable step set and a workflow's definition.
run_workflow · list_workflow_runs · get_workflow_run · resume_workflow_runRuns, and resuming from a paused step.
create_workflow_routine · list_workflow_routines · set_workflow_routine_active · run_due_workflow_routinesRoutines.
list_schedules · create_schedule · toggle_schedule · delete_schedule · create_scheduled_workflowSchedules, including a workflow, schedule, and change alert created together.
get_background_work_status · set_background_work_enabledThe macOS Login Item registration.

2.8 Connections

Command
list_connectionsEvery connection, in one list.
start_google_oauth · get_google_workspace_status · disconnect_google_workspaceGoogle Workspace.
list_remote_setup_manifests · begin_remote_oauth · get_remote_oauth_status · test_remote_connection · remove_remote_connectionBuild-gated OAuth connectors.
list_local_mcp_servers · get_local_mcp_server_catalog · add_local_mcp_server · refresh_local_mcp_server · rename_local_mcp_server · set_local_mcp_server_enabled · set_local_mcp_tool_read_only · remove_local_mcp_serverLocal MCP tools.
choose_and_import_mcp_manifest · list_mcp_setup_manifests · list_mcp_setup_connections · configure_mcp_manifest · refresh_mcp_setup_connection · disable_mcp_setup_connection · reconnect_mcp_setup_connection · remove_mcp_setup_connectionManifest-configured MCP connections.
connect_remote_channel · list_remote_channels · test_remote_channel · disconnect_remote_channel · remove_remote_channelSlack and Discord messaging channels: connect, list, test, turn off, and remove.
channel_setup_state · channel_setup_step · channel_setup_resourcesThe four-step guided setup, saved after every step. channel_setup_resources returns the prefilled Slack settings and opens Slack or Discord's own setup pages.
channel_healthLive connection state for each channel, shown on its card and in Mochi.
list_macos_access_statuses · request_macos_access · open_macos_access_settings · relaunch_after_macos_access_changeLive TCC state, asking macOS for access, and a jump to the right System Settings pane.
get_browser_bridge_status · get_browser_bridge_pairing_token · prepare_browser_bridge_extensionThe Browser Bridge and its connection code.
list_apple_shortcuts_statusInstalled Apple Shortcuts.
create_email_draftCreate a draft in Apple Mail or Gmail. Never sends.

2.9 Mods

list_installed_mods · set_mod_enabled · choose_and_install_mod · revalidate_installed_mod · remove_installed_mod · set_mod_tag_settings · open_oomu_marketplace

open_oomu_marketplace is blocked under Air-Gap Mode.

2.10 Quick Launcher and quick actions

Command
create_quick_launcher_sessionStart a local session from the launcher.
preview_quick_launcher_calculation · evaluate_quick_launcher_calculationNative arithmetic, no model involved.
get_quick_launcher_clipboard_contextClipboard context for the prompt.
copy_quick_launcher_result · open_quick_launcher_conversationCopy, or promote to a full chat.
resize_quick_launcher · dismiss_quick_launcherWindow control.
list_executive_recipes · inspect_recipe_clipboard · prepare_recipe_invocationQuick actions, and clipboard classification.

2.11 Briefing, activity, and ledger

Command
get_or_generate_morning_briefing · copy_morning_briefing · draft_morning_briefing_memoThe morning briefing. Registered on the bridge, with no interface calling them in this build.
list_activity_recordsEverything running, waiting, or finished.
get_model_usage_ledgerLocal versus cloud usage, by period.

2.12 Profile, memory, and security

Command
get_profile_settings · save_profile_settingsDisplay name, locale, appearance, cloud access, defaults.
list_internal_memories · delete_internal_memorySaved memories, and forgetting one.
memory_synthesis_snapshot · memory_synthesis_enabled · memory_synthesis_run · memory_synthesis_editStanding memory: its facts and activity, the Update overnight switch, Update now, and editing or forgetting a fact.
get_enterprise_security_status · set_air_gap_modeAir-Gap Mode.
get_enterprise_policyThe organization's policy on a managed Mac, if any.
get_audit_export_readiness · export_audit_logsThe Secure Enclave-signed audit ledger.
send_anonymous_telemetry_event · set_analytics_enabledRetired. Kept so older callers do not fail; they send and store nothing.

2.13 Browser

get_visible_browser_session · reload_visible_browser · resize_visible_browser · close_visible_browser · list_visible_browser_downloads

Browser commands take a navigationGeneration and validate it against the live session, so a stale interface cannot act on a browser that has since navigated or closed.

list_visible_browser_downloads currently returns an empty list. Downloads are not surfaced in this beta.

2.14 Updates

get_application_update_status · check_for_updates · install_update_and_restart

OOMU checks at launch and every 24 hours, against a signed manifest at a fixed endpoint, verified with a minisign public key compiled into the build. The request carries the app version and processor architecture, and no identifier. The check is skipped entirely under Air-Gap Mode, and you decide when to apply.

2.15 Mochi and Ready for review

Command
mascot_snapshot · mascot_control · mascot_input_modeMochi's window: where it is, showing, hiding, docking, sleeping, and making room to type.
mascot_prompt · mascot_reply · mascot_open_linkAsking Mochi, answering an approval it shows, and opening a link from its balloon in your browser.
mascot_ambient_snapshot · mascot_interest · mascot_ambient_check · mascot_deliverable_actionStanding interests: their settings, Check now, and the actions on a card.
mascot_provider_preferencesWhere Mochi reads mail and calendar from.
mascot_background_serviceInstalls or removes the background service. Called only after the consent question has been answered.
staged_deliverables · staged_deliverable_action · stage_activity_briefReady for review: the waiting files, review, save, snooze, dismiss, and the activity brief.
staged_deliverable_auditThe approval history. Read only: there is no command that edits or deletes it.

The background service is a separate program and is not reached through this bridge. OOMU talks to it over a local socket in a folder only your account can open, and checks that whatever connects is running as the same user.


3. Invariants worth relying on

Invariant
The command list is the whole surface.246 commands. Nothing else is reachable from the interface.
Mutations are idempotent.operationId plus a request digest, recorded in data_mutations.
File selection is human.choose_* opens a native dialog. Paths are never parameters.
Credentials do not cross the bridge as values.Keys go to Keychain after verification. Reads return status, never the secret.
Errors are coded.Stable code, plus a diagnostic that is not display copy.
Nothing unverified is reported as done.A command that cannot verify its outcome returns an error rather than a success.