Skip to content

Plugin and App connect: catalog, guided auth, and a fast developer scaffold (cf. Grok Bot connectors) #359

Closed

Description

@hsliuustc0106

Why

FlyBot's value for daily life and work grows with the Apps and Plugins people can attach. Today installing and wiring a connector is still too heavy compared with Grok Bot's connector / plugin flow (search → install → authenticate → tools appear). We need convenient mechanisms so a third party can plug in quickly, and so a user can connect Slack, Calendar, Drive, etc. in minutes.

What to learn from Grok Bot (reference, not copy)

  • A catalog of installable connectors with search.
  • One-click install, then a clear auth path (OAuth / token) with status: needsAuth / connected / error.
  • Tools appear automatically after auth; skills can document when to use them.
  • Secrets stay in a vault; the bot never pastes tokens into chat.
  • Per-connector instructions and rate limits are attached to the tools.

Proposed FlyBot mechanisms (discussion draft)

For users

  1. Plugin / App catalog in the UI: search, one-click enable, status badge (off / needs sign-in / ready).
  2. Guided connect: OAuth or token form in-app; never paste secrets into the chat transcript.
  3. First-run recipes: "Connect calendar for morning brief", "Connect Slack for team reminders" (Proactive reminders 1/3: event reminders (approval waiting, failed, finished) in app and desktop #353–Proactive reminders 3/3: 24/7 runtime and Slack/email delivery #355), each 2–3 steps.
  4. Per-Bot grants: a connected App is not automatically usable by every Bot; default deny, same spirit as [Team] Gate cross-owner agent routes by per-Bot grants (default deny; superseded the publication gate) #51.

For developers

  1. Stable plugin contract: package layout, lifecycle hooks, tool schema, permission declarations (what the plugin may read / write / send).
  2. Scaffold: create-flybot-plugin (or equivalent) that produces a working stub + tests + a README demo slot (docs(timeline): add a screen-recording demo at the top of the Timeline plugin docs #350 style).
  3. Sandbox and caps: network allow-list, rate and cost limits ([Team] Bound agent loops and resource consumption #56), no silent elevating of privileges.
  4. Interop adapter reuse: the live-e2e adapter contract (docs/interop/live-e2e-adapter.md) as a pattern for "any app that speaks the contract".
  5. Publish path: how a community plugin is listed, versioned, and signed; how it rides the daily tag (Release cadence: at least one tag per day, small and stable #351).

Personal vs team

Acceptance for a first cut

  • A new user connects one App (e.g. calendar or Slack) end-to-end in under 5 minutes following in-app steps.
  • A developer publishes a hello-world plugin from the scaffold and sees it in the catalog on a local instance.
  • Revoking auth immediately removes tools; no leftover tokens in logs.
  • Docs: user guide + developer guide, zh/en.

Open questions

  1. Do we extend @flybot/* plugins only, or also support external "Apps" as first-class connectors?
  2. Where does the catalog live: in-repo, a registry, or both?
  3. OAuth: who is the client app (FlyBot Desktop vs each deployed instance Deployment step 1: official image and one isolated instance per person #352)?
  4. How much of Grok Bot's MCP-style connector model do we adopt vs keep FlyBot-native?

Related

#352 deployment, #353–#355 proactive reminders (need outbound channels), #51 grants, #57 audit, #351 daily tags.

Process

RFC in this issue first; implementation via OpenCode + Codex review.

Activity

  1. Birfy commented on Oct 19, 2026

    @Birfy
    Collaborator

    Owner decision (2026-10-19): Connector tools are ON by default for the owner's own Bots, so no setting is needed for that. Only the switch for use by OTHER people (friends / room members) through a Bot is needed: default off, with an explicit owner opt-in. This is consistent with the 2026-10-18 connector decision. The RFC should be edited to drop any per-Bot owner-side enable setting.

  2. added
    enhancementNew feature or request
    area:uiWeb/desktop UI and copy
    area:securityAuth, grants, approvals, secrets
    on Oct 19, 2026
  3. added
    needs-infoWaiting for the reporter or a maintainer decision
    on Oct 19, 2026
  4. Birfy commented on Oct 19, 2026

    @Birfy
    Collaborator

    Triage on main 7b9e90b, 2026-10-19 ~12:10 Asia/Shanghai: needs-info, not agent-ready. The owner decision above settles the default (on for the owner's Bots; one off-by-default switch for other people). Still blocking: the RFC text should drop the per-Bot owner-side enable setting, and a first concrete slice (e.g. catalog search + guided auth for one connector) needs its own issue with expected behaviour.

  5. Birfy commented on Oct 20, 2026

    @Birfy
    Collaborator

    Triage (maintenance, 2026-10-20 08:59 Asia/Shanghai)

    On main bae4128: the user side is mostly there. Settings has a Connectors page with GitHub (token) and Composio. One Composio key opens Gmail, Slack, Calendar, Notion and others, with a common-apps list plus a "More apps" field where you type names (core/src/client/connectors.js, core/src/host/connectors.js). Composio asks for each app's sign-in the first time a Bot needs it. Keys are kept and redacted by secrets.js, never put in chat or the DSH profile. Access matches the owner decision above: on for your own turns, and off for other people unless you turn on sharing for that Bot (core/src/host/connector-access.js). There is no searchable catalog, no per-app status and no plugin scaffold.

    Expected behavior: connect an app in a few clicks, see whether each app is ready or needs sign-in, and have tools appear without pasting secrets into chat.

    Smallest first slice: on the Connectors page, replace the typed "More apps" list with a search over Composio's app list, and show a status for each picked app (needs sign-in / ready). Nothing else changes.

    Details I decided (say if you disagree)

    • The per-Bot owner-side enable setting in the RFC body is dropped, per the owner decision above.
    • No new place for tokens: keys stay in Settings → Connectors / Secrets.
    • The developer scaffold, community catalog and publishing path are parked until there are outside plugin authors.

    Question for the owner
    (a) Ship only the Composio search + status slice, and park the developer side.
    (b) The slice plus a create-flybot-plugin scaffold and an in-repo plugin catalog.
    (c) Instead, add a generic "Add MCP server (URL + token)" connector.
    Recommendation: (a).

  6. added
    needs-humanThe agent loop stopped; a person must decide (reason in the last comment)
    agent-readyMaintainer-approved spec: an agent may take it. Only maintainers set this; never in a template
    and removed
    needs-infoWaiting for the reporter or a maintainer decision
    needs-humanThe agent loop stopped; a person must decide (reason in the last comment)
    on Oct 20, 2026
  7. Birfy commented on Oct 20, 2026

    @Birfy
    Collaborator

    Owner decision (2026-10-20): Confirmed option (a): replace the Connectors page's typed App name with a search over Composio's App list, showing each App's status (needs sign-in / ready). The developer scaffold (create-flybot-plugin) is deferred.

  8. added
    agent-workingAn agent has claimed this issue (the claim comment names the branch)
    on Oct 20, 2026
  9. self-assigned this
    on Oct 20, 2026
  10. Birfy commented on Oct 20, 2026

    @Birfy
    Collaborator

    Claimed by maintenance run (2026-10-20 09:54 Asia/Shanghai). Working on branch feat/359-composio-app-search (fork Birfy/FlyBot), developed in parallel with sibling issues; first slice per the Owner decision only.

  11. Birfy commented on Oct 20, 2026

    @Birfy
    Collaborator

    Minor details decided while developing (PR #479, 2026-10-20 11:00 Asia/Shanghai):

    • Before connecting, the search uses the key being pasted. It goes only to Composio in the x-api-key header, and the search never saves it. After connecting, it uses the saved key.
    • Results come from GET /toolkits?search=…&sort_by=usage&limit=20; the query is capped at 64 characters and debounced 250 ms in the UI. Without a key, or when the search fails, the built-in list of common apps is filtered instead (with a "Could not search Composio" hint).
    • Status comes from the kept session's GET /tool_router/session/{id}/toolkits: Ready when the app needs no auth or has an ACTIVE connected account, otherwise Needs sign-in. It is asked when the row is ready, when the app list changes and when Choose apps opens or closes. Nothing is shown until Composio answers.
    • The pill grid of common apps and the "More apps" text field are gone. Picked apps are pills (click to remove) with their status.
    • Both new endpoints are SHARED_BLOCKED like the other connector endpoints.
  12. Birfy commented on Oct 20, 2026

    @Birfy
    Collaborator

    Cleanup: issue closed. Removing stale agent-working and assignee.

  13. removed their assignment
    on Oct 20, 2026
  14. removed
    agent-workingAn agent has claimed this issue (the claim comment names the branch)
    on Oct 20, 2026
  15. removed
    agent-readyMaintainer-approved spec: an agent may take it. Only maintainers set this; never in a template
    on Oct 21, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    area:securityAuth, grants, approvals, secretsarea:uiWeb/desktop UI and copyenhancementNew feature or request

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions