Skip to content

App Binding

App Binding lets you connect an installed native app — Oratorio, an IDE plugin, or your own tool — and grant one specific thread access to that app's tools. The app keeps control of its accounts, consent, and high-risk actions; DotCraft controls which tools the model can see and gates every call with approvals and audit.

DotCraft App Binding

NOTE

A binding is scoped to a single thread. Other threads — and other apps — see nothing unless you grant them too. Subagents and forks do not inherit bindings, and an imported thread never reactivates a binding on its own.

Three Separate Steps

App access is split into separate steps on purpose, so nothing is granted by accident:

StepWhat it doesWhat it does not do
1. Install the pluginMakes the app and its tool catalog visible in DotCraft.Does not give any thread access.
2. Install or open the native appMakes the app launchable through its registered OS identity.Does not connect your account.
3. Connect, then bind a threadConnects your app account, then grants selected scopes to the chosen thread.Only the thread you pick is granted.

Connecting opens the app through a deep link (for example oratorio://dotcraft/connect?…); the app then shows its own confirmation. DotCraft never asks you to pick an executable, source folder, or command line.

What You Grant

When you bind a thread, you approve a set of scopes. Each scope carries a risk level that decides how its tools are exposed to the model:

RiskMeaningDefault exposure
ReadReads app state without changing anything.Loaded directly.
MutateChanges app-owned state or queues work.Deferred — surfaced only when needed.
External writeCan publish, send, or write to an external system.Deferred, and usually routed through an in-app confirmation.

High-risk tools follow a propose-then-confirm pattern: the agent queues an operation, and you approve or publish it inside the app itself. Every tool call is recorded in DotCraft's audit trail, and the app keeps its own authorization records on top.

In Desktop

App Binding shows up in three places:

  • Plugin detail page — install the plugin, see whether the native app is installed, connect, bind the current thread, reconnect, or revoke.
  • Thread header — bind, refresh, inspect, open the app, or revoke for the open thread.
  • Welcome flow — start a new thread with one or more apps already bound before the first message.

Connection state and binding state are always shown separately, so you can tell "my account is connected" apart from "this thread has access".

Binding State at a Glance

StateMeaning
ActiveThe grant is valid and the app's tools are available to the thread.
OfflineThe grant exists, but the app is closed or unreachable. Calls fail fast; reopen the app to reconnect.
ExpiredThe grant timed out. Tools are removed at the next safe point.
RevokedYou or the app cut access. Tools are disabled immediately.

Closing the native app moves a binding to offline, not gone — reopening it reconnects and reattaches. You can refresh or revoke a binding at any time from the thread or plugin panel.

Examples

  • Oratorio — connect Oratorio boards to a thread so the agent can list items, inspect a card, create tasks, and queue review rounds.
  • Teams — DotCraft's multi-agent board is itself a managed App Binding runtime. See Teams.
  • Your own tool — wrap any service into an app with the SDK. See App Binding Integration to build one.

See Also

Apache License 2.0