Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -27,3 +27,9 @@ docker restart <container-id>
```

Of course, you can spin up a new container every once in a while if either of the 2 get updated.

## Brand assets

The theme (`docs.json`) follows the Unify shared light system: paper/ink canvas, teal `#2f9d97` primary, Space Grotesk headings, and Inter body.

The banner and OG image in `images/` (`unify-docs-banner-*.svg`, `unify-docs-og.png`) are rendered from the `branding` repo — do not hand-edit them. To regenerate, run `npm run render:docs-diagrams` in `branding/` and copy the refreshed files from `branding/assets/docs/` into `images/`.
9 changes: 6 additions & 3 deletions canvas/developers.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,8 @@ Two packages own this territory:

## The big picture

![DataManager architecture: the Actor calls primitives.data.*, which lands on DataManager (contract in base.py, implementations in ops/, schemas in types/); ContextRegistry supplies destinations; SimulatedDataManager mirrors the same contract in memory; persistence flows through unisdk HTTP to Orchestra, where contexts hold log events across personal Data/… and Teams/{id}/Data/… roots with federated reads between them.](/images/developers/datamanager-architecture.png)
<img className="block dark:hidden" src="/images/developers/datamanager-architecture-light.svg" alt="DataManager architecture: the Actor calls primitives.data.*, which lands on DataManager (contract in base.py, implementations in ops/, schemas in types/); ContextRegistry supplies destinations; SimulatedDataManager mirrors the same contract in memory; persistence flows through unisdk HTTP to Orchestra, where contexts hold log events across personal Data/… and Teams/{id}/Data/… roots with federated reads between them." />
<img className="hidden dark:block" src="/images/developers/datamanager-architecture-dark.svg" alt="DataManager architecture: the Actor calls primitives.data.*, which lands on DataManager (contract in base.py, implementations in ops/, schemas in types/); ContextRegistry supplies destinations; SimulatedDataManager mirrors the same contract in memory; persistence flows through unisdk HTTP to Orchestra, where contexts hold log events across personal Data/… and Teams/{id}/Data/… roots with federated reads between them." />

