Skip to main content

Apps

An agent can build and deploy its own apps. An app is a page with its own address, so you can bookmark it and come back to it any time. It can have buttons that put the agent to work, show live data from the platform and, when it needs one, run its own server and database. The agent checks and deploys its apps itself. You approve what each app is allowed to do from a card that explains it in plain words, and you can also roll back an app to its previous version.

An artifact lives inside one conversation, while an app is pinned to the agent and stays one tap away in every chat.

Two kinds of apps​

Apps for a user or for the team. These live inside OtoDock, on the agent, for the people who work with it. A developer agent, for example, can keep an app that connects to your GitHub repositories and shows the open issues, pull requests and build results at a glance, updated the moment something changes on GitHub. Or a project board your team moves cards on, where a button on a card hands the work to the agent and the result lands back on the board. On an agent your team works with, an app can be shared with everyone, or be personal to you when the agent's mode allows personal apps.

Apps for your customers. You can create a public link to share an app with anyone, without an OtoDock account. Think of a hairdresser's booking page: clients open the link, pick a time and pay. The app keeps its own customer accounts and takes payments with its own keys, which the agent never sees. For your customers, the link works like a small website of its own.

Both kinds are built the same way, so everything on this page applies to both.

Building an app​

Just ask your agent, for example "build me a board for this project". The agent designs the page and pins it, and you open it with the apps button next to the chat input, which takes you to the agent's apps.

When an agent has a single app pinned, that app becomes the agent's home: open the agent and the app fills the screen. Pin more and they appear as tabs you can reorder, with the first one opening by default. Above the apps, the agent's home also shows your live sessions, the chats and background tasks running right now, each one click away. Every app also has a page of its own: choose Open full screen from the app's menu, and bookmark that address.

Shared and personal apps​

On a personal agent, your apps are yours alone. On a shared agent, each app is either shared, one copy that everyone on the agent sees, or personal, a copy that only you see, next to the shared ones, when the agent's mode allows personal apps.

  • Editors and managers of the agent can pin and unpin shared apps.
  • Viewers and contributors can pin personal apps only.
  • Anyone can hide a shared app from their own view with Hide for me in the app's menu. It stays pinned for everyone else. Your hidden apps are collected under a + hidden chip at the end of the row of apps, where one click brings each one back.
  • Apps shared from elsewhere join the row with a teal border, and their menu says where they come from. See Sharing.

Apps use the full width of the screen on a desktop. Agents can even build them in 3D: OtoDock includes a 3D library that runs offline inside the sandbox, good for animated panels and live maps of your services.

What an app can do​

Buttons that put the agent to work​

An app's buttons can only do what the agent set up and a person approved. There are three kinds:

  • Run a task. The button starts one of the agent's tasks right away, such as refreshing the data or running the daily check. It can pass values from the page, so an "Analyze this month" button hands over the month you're looking at. A task button can also name checks that review the task's work before its run ends.
  • Message the agent. The button sends a prepared message into your chat, or starts a new one, and can fill in values from the page: Analyze {{month}} becomes "Analyze July".
  • Call a tool directly. For instant controls, like switching on a light or refreshing a number, the button runs one of the agent's tools with preset values. The agent doesn't need to take a turn, and the result comes straight back to the page. The values the button sends are checked against the ones you approved, so a page can't turn it into a different command.

A button runs with the permissions of the person who approved it, so a viewer can press it too. A personal app's buttons always use its owner's connected accounts. A button can also require a minimum role, from contributor up to manager, and a click from anyone below it is refused with a message naming the role it needs.

Live platform data​

Once approved, an app can show what's happening on the platform as it happens: the agent's chats and tasks, your notifications, trigger fires, file changes and check results. Each person sees only what they could already open on the dashboard.

While you chat, the agent can also update what an open app shows, and bring up one of its apps on your screen for you. Two settings under User Settings → General → Apps control how far this goes:

  • Agents know which app I am looking at. While an app is open, the agent you're talking to is told which one, so "update this" needs no explanation. Nobody else learns what you're looking at.
  • Agents may open apps on my screen. The agent can open one of its apps for you: in the chat you're in it opens right away, and anywhere else you get a notice with an Open button.

