mirror of
https://github.com/paperclipai/paperclip.git
synced 2026-10-25 09:41:04 +01:00
## Thinking Path > - Paperclip manages AI agents and their work. > - Connections give agents governed access to external tools. > - Agents need durable memory across tasks and execution environments. > - Mem0, Zep, Supermemory, Cognee, and Honcho provide hosted memory tools. > - This pull request adds their setup flows behind an experimental toggle. > - It also delivers assigned MCP tools through the native remote Codex runner. > - Operators can connect a provider once and use the same governed tools locally or in Daytona. ## Linked Issues or Issue Description **Problem or motivation** The Apps catalog lacks a complete set of memory providers. Remote native Codex agents also need access to assigned managed MCP tools without receiving provider credentials. **Proposed solution** Add five memory connectors behind the disabled-by-default Experimental memory connectors setting. Use the existing connection setup and permissions UI. Default their tools to Allowed. Preserve company boundaries, operator permission changes, provider scopes, and audit attribution. **Alternatives considered** Direct provider credentials in each sandbox would duplicate setup and bypass the managed gateway. The remote runner instead uses its existing protocol channel to call the gateway on the server. **Roadmap alignment** This maintainer-requested experiment supports the Memory / Knowledge and Connected Apps roadmap areas. It adds provider connections without introducing a separate memory UI. Related connector authoring documentation is tracked in #13692; no duplicate memory-provider implementation was found. ## What Changed - Add provider definitions, official branding, and the experimental setting for all five providers. - Use OAuth for Zep and Supermemory, API credentials for Mem0 and Honcho, and a bundled Cloud API bridge for Cognee with no runtime downloads or subprocesses. - Default memory tools to Allowed and classify destructive actions explicitly. - Fix personal remote credential resolution and propagate provider tool errors. - Relay assigned managed MCP tools to remote native Codex through the runner protocol. Recheck current authority for each call and rotate stale tool contracts. - Add 21 Storybook states and complete OAuth walkthrough fixtures. - Document provider research, sanitized tool inventory, and live local and Daytona proof. ## Verification - Passed workspace typecheck: `pnpm -r typecheck`. - Passed production build: `pnpm build`. - Full local `pnpm test:run`: 13,273 passed, with failures from process/readiness timeouts under parallel load. Reran all 16 affected suites with one worker: 456 passed, leaving two macOS `/var` versus `/private/var` path assertions. Both passed with `TMPDIR=/private/tmp`. No test failures remain unverified. Latest-head remote CI passes all 54 checks (two optional Storybook jobs skipped). Greptile is 5/5 with no unresolved findings. - Latest Cognee gateway regression: 71 passed, including public deployment without a runtime host and immediate recovery after a provider error. Bundled bridge tests: 25 passed. - Browser setup and real agent tasks exercised all five providers. Mem0, Cognee, Zep, and Honcho have successful store/retrieve proof. - Supermemory now has scoped read/write consent. Local storage and real Daytona write, document read, and semantic recall passed; indexing completion was verified before claiming success. - All five providers were exercised through a real Daytona sandbox and its native runner MCP relay. Provider credentials remained on the server. The final bundled Cognee bridge also passed a fresh Daytona store/recall run. All disposable sandboxes were removed and verified absent after testing. - Storybook is rebuilt and contains the experimental toggle, catalog, setup, permissions, and error states. The Zep and Supermemory access steps advance correctly. ## Risks - Provider OAuth scopes and plan limits remain independent of Paperclip tool permissions. An Allowed tool can still be rejected by the provider. - Providers can queue memory indexing; save acceptance does not prove that semantic recall is ready. - Remote tool contracts must stay synchronized with current connection authority. Regression tests cover revocation and stale contracts. - This change has no database migration. Existing connections remain usable when the experimental catalog toggle is disabled. ## Model Used OpenAI Codex, GPT-6 Astra (`gpt-6-astra`), with reasoning, repository edits, code execution, and browser automation. The exact context window size is not exposed in this session. Live acceptance agents used `gpt-5.6-sol`. ## Checklist - [x] I have included a thinking path that traces from project context to this change - [x] I have specified the model used (with version and capability details) - [x] I have checked ROADMAP.md and confirmed this PR does not duplicate planned core work - [x] I have searched GitHub for duplicate or related PRs and linked them above - [x] I have either (a) linked existing issues with `Fixes: #` / `Closes #` / `Refs #` OR (b) described the issue in-PR following the relevant issue template - [x] I have not referenced internal/instance-local Paperclip issues or links (only public GitHub `#NNN` / `github.com/paperclipai/paperclip` URLs) - [x] My branch name describes the change (e.g. `docs/...`, `fix/...`) and contains no internal Paperclip ticket id or instance-derived details - [x] I have run tests locally and they pass - [x] I have added or updated tests where applicable - [x] I have updated relevant documentation to reflect my changes - [x] I have considered and documented any risks above - [x] All Paperclip CI gates are green - [x] Greptile is 5/5 with no open P2s, recommendations, or follow-ups - [x] I will address all Greptile and reviewer comments before requesting merge --------- Co-authored-by: Paperclip <noreply@paperclip.ing>
521 lines
13 KiB
JSON
521 lines
13 KiB
JSON
{
|
|
"schemaVersion": 1,
|
|
"providers": [
|
|
{
|
|
"slug": "agentmail",
|
|
"provider": "AgentMail",
|
|
"catalogVisible": true,
|
|
"localAsset": "/brands/apps/agentmail.svg"
|
|
},
|
|
{
|
|
"slug": "airtable",
|
|
"provider": "Airtable",
|
|
"catalogVisible": true,
|
|
"localAsset": "/brands/apps/airtable.svg"
|
|
},
|
|
{
|
|
"slug": "anthropic",
|
|
"provider": "Anthropic",
|
|
"catalogVisible": true,
|
|
"localAsset": "/brands/apps/anthropic.svg",
|
|
"darkAsset": "/brands/apps/anthropic-dark.svg"
|
|
},
|
|
{
|
|
"slug": "arcade",
|
|
"provider": "Arcade",
|
|
"catalogVisible": true,
|
|
"localAsset": "/brands/apps/arcade.png"
|
|
},
|
|
{
|
|
"slug": "asana",
|
|
"provider": "Asana",
|
|
"catalogVisible": true,
|
|
"localAsset": "/brands/apps/asana.svg"
|
|
},
|
|
{
|
|
"slug": "beehiiv",
|
|
"provider": "beehiiv",
|
|
"catalogVisible": false,
|
|
"localAsset": "/brands/apps/beehiiv.png"
|
|
},
|
|
{
|
|
"slug": "bitly",
|
|
"provider": "Bitly",
|
|
"catalogVisible": false,
|
|
"localAsset": "/brands/apps/bitly.svg"
|
|
},
|
|
{
|
|
"slug": "box",
|
|
"provider": "Box",
|
|
"catalogVisible": true,
|
|
"localAsset": "/brands/apps/box.svg"
|
|
},
|
|
{
|
|
"slug": "brex",
|
|
"provider": "Brex",
|
|
"catalogVisible": false,
|
|
"localAsset": "/brands/apps/brex.svg",
|
|
"darkAsset": "/brands/apps/brex-dark.svg"
|
|
},
|
|
{
|
|
"slug": "candid",
|
|
"provider": "Candid",
|
|
"catalogVisible": false,
|
|
"localAsset": "/brands/apps/candid.png"
|
|
},
|
|
{
|
|
"slug": "clickhouse",
|
|
"provider": "ClickHouse",
|
|
"catalogVisible": true,
|
|
"localAsset": "/brands/apps/clickhouse.svg",
|
|
"darkAsset": "/brands/apps/clickhouse-dark.svg"
|
|
},
|
|
{
|
|
"slug": "cloudflare",
|
|
"provider": "Cloudflare",
|
|
"catalogVisible": true,
|
|
"localAsset": "/brands/apps/cloudflare.svg"
|
|
},
|
|
{
|
|
"slug": "cloudinary",
|
|
"provider": "Cloudinary",
|
|
"catalogVisible": true,
|
|
"localAsset": "/brands/apps/cloudinary.svg",
|
|
"darkAsset": "/brands/apps/cloudinary-dark.svg"
|
|
},
|
|
{
|
|
"slug": "coda",
|
|
"provider": "Coda",
|
|
"catalogVisible": false,
|
|
"localAsset": "/brands/apps/coda.svg"
|
|
},
|
|
{
|
|
"slug": "composio",
|
|
"provider": "Composio",
|
|
"catalogVisible": true,
|
|
"localAsset": "/brands/apps/composio.svg",
|
|
"darkAsset": "/brands/apps/composio-dark.svg"
|
|
},
|
|
{
|
|
"slug": "context7",
|
|
"provider": "Context7",
|
|
"catalogVisible": false,
|
|
"localAsset": "/brands/apps/context7.svg",
|
|
"darkAsset": "/brands/apps/context7-dark.svg"
|
|
},
|
|
{
|
|
"slug": "discord",
|
|
"provider": "Discord",
|
|
"catalogVisible": true,
|
|
"localAsset": "/brands/apps/discord.svg",
|
|
"darkAsset": "/brands/apps/discord-dark.svg"
|
|
},
|
|
{
|
|
"slug": "egnyte",
|
|
"provider": "Egnyte",
|
|
"catalogVisible": false,
|
|
"localAsset": "/brands/apps/egnyte.svg"
|
|
},
|
|
{
|
|
"slug": "embat",
|
|
"provider": "Embat",
|
|
"catalogVisible": false,
|
|
"localAsset": "/brands/apps/embat.svg"
|
|
},
|
|
{
|
|
"slug": "executor",
|
|
"provider": "Executor",
|
|
"catalogVisible": true,
|
|
"localAsset": "/brands/apps/executor.png"
|
|
},
|
|
{
|
|
"slug": "github",
|
|
"provider": "GitHub",
|
|
"catalogVisible": true,
|
|
"localAsset": "/brands/apps/github.svg",
|
|
"darkAsset": "/brands/apps/github-dark.svg"
|
|
},
|
|
{
|
|
"slug": "gmail",
|
|
"provider": "Gmail",
|
|
"catalogVisible": true,
|
|
"localAsset": "/brands/apps/gmail.svg"
|
|
},
|
|
{
|
|
"slug": "google-sheets",
|
|
"provider": "Google Sheets",
|
|
"catalogVisible": true,
|
|
"localAsset": "/brands/apps/google-sheets.svg"
|
|
},
|
|
{
|
|
"slug": "google-drive",
|
|
"provider": "Google Drive",
|
|
"catalogVisible": true,
|
|
"localAsset": "/brands/apps/google-drive.svg"
|
|
},
|
|
{
|
|
"slug": "google-docs",
|
|
"provider": "Google Docs",
|
|
"catalogVisible": true,
|
|
"localAsset": "/brands/apps/google-docs.svg"
|
|
},
|
|
{
|
|
"slug": "google-slides",
|
|
"provider": "Google Slides",
|
|
"catalogVisible": true,
|
|
"localAsset": "/brands/apps/google-slides.svg"
|
|
},
|
|
{
|
|
"slug": "google-calendar",
|
|
"provider": "Google Calendar",
|
|
"catalogVisible": true,
|
|
"localAsset": "/brands/apps/google-calendar.svg",
|
|
"aliases": [
|
|
"gcal"
|
|
]
|
|
},
|
|
{
|
|
"slug": "google-chat",
|
|
"provider": "Google Chat",
|
|
"catalogVisible": true,
|
|
"localAsset": "/brands/apps/google-chat.svg"
|
|
},
|
|
{
|
|
"slug": "google-people",
|
|
"provider": "Google People",
|
|
"catalogVisible": true,
|
|
"localAsset": "/brands/apps/google-people.svg",
|
|
"aliases": [
|
|
"google contacts"
|
|
]
|
|
},
|
|
{
|
|
"slug": "google-workspace-search",
|
|
"provider": "Google Workspace Search",
|
|
"catalogVisible": true,
|
|
"localAsset": "/brands/apps/google-workspace-search.svg",
|
|
"aliases": [
|
|
"workspace search"
|
|
]
|
|
},
|
|
{
|
|
"slug": "hugging-face",
|
|
"provider": "Hugging Face",
|
|
"catalogVisible": true,
|
|
"localAsset": "/brands/apps/hugging-face.svg",
|
|
"aliases": [
|
|
"huggingface"
|
|
]
|
|
},
|
|
{
|
|
"slug": "jira",
|
|
"provider": "Jira",
|
|
"catalogVisible": true,
|
|
"localAsset": "/brands/apps/jira.svg"
|
|
},
|
|
{
|
|
"slug": "kernel",
|
|
"provider": "Kernel",
|
|
"catalogVisible": false,
|
|
"localAsset": "/brands/apps/kernel.svg"
|
|
},
|
|
{
|
|
"slug": "linear",
|
|
"provider": "Linear",
|
|
"catalogVisible": true,
|
|
"localAsset": "/brands/apps/linear.svg",
|
|
"darkAsset": "/brands/apps/linear-dark.svg"
|
|
},
|
|
{
|
|
"slug": "local-falcon",
|
|
"provider": "Local Falcon",
|
|
"catalogVisible": false,
|
|
"localAsset": "/brands/apps/local-falcon.png"
|
|
},
|
|
{
|
|
"slug": "make",
|
|
"provider": "Make",
|
|
"catalogVisible": false,
|
|
"localAsset": "/brands/apps/make.svg",
|
|
"darkAsset": "/brands/apps/make-dark.svg"
|
|
},
|
|
{
|
|
"slug": "manufact",
|
|
"provider": "Manufact",
|
|
"catalogVisible": false,
|
|
"localAsset": "/brands/apps/manufact.svg",
|
|
"darkAsset": "/brands/apps/manufact-dark.svg"
|
|
},
|
|
{
|
|
"slug": "mem0",
|
|
"provider": "Mem0",
|
|
"catalogVisible": true,
|
|
"localAsset": "/brands/apps/mem0.svg"
|
|
},
|
|
{
|
|
"slug": "miro",
|
|
"provider": "Miro",
|
|
"catalogVisible": true,
|
|
"localAsset": "/brands/apps/miro.svg"
|
|
},
|
|
{
|
|
"slug": "mixpanel",
|
|
"provider": "Mixpanel",
|
|
"catalogVisible": true,
|
|
"localAsset": "/brands/apps/mixpanel.svg",
|
|
"darkAsset": "/brands/apps/mixpanel-dark.svg"
|
|
},
|
|
{
|
|
"slug": "microsoft-teams",
|
|
"provider": "Microsoft Teams",
|
|
"catalogVisible": true,
|
|
"localAsset": "/brands/apps/microsoft-teams.svg",
|
|
"aliases": [
|
|
"teams"
|
|
]
|
|
},
|
|
{
|
|
"slug": "netlify",
|
|
"provider": "Netlify",
|
|
"catalogVisible": true,
|
|
"localAsset": "/brands/apps/netlify.svg",
|
|
"darkAsset": "/brands/apps/netlify-dark.svg"
|
|
},
|
|
{
|
|
"slug": "notion",
|
|
"provider": "Notion",
|
|
"catalogVisible": true,
|
|
"localAsset": "/brands/apps/notion.svg"
|
|
},
|
|
{
|
|
"slug": "oreilly",
|
|
"provider": "O'Reilly",
|
|
"catalogVisible": false,
|
|
"localAsset": "/brands/apps/oreilly.svg"
|
|
},
|
|
{
|
|
"slug": "pagerduty",
|
|
"provider": "PagerDuty",
|
|
"catalogVisible": true,
|
|
"localAsset": "/brands/apps/pagerduty.svg"
|
|
},
|
|
{
|
|
"slug": "planetscale",
|
|
"provider": "PlanetScale",
|
|
"catalogVisible": false,
|
|
"localAsset": "/brands/apps/planetscale.svg",
|
|
"darkAsset": "/brands/apps/planetscale-dark.svg"
|
|
},
|
|
{
|
|
"slug": "posthog",
|
|
"provider": "PostHog",
|
|
"catalogVisible": true,
|
|
"localAsset": "/brands/apps/posthog.svg",
|
|
"darkAsset": "/brands/apps/posthog-dark.svg"
|
|
},
|
|
{
|
|
"slug": "postman",
|
|
"provider": "Postman",
|
|
"catalogVisible": true,
|
|
"localAsset": "/brands/apps/postman.svg"
|
|
},
|
|
{
|
|
"slug": "razorpay",
|
|
"provider": "Razorpay",
|
|
"catalogVisible": false,
|
|
"localAsset": "/brands/apps/razorpay.svg",
|
|
"darkAsset": "/brands/apps/razorpay-dark.svg"
|
|
},
|
|
{
|
|
"slug": "resend",
|
|
"provider": "Resend",
|
|
"catalogVisible": true,
|
|
"localAsset": "/brands/apps/resend.svg",
|
|
"darkAsset": "/brands/apps/resend-dark.svg"
|
|
},
|
|
{
|
|
"slug": "sanity",
|
|
"provider": "Sanity",
|
|
"catalogVisible": false,
|
|
"localAsset": "/brands/apps/sanity.svg",
|
|
"darkAsset": "/brands/apps/sanity-dark.svg"
|
|
},
|
|
{
|
|
"slug": "sentry",
|
|
"provider": "Sentry",
|
|
"catalogVisible": true,
|
|
"localAsset": "/brands/apps/sentry.svg",
|
|
"darkAsset": "/brands/apps/sentry-dark.svg"
|
|
},
|
|
{
|
|
"slug": "shopify",
|
|
"provider": "Shopify",
|
|
"catalogVisible": true,
|
|
"localAsset": "/brands/apps/shopify.svg"
|
|
},
|
|
{
|
|
"slug": "similarweb",
|
|
"provider": "Similarweb",
|
|
"catalogVisible": false,
|
|
"localAsset": "/brands/apps/similarweb.svg",
|
|
"darkAsset": "/brands/apps/similarweb-dark.svg"
|
|
},
|
|
{
|
|
"slug": "slack",
|
|
"provider": "Slack",
|
|
"catalogVisible": true,
|
|
"localAsset": "/brands/apps/slack.svg"
|
|
},
|
|
{
|
|
"slug": "stripe",
|
|
"provider": "Stripe",
|
|
"catalogVisible": true,
|
|
"localAsset": "/brands/apps/stripe.svg"
|
|
},
|
|
{
|
|
"slug": "supabase",
|
|
"provider": "Supabase",
|
|
"catalogVisible": true,
|
|
"localAsset": "/brands/apps/supabase.svg"
|
|
},
|
|
{
|
|
"slug": "telegram",
|
|
"provider": "Telegram",
|
|
"catalogVisible": true,
|
|
"localAsset": "/brands/apps/telegram.svg"
|
|
},
|
|
{
|
|
"slug": "ticket-tailor",
|
|
"provider": "Ticket Tailor",
|
|
"catalogVisible": false,
|
|
"localAsset": "/brands/apps/ticket-tailor.svg",
|
|
"darkAsset": "/brands/apps/ticket-tailor-dark.svg"
|
|
},
|
|
{
|
|
"slug": "ticktick",
|
|
"provider": "TickTick",
|
|
"catalogVisible": false,
|
|
"localAsset": "/brands/apps/ticktick.svg"
|
|
},
|
|
{
|
|
"slug": "todoist",
|
|
"provider": "Todoist",
|
|
"catalogVisible": true,
|
|
"localAsset": "/brands/apps/todoist.svg"
|
|
},
|
|
{
|
|
"slug": "vercel",
|
|
"provider": "Vercel",
|
|
"catalogVisible": false,
|
|
"localAsset": "/brands/apps/vercel.svg",
|
|
"darkAsset": "/brands/apps/vercel-dark.svg"
|
|
},
|
|
{
|
|
"slug": "webflow",
|
|
"provider": "Webflow",
|
|
"catalogVisible": true,
|
|
"localAsset": "/brands/apps/webflow.svg"
|
|
},
|
|
{
|
|
"slug": "wix",
|
|
"provider": "Wix",
|
|
"catalogVisible": true,
|
|
"localAsset": "/brands/apps/wix.svg",
|
|
"darkAsset": "/brands/apps/wix-dark.svg"
|
|
},
|
|
{
|
|
"slug": "xero",
|
|
"provider": "Xero",
|
|
"catalogVisible": false,
|
|
"localAsset": "/brands/apps/xero.svg"
|
|
},
|
|
{
|
|
"slug": "youcom",
|
|
"provider": "You.com",
|
|
"catalogVisible": true,
|
|
"localAsset": "/brands/apps/youcom.svg",
|
|
"darkAsset": "/brands/apps/youcom-dark.svg"
|
|
},
|
|
{
|
|
"slug": "zapier",
|
|
"provider": "Zapier",
|
|
"catalogVisible": true,
|
|
"localAsset": "/brands/apps/zapier.svg"
|
|
},
|
|
{
|
|
"slug": "openai",
|
|
"provider": "OpenAI",
|
|
"catalogVisible": true,
|
|
"localAsset": "/brands/apps/openai.svg",
|
|
"darkAsset": "/brands/apps/openai-dark.svg"
|
|
},
|
|
{
|
|
"slug": "openrouter",
|
|
"provider": "OpenRouter",
|
|
"catalogVisible": true,
|
|
"localAsset": "/brands/apps/openrouter.svg",
|
|
"darkAsset": "/brands/apps/openrouter-dark.svg"
|
|
},
|
|
{
|
|
"slug": "xai",
|
|
"provider": "Grok",
|
|
"catalogVisible": true,
|
|
"localAsset": "/brands/apps/xai.svg",
|
|
"darkAsset": "/brands/apps/xai-dark.svg"
|
|
},
|
|
{
|
|
"slug": "imessage-photon",
|
|
"provider": "iMessage Photon",
|
|
"catalogVisible": true,
|
|
"localAsset": "/brands/apps/imessage-photon.png"
|
|
},
|
|
{
|
|
"slug": "jam-dev",
|
|
"provider": "Jam.dev",
|
|
"catalogVisible": false,
|
|
"localAsset": "/brands/apps/jam-dev.svg",
|
|
"darkAsset": "/brands/apps/jam-dev-dark.svg",
|
|
"aliases": [
|
|
"jam"
|
|
]
|
|
},
|
|
{
|
|
"slug": "railway",
|
|
"provider": "Railway",
|
|
"catalogVisible": true,
|
|
"localAsset": "/brands/apps/railway.svg",
|
|
"darkAsset": "/brands/apps/railway-dark.svg"
|
|
},
|
|
{
|
|
"slug": "fireflies",
|
|
"provider": "Fireflies",
|
|
"catalogVisible": true,
|
|
"localAsset": "/brands/apps/fireflies.svg"
|
|
},
|
|
{
|
|
"slug": "cognee",
|
|
"provider": "Cognee",
|
|
"catalogVisible": true,
|
|
"localAsset": "/brands/apps/cognee.png"
|
|
},
|
|
{
|
|
"slug": "honcho",
|
|
"provider": "Honcho",
|
|
"catalogVisible": true,
|
|
"localAsset": "/brands/apps/honcho.svg"
|
|
},
|
|
{
|
|
"slug": "supermemory",
|
|
"provider": "Supermemory",
|
|
"catalogVisible": true,
|
|
"localAsset": "/brands/apps/supermemory.png"
|
|
},
|
|
{
|
|
"slug": "zep",
|
|
"provider": "Zep",
|
|
"catalogVisible": true,
|
|
"localAsset": "/brands/apps/zep.png"
|
|
}
|
|
]
|
|
}
|