Both packages follow the same layered pattern, shared with every state
manager in the repo:
Expand Down Expand Up @@ -129,7 +130,8 @@ Context paths resolve through three private helpers in `DataManager`:
`federated_ranked_search`, and `federated_reduce` from
[`unify/common/federated_search.py`](https://github.com/unifyai/unify/blob/main/unify/common/federated_search.py).

![Destination scopes: write_root routes each write to exactly one destination — the personal root or a team root, each holding Data and Dashboards contexts — while read_roots federates reads across personal plus all teams; data_scope additionally lets a personal tile read team data.](/images/developers/destination-scopes.png)
<img className="block dark:hidden" src="/images/developers/destination-scopes-light.svg" alt="Destination scopes: write_root routes each write to exactly one destination — the personal root or a team root, each holding Data and Dashboards contexts — while read_roots federates reads across personal plus all teams; data_scope additionally lets a personal tile read team data." />
<img className="hidden dark:block" src="/images/developers/destination-scopes-dark.svg" alt="Destination scopes: write_root routes each write to exactly one destination — the personal root or a team root, each holding Data and Dashboards contexts — while read_roots federates reads across personal plus all teams; data_scope additionally lets a personal tile read team data." />

`ContextRegistry`
([`unify/common/context_registry.py`](https://github.com/unifyai/unify/blob/main/unify/common/context_registry.py))
Expand Down Expand Up @@ -315,7 +317,8 @@ bindings; *the Actor never writes bridge API calls*.

## Life of a live tile

![Live tile lifecycle: the Actor calls create_tile with HTML, data bindings, and on_data; DashboardManager validates and dry-runs the bindings, stores the tile row and registers its token; the Console TileViewer renders the iframe and injects the UnifyData bridge, which runs live filter/reduce/join queries against the Orchestra bridge at render time; results are handed to on_data so the chart updates with fresh data.](/images/developers/live-tile-lifecycle.png)
<img className="block dark:hidden" src="/images/developers/live-tile-lifecycle-light.svg" alt="Live tile lifecycle: the Actor calls create_tile with HTML, data bindings, and on_data; DashboardManager validates and dry-runs the bindings, stores the tile row and registers its token; the Console TileViewer renders the iframe and injects the UnifyData bridge, which runs live filter/reduce/join queries against the Orchestra bridge at render time; results are handed to on_data so the chart updates with fresh data." />
<img className="hidden dark:block" src="/images/developers/live-tile-lifecycle-dark.svg" alt="Live tile lifecycle: the Actor calls create_tile with HTML, data bindings, and on_data; DashboardManager validates and dry-runs the bindings, stores the tile row and registers its token; the Console TileViewer renders the iframe and injects the UnifyData bridge, which runs live filter/reduce/join queries against the Orchestra bridge at render time; results are handed to on_data so the chart updates with fresh data." />

The `create_tile` pipeline in `DashboardManager`, step by step:

Expand Down
3 changes: 2 additions & 1 deletion communication/developers/architecture.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,8 @@ The communication stack is two cooperating pieces:
back through the gateway via
[`unify/comms/primitives.py`](https://github.com/unifyai/unify/blob/main/unify/comms/primitives.py).

![unify.gateway architecture: providers feed adapters, which normalize to envelopes delivered through an EnvelopeSink to the ConversationManager; the ConversationManager sends outbound via channels](/images/developers/gateway-architecture.png)
<img className="block dark:hidden" src="/images/developers/gateway-architecture-light.svg" alt="unify.gateway architecture: providers feed adapters, which normalize to envelopes delivered through an EnvelopeSink to the ConversationManager; the ConversationManager sends outbound via channels" />
<img className="hidden dark:block" src="/images/developers/gateway-architecture-dark.svg" alt="unify.gateway architecture: providers feed adapters, which normalize to envelopes delivered through an EnvelopeSink to the ConversationManager; the ConversationManager sends outbound via channels" />

## The wire contract: envelopes

Expand Down
3 changes: 2 additions & 1 deletion communication/developers/conversation-manager.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,8 @@ state, consumes events, runs the reasoning loop, and delegates outbound
I/O. Its package README describes it as the layer that interfaces with
users while delegating complex reasoning to the `Actor`.

![Inbound event lifecycle: envelope → CommsManager → EventBroker → ConversationManager.wait_for_events → side effects → slow brain turn → comms tools / act / wait](/images/developers/event-lifecycle.png)
<img className="block dark:hidden" src="/images/developers/event-lifecycle-light.svg" alt="Inbound event lifecycle: envelope → CommsManager → EventBroker → ConversationManager.wait_for_events → side effects → slow brain turn → comms tools / act / wait" />
<img className="hidden dark:block" src="/images/developers/event-lifecycle-dark.svg" alt="Inbound event lifecycle: envelope → CommsManager → EventBroker → ConversationManager.wait_for_events → side effects → slow brain turn → comms tools / act / wait" />

## The event model

Expand Down
3 changes: 2 additions & 1 deletion communication/developers/voice.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,8 @@ sub-second conversational reflexes *and* deep reasoning, and no single
loop provides both. The runtime splits the job between two brains that
share one conversation.

![Voice call dual-brain architecture: the caller connects through a LiveKit room to the fast brain (Assistant agent with STT/VAD/TTS), which exchanges utterance events and FastBrainNotifications with the slow brain (ConversationManager), supported by fillers/barge-in handling and the LivekitCallManager](/images/developers/voice-dual-brain.png)
<img className="block dark:hidden" src="/images/developers/voice-dual-brain-light.svg" alt="Voice call dual-brain architecture: the caller connects through a LiveKit room to the fast brain (Assistant agent with STT/VAD/TTS), which exchanges utterance events and FastBrainNotifications with the slow brain (ConversationManager), supported by fillers/barge-in handling and the LivekitCallManager" />
<img className="hidden dark:block" src="/images/developers/voice-dual-brain-dark.svg" alt="Voice call dual-brain architecture: the caller connects through a LiveKit room to the fast brain (Assistant agent with STT/VAD/TTS), which exchanges utterance events and FastBrainNotifications with the slow brain (ConversationManager), supported by fillers/barge-in handling and the LivekitCallManager" />

## The two brains

Expand Down
217 changes: 217 additions & 0 deletions docs.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,217 @@
{
"$schema": "https://mintlify.com/docs.json",
"theme": "mint",
"name": "Unify",
"description": "Everything you can do with your Unify AI teammate — communication, workspace, integrations, tasks, learning, and more.",
"logo": {
"light": "/images/unify-wordmark-light.svg",
"dark": "/images/unify-wordmark-dark.svg",
"href": "https://unify.ai"
},
"favicon": "/images/unify-mark.svg",
"colors": {
"primary": "#2f9d97",
"light": "#79efdd",
"dark": "#1c6460"
},
"background": {
"color": {
"light": "#f5f1ea",
"dark": "#0d0f12"
}
},
"fonts": {
"heading": {
"family": "Space Grotesk"
},
"body": {
"family": "Inter"
}
},
"appearance": {
"default": "system"
},
"seo": {
"metatags": {
"og:image": "/images/unify-docs-og.png"
}
},
"navbar": {
"links": [
{
"label": "GitHub",
"href": "https://github.com/unifyai/unify"
}
],
"primary": {
"type": "button",
"label": "Console",
"href": "https://console.unify.ai"
}
},
"navigation": {
"groups": [
{
"group": "Getting Started",
"pages": [
"introduction"
]
},
{
"group": "Communication",
"pages": [
"communication/overview",
"communication/console-chat",
"communication/unify-meet",
"communication/phone-calls",
"communication/sms",
"communication/whatsapp",
"communication/email",
"communication/slack",
"communication/microsoft-teams",
"communication/discord",
"communication/meetings",
"communication/setup",
"communication/voice",
"communication/behavior",
"communication/contacts",
"communication/recordings-and-transcripts",
{
"group": "Developers",
"pages": [
"communication/developers/architecture",
"communication/developers/gateway",
"communication/developers/conversation-manager",
"communication/developers/voice"
]
}
]
},
{
"group": "Workspace",
"pages": [
"workspace/overview",
"workspace/connecting",
"workspace/email",
"workspace/calendar",
"workspace/files",
"workspace/contacts-and-tasks",
"workspace/security",
{
"group": "Developers",
"pages": [
"workspace/developers/architecture",
"workspace/developers/oauth-and-secrets",
"workspace/developers/provider-proxy",
"workspace/developers/gateway-channels"
]
}
]
},
{
"group": "Integrations",
"pages": [
"integrations/overview",
"integrations/connecting",
"integrations/permissions",
"integrations/using",
"integrations/developers"
]
},
{
"group": "Tasks",
"pages": [
"tasks/overview",
"tasks/creating",
"tasks/running",
"tasks/monitoring",
"tasks/developers"
]
},
{
"group": "Learning",
"pages": [
"learning/overview",
"learning/watching-it-work",
"learning/guidance-and-functions",
"learning/knowledge",
"learning/teaching",
{
"group": "Developers",
"pages": [
"learning/developers/architecture",
"learning/developers/function-manager",
"learning/developers/guidance-manager",
"learning/developers/storage-check",
"learning/developers/knowledge-and-memory"
]
}
]
},
{
"group": "Canvas",
"pages": [
"canvas/overview",
"canvas/data",
"canvas/dashboards",
"canvas/recipes",
"canvas/developers"
]
},
{
"group": "Their Computer",
"pages": [
"their-computer/overview",
"their-computer/what-it-does",
"their-computer/watching-and-control",
"their-computer/the-machine",
"their-computer/developers"
]
},
{
"group": "Your Computer",
"pages": [
"your-computer/overview",
"your-computer/setup",
"your-computer/how-it-works",
"your-computer/files-and-terminal",
"your-computer/control-and-safety",
{
"group": "Developers",
"pages": [
"your-computer/developers"
]
}
]
},
{
"group": "Teams",
"pages": [
"teams/overview",
"teams/membership",
"teams/shared-context",
"teams/managing",
"teams/developers"
]
},
{
"group": "Hiring",
"pages": [
"hiring/overview",
"hiring/twin-vs-teammates",
"hiring/onboarding",
"hiring/liaison"
]
}
]
},
"footer": {
"socials": {
"discord": "https://discord.com/invite/sXyFF8tDtm",
"x": "https://twitter.com/letsunifyai",
"youtube": "https://youtube.com/@unifyai",
"linkedin": "https://www.linkedin.com/company/unifyai",
"github": "https://github.com/unifyai/unify"
}
}
}
5 changes: 5 additions & 0 deletions images/developers/datamanager-architecture-dark.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
5 changes: 5 additions & 0 deletions images/developers/datamanager-architecture-light.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file removed images/developers/datamanager-architecture.png
Binary file not shown.
5 changes: 5 additions & 0 deletions images/developers/destination-scopes-dark.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
5 changes: 5 additions & 0 deletions images/developers/destination-scopes-light.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file removed images/developers/destination-scopes.png
Binary file not shown.
5 changes: 5 additions & 0 deletions images/developers/dev-computer-control-stack-dark.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
5 changes: 5 additions & 0 deletions images/developers/dev-computer-control-stack-light.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file removed images/developers/dev-computer-control-stack.png
Binary file not shown.
5 changes: 5 additions & 0 deletions images/developers/dev-desktop-lifecycle-dark.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
5 changes: 5 additions & 0 deletions images/developers/dev-desktop-lifecycle-light.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file removed images/developers/dev-desktop-lifecycle.png
Binary file not shown.
5 changes: 5 additions & 0 deletions images/developers/dev-screen-share-flow-dark.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
5 changes: 5 additions & 0 deletions images/developers/dev-screen-share-flow-light.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file removed images/developers/dev-screen-share-flow.png
Binary file not shown.
5 changes: 5 additions & 0 deletions images/developers/event-lifecycle-dark.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
5 changes: 5 additions & 0 deletions images/developers/event-lifecycle-light.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file removed images/developers/event-lifecycle.png
Binary file not shown.
5 changes: 5 additions & 0 deletions images/developers/federated-scopes-dark.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
5 changes: 5 additions & 0 deletions images/developers/federated-scopes-light.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file removed images/developers/federated-scopes.png
Binary file not shown.
5 changes: 5 additions & 0 deletions images/developers/gateway-architecture-dark.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
5 changes: 5 additions & 0 deletions images/developers/gateway-architecture-light.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file removed images/developers/gateway-architecture.png
Binary file not shown.
5 changes: 5 additions & 0 deletions images/developers/knowledge-memory-dark.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
5 changes: 5 additions & 0 deletions images/developers/knowledge-memory-light.svg

Large diffs are not rendered by default.

Binary file removed images/developers/knowledge-memory.png
Diff not rendered.
5 changes: 5 additions & 0 deletions images/developers/learning-loop-dark.svg

Large diffs are not rendered by default.

5 changes: 5 additions & 0 deletions images/developers/learning-loop-light.svg

Large diffs are not rendered by default.

Binary file removed images/developers/learning-loop.png
Diff not rendered.
5 changes: 5 additions & 0 deletions images/developers/live-tile-lifecycle-dark.svg

Large diffs are not rendered by default.

5 changes: 5 additions & 0 deletions images/developers/live-tile-lifecycle-light.svg

Large diffs are not rendered by default.

Binary file removed images/developers/live-tile-lifecycle.png
Diff not rendered.
5 changes: 5 additions & 0 deletions images/developers/storage-check-dark.svg

Large diffs are not rendered by default.

5 changes: 5 additions & 0 deletions images/developers/storage-check-light.svg

Large diffs are not rendered by default.

Binary file removed images/developers/storage-check.png
Diff not rendered.
5 changes: 5 additions & 0 deletions images/developers/tasks-activation-lanes-dark.svg

Large diffs are not rendered by default.

5 changes: 5 additions & 0 deletions images/developers/tasks-activation-lanes-light.svg

Large diffs are not rendered by default.

Binary file removed images/developers/tasks-activation-lanes.png
Diff not rendered.
5 changes: 5 additions & 0 deletions images/developers/tasks-anatomy-dark.svg

Large diffs are not rendered by default.

5 changes: 5 additions & 0 deletions images/developers/tasks-anatomy-light.svg

Large diffs are not rendered by default.

Binary file removed images/developers/tasks-anatomy.png
Diff not rendered.
5 changes: 5 additions & 0 deletions images/developers/tasks-lifecycle-dark.svg

Large diffs are not rendered by default.

5 changes: 5 additions & 0 deletions images/developers/tasks-lifecycle-light.svg

Large diffs are not rendered by default.

Binary file removed images/developers/tasks-lifecycle.png
Diff not rendered.
5 changes: 5 additions & 0 deletions images/developers/teams-membership-runtime-dark.svg

Large diffs are not rendered by default.

5 changes: 5 additions & 0 deletions images/developers/teams-membership-runtime-light.svg

Large diffs are not rendered by default.

Binary file removed images/developers/teams-membership-runtime.png
Diff not rendered.
5 changes: 5 additions & 0 deletions images/developers/teams-scope-model-dark.svg

Large diffs are not rendered by default.

5 changes: 5 additions & 0 deletions images/developers/teams-scope-model-light.svg

Large diffs are not rendered by default.

Binary file removed images/developers/teams-scope-model.png
Diff not rendered.
5 changes: 5 additions & 0 deletions images/developers/teams-write-read-paths-dark.svg

Large diffs are not rendered by default.

5 changes: 5 additions & 0 deletions images/developers/teams-write-read-paths-light.svg

Large diffs are not rendered by default.

Binary file removed images/developers/teams-write-read-paths.png
Diff not rendered.
5 changes: 5 additions & 0 deletions images/developers/user-desktop-architecture-dark.svg

Large diffs are not rendered by default.

5 changes: 5 additions & 0 deletions images/developers/user-desktop-architecture-light.svg

Large diffs are not rendered by default.

Binary file removed images/developers/user-desktop-architecture.png
Diff not rendered.
5 changes: 5 additions & 0 deletions images/developers/user-desktop-consent-gates-dark.svg

Large diffs are not rendered by default.

5 changes: 5 additions & 0 deletions images/developers/user-desktop-consent-gates-light.svg

Large diffs are not rendered by default.

Binary file removed images/developers/user-desktop-consent-gates.png
Diff not rendered.
5 changes: 5 additions & 0 deletions images/developers/user-desktop-files-flow-dark.svg

Large diffs are not rendered by default.

5 changes: 5 additions & 0 deletions images/developers/user-desktop-files-flow-light.svg

Large diffs are not rendered by default.

Binary file removed images/developers/user-desktop-files-flow.png
Diff not rendered.
5 changes: 5 additions & 0 deletions images/developers/voice-dual-brain-dark.svg

Large diffs are not rendered by default.

5 changes: 5 additions & 0 deletions images/developers/voice-dual-brain-light.svg

Large diffs are not rendered by default.

Binary file removed images/developers/voice-dual-brain.png
Diff not rendered.
5 changes: 5 additions & 0 deletions images/developers/workspace-email-identities-dark.svg

Large diffs are not rendered by default.

5 changes: 5 additions & 0 deletions images/developers/workspace-email-identities-light.svg

Large diffs are not rendered by default.

Binary file removed images/developers/workspace-email-identities.png
Diff not rendered.
5 changes: 5 additions & 0 deletions images/developers/workspace-oauth-plumbing-dark.svg

Large diffs are not rendered by default.

5 changes: 5 additions & 0 deletions images/developers/workspace-oauth-plumbing-light.svg

Large diffs are not rendered by default.

Binary file removed images/developers/workspace-oauth-plumbing.png
Diff not rendered.
5 changes: 5 additions & 0 deletions images/developers/workspace-proxy-policy-dark.svg

Large diffs are not rendered by default.

5 changes: 5 additions & 0 deletions images/developers/workspace-proxy-policy-light.svg

Large diffs are not rendered by default.

Binary file removed images/developers/workspace-proxy-policy.png
Diff not rendered.
5 changes: 5 additions & 0 deletions images/integrations-dev-execution-dark.svg

Large diffs are not rendered by default.

5 changes: 5 additions & 0 deletions images/integrations-dev-execution-light.svg

Large diffs are not rendered by default.

Binary file removed images/integrations-dev-execution.png
Diff not rendered.
5 changes: 5 additions & 0 deletions images/integrations-dev-lanes-dark.svg

Large diffs are not rendered by default.

5 changes: 5 additions & 0 deletions images/integrations-dev-lanes-light.svg

Large diffs are not rendered by default.

Binary file removed images/integrations-dev-lanes.png
Diff not rendered.
5 changes: 5 additions & 0 deletions images/integrations-dev-sync-dark.svg

Large diffs are not rendered by default.

5 changes: 5 additions & 0 deletions images/integrations-dev-sync-light.svg

Large diffs are not rendered by default.

Binary file removed images/integrations-dev-sync.png
Diff not rendered.
5 changes: 5 additions & 0 deletions images/unify-docs-banner-dark.svg

Large diffs are not rendered by default.

5 changes: 5 additions & 0 deletions images/unify-docs-banner-light.svg

Large diffs are not rendered by default.

Binary file added images/unify-docs-og.png
Loading
Loading