Both are on by default.

A server and a database​

When a page isn't enough, the agent can give the app its own server. OtoDock runs it in a sandbox of its own, with its own database, so everyone who opens the app sees and edits the same live data. The agent can use the app from its own sessions too, so it can read the board or add a card while you watch. The database is kept outside the agent's workspace, so no chat session or paired machine can see it.

Working on its own​

An app with a server can keep working while nobody has it open. It can wake up on a schedule, when a trigger fires, when a task finishes, when a file changes, when a check reports its result, or when another app sends it an event. Services like Stripe or GitHub can also send their signed events straight to the app, and OtoDock verifies each one before anything runs. An event from outside can only reach the app's own data and the pages people have open, never your files, the app's buttons or a chat.

Scripts that run where the agent runs​

An app can include approved scripts that OtoDock runs wherever the agent's sessions run, in the sandbox or on a paired machine, without involving the AI model. They cover what a server can't do on its own, like keeping a copy of a git repository in sync on a schedule. Each script's content is part of what you approve, so a script that changes waits for a new approval.

Apps that work with other apps​

An app can use what another app offers: an action it can call, data it can read, or events it can listen for. It can work with the other shared apps of its own agent, and with the shared apps of the agents its agent can delegate to. Both apps' approval cards show the connection, and OtoDock carries every call between them, so the two apps never talk to each other directly.

Outside services, with keys the agent never sees​

An app lists the secrets it needs, such as a payment key or an email password. After the app is deployed, a person enters their values under Settings in the app's menu, and they're never given to the agent. When the app calls an outside service, OtoDock adds the key to the request on its way out, so the key never enters the app's sandbox and never appears in a chat, a log or an export. The values can be set by an admin, by the owner of a personal app, or by an editor or manager of a shared app.

An app's server can reach only the outside services listed on its approval card.

Releases and rollback​

Every time the agent deploys an app, OtoDock saves it as a new release. People using the app always see the last approved release, never a file the agent is still editing. A new release of an app with a server goes live only once its server responds, so a release that fails to start leaves the previous one running. The three newest releases are kept, and Roll back in the app's menu returns to the previous version. For an app with a server, rolling back also restores its database to how it was before the current release went live, and keeps a copy of the newer data so an admin can recover it.

The owner of a personal app, or an editor or manager of a shared app, can roll it back, read its server's log, and remove it with Delete app and its data.

The agent checks its own work​

Before a release goes live, OtoDock checks it. One check finds anything the sandbox would block, and another opens the release the way people will see it, on a phone, a tablet and a desktop, in both the light and the dark theme. The agent gets the findings and the screenshots back and fixes what they show before the release reaches you.

Normally a new release goes live on its own, and only a change in what the app is allowed to do waits for your approval. If you'd rather see every new version first, ask the agent to make the app wait for approval of each release.

The approval card​

Nothing an app does beyond showing its own page works until a person approves it. The approval card starts with one plain line for each kind of thing the app wants to do: its buttons, the platform data it reads, the files it writes, the outside services it calls, when it wakes up, and the secrets it needs. Open Details to read each one as a full sentence, with the app's exact technical description at the very bottom.

What you approve is exactly what the card showed you. If the agent changes what an app is allowed to do, the approval no longer applies, and the buttons stay off until someone approves the new card. Approval is always a person's decision on the dashboard: an agent can never approve its own app, and no app is ever approved automatically.

  • A personal app is approved by its owner.
  • A shared app is approved by an editor or a manager of the agent.
  • An admin can approve any app.

To approve the task buttons of a shared app you also need the right to run those tasks yourself, so a button can never do something its approver couldn't.

Kept fresh by your agent​

Apps work well with scheduled tasks. A task that runs at 7 a.m. can write your morning brief into an app, and every tab showing that app updates the moment the new brief arrives.

Sharing apps and chats​

You can share an app or a chat with a teammate, or with anyone by a link. A team app can also go to another agent or a whole department. Sharing is always something a person does on the dashboard, and agents have no way to share anything.

With a teammate. Choose Share in the app's menu, pick a colleague and the role they act as. They find the app under Shared with you in their notifications panel and accept it into one of their agents, or decline it. They get the app only, not the agent. You decide when the share expires: after 7, 30 or 90 days, or never.

With an agent or a department. An editor or manager can share a team app with another agent they manage, and an admin with every agent of a department. The app appears among those agents' apps right away, and the agents can use it from their own sessions too. An editor or manager of the receiving agent can remove it again.

With anyone, by a public link. You can create a public link to share an app with anyone, without an OtoDock account. The app then opens in their browser like a website of its own.

  • A link has a password by default. OtoDock generates one and shows it once, and you can change it.
  • A link expires after 30 days by default. You can choose 7 or 90 days instead, and revoke it at any time.
  • A link without a password needs a second confirmation when you create it, and an admin can turn such links off for the whole install.
  • Creating a link, or turning on its buttons, first asks you to confirm it's you, with your password, a passkey or your sign-in provider.

If the app has buttons that run tasks or tools, a checkbox in the share dialog decides whether people on the link can use them. It's off by default, and even when it's on, a link runs at most 200 of those actions a day. A link can never send the agent a message, and it never reaches your platform data, your files or the rest of the dashboard. An app with a server keeps working through a link: it can keep its own customer accounts, remember a visitor's login, and ask for a bot check before someone signs up, if your install has bot protection set up.

Chats. A shared chat is a read-only copy of the conversation as it was when you shared it. See Chat.

Who can share. A personal app is shared by its owner, and a shared app by an editor or a manager of the agent. A chat is shared by its owner, or on a Shared only agent by an editor or a manager. An admin can share any of them.

When things change. Unpinning an app pauses its shares. If you pin it again, the app comes back and you can resume its shares from its menu. A link stops working when the person who created it loses the right to share what it points to.

Admin controls​

Admins set the rules under Setup → Security → Sharing:

  • Sharing to agents and Sharing to departments allow those shares.
  • External links decides whether members can create links at all.
  • Links without a password allows public links that anyone with the address can open. When it's off, every link needs a password.
  • User directory when sharing lets members pick colleagues from a list. When it's off, they type an exact username or email, and OtoDock never confirms whether it matched anyone.
  • Longest share expiry sets the most days any share can last. Left empty, a share can be set to never expire.

These switches are on by default. Turning off a link switch blocks new links of that kind and stops the existing ones from opening, and turning it back on brings back the links that haven't expired. Admin → Shares lists every share on the install, apps, chats and links alike, and you can revoke any of them there.

Behind an SSO or forward-auth gateway?

If a gateway such as Authentik, Authelia or Cloudflare Access makes everyone sign in before reaching your install, let the link paths through it, because people opening a link can't sign in. See the list in Installation.

Apps from templates, and between installs​

Community agent templates can come with up to four apps: shared ones, and personal ones that give every member their own copy. The install dialog lists each app with what it's allowed to do, and your consent there approves it. An admin's consent covers every member's copy. A creator's consent covers the shared apps and their own copy, and each member approves their own. A personal copy that acts as the member always needs that member's own approval.

To move an app somewhere else, ask the agent to export it. It packs the app and the tasks its buttons use into a single .otoapp file, which another agent, on this install or another one, can import when you ask it to. An imported app always waits for approval.

The same protection as artifacts​

An app's page runs in the same fully sandboxed frame as artifacts. It never sees your session or your cookies, and it can reach the platform only through what a person approved, with every request traced to the app and limited in rate. An app with a server runs in a sandbox of its own and can write only to its own database.

tip

A great first app: ask your agent for a daily brief with a "Refresh now" button that runs the task that builds it.

Next steps​

  • Artifacts →: live, interactive content inside a conversation.
  • Tasks →: the scheduled work that keeps apps fresh and runs their buttons.
  • Checks →: review the work an app's buttons start.
  • Agents →: personal and shared agents, and the roles that decide who pins and approves.