## 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>
24 KiB
Experimental memory connectors
Enable Settings → Experimental → Memory connectors, then open Connectors and choose Mem0, Zep, Supermemory, Cognee, or Honcho. The flag defaults to off. It hides catalog setup and rejects new curated setup and initial OAuth-start requests on the server. Existing connections keep running and can reconnect or rotate credentials without re-enabling the toggle. Generic custom MCP connections retain their existing behavior.
These are ordinary company-scoped tool connections. There is no separate memory page, automatic conversation upload, prompt injection, or background memory sync. Agents explicitly invoke the provider's tools through the existing gateway, and operators manage access and actions on the regular Permissions screen.
Provider contracts
Official documentation and public endpoint discovery checked September 24, 2026.
| Provider | Transport and authentication | Setup and scope |
|---|---|---|
| Mem0 | Remote MCP, https://mcp.mem0.ai/mcp/, Bearer API key |
Create a key in the Mem0 dashboard. The provider key controls project access; user/agent/session selectors are tool arguments. |
| Zep | Remote MCP, https://api.getzep.com/mcp, OAuth |
Configure Memory MCP and the identity provider in Zep first. A project administrator assigns MCP seats and shared graphs. Sign in with the assigned work identity. An ordinary Zep API key is not the credential for this endpoint. |
| Supermemory | Remote MCP, https://mcp.supermemory.ai/mcp, OAuth |
Sign in and select the workspace, read/write access, and optional container tags offered by Supermemory. Developer API keys are separate from hosted MCP sign-in. |
| Cognee | Bundled Cloud API bridge, Cloud API key | Copy the tenant API Base URL and key from Cognee Cloud → API Keys. Requires an active Cloud workspace. The bundled bridge works in public deployments without a local MCP runtime host. |
| Honcho | Remote MCP, https://mcp.honcho.dev, Bearer API key |
Create an organization and API key in the Honcho dashboard. Workspace, peer, and session selectors remain explicit provider tool arguments. |
Zep and Supermemory use user grants, the existing PKCE OAuth broker, and automatic
client registration/discovery. Zep advertises its authorization server at
https://api.getzep.com/v1/oauth, with graph:read graph:write scopes.
Supermemory advertises https://api.supermemory.ai/api/auth, with
openid profile email offline_access. Neither requires Paperclip ID or a new
Paperclip-hosted credential service.
Cognee does not advertise a hosted MCP endpoint. Paperclip bundles a narrow
Cloud API bridge for remember, recall, and forget, matching the reviewed
remote-mode contract from cognee-mcp 0.5.5. The existing approved template ID
and credential paths remain compatible, but no process or package manager runs:
there is no runtime registry resolution, transitive dependency installation, or
credential-bearing subprocess or local runtime slot. Provider failures do not
consume local restart budgets. The bridge uses the gateway's guarded HTTP
client and bounded response reader. It sends credentials only to the validated
HTTPS tenant origin under *.aws.cognee.ai; redirects, credentials in URLs,
ports, paths, query strings, and fragments are rejected.
Setup validates Cloud access with the datasets endpoint. Scheduled health checks validate the URL and vault references without probing the Cloud API, so a transient provider timeout cannot hide working tools. Actual calls still report provider failures. Calls without an explicit timeout receive 60 seconds for retrieval synthesis. Indexing is asynchronous, so an immediate recall after remember may return HTTP 409 until the dataset is ready.
Credential and governance boundaries
API keys and OAuth tokens use the instance vault and existing grant lifecycle.
Cognee's tenant URL is displayed as text during entry but is also vaulted, with
an env.COGNEE_BASE_URL reference. No credential value belongs in connection
config, manifests, logs, fixtures, or Storybook. Personal credentials stay on
personal grants; organization credentials stay on the organization grant.
The local stdio gateway projects only the approved template's environment keys.
Provider resource selectors are not new Paperclip-enforced tenant filters. The provider's key, OAuth consent, and ACLs determine its accessible data. Configure agent access and action policies accordingly; do not claim that a user ID, workspace name, dataset, or space argument by itself enforces isolation.
The catalog classifies memory retrieval as read, storage/update as write, and
forget/delete/reset as destructive, overriding misleading read-only hints.
Unknown actions are treated as writes. Supermemory's add_memory can either
save or forget, so the whole action is destructive. Cognee exposes only the
reviewed remember, recall, and forget schemas from version 0.5.5, not the
package's broader administration tools.
| Reviewed family | Examples | Risk |
|---|---|---|
| Retrieval | Mem0 search_memories, get_memories, list_events; Supermemory search_memory, get_profile; Cognee recall |
Read |
| Store/update | Mem0 add_memory, update_memory; Zep add-memory tools; Cognee remember; Honcho create/update tools |
Write |
| Delete/forget | Mem0 delete_memory, delete_all_memories, delete_entities; Supermemory add_memory; Cognee forget |
Destructive |
The existing default policy remains Allowed for active actions, including writes and deletion. Operators can narrow access or set Ask first. Connection revocation, company and grant checks, action profiles, runtime access, catalog quarantine (when enabled), and audit continue through the shared substrate.
Review and validation
Storybook: Apps → Connections → Memory. Includes all five production setup flows, the experimental toggle, disabled setup, waiting for sign-in, rejected credentials/retry, and a narrow Cognee layout. The fixtures explicitly simulate authentication/discovery and never call providers or store secrets.
Deterministic tests cover the off-by-default contract, cached gallery filtering, direct setup links, server-side gates before secret creation, provider methods, environment credential paths, risk classification, pinned Cognee schemas, URL restrictions, and encrypted credential handling. Full provider proof is tracked separately below; mocked tests and Storybook are not live proof.
The sanitized live tool inventory records every discovered name, schema hash, parameter name, and risk classification for the five connected providers (82 tools total).
Live observations from the isolated codex/memory-connectors checkout:
- Mem0: API key created; live setup discovered 11 tools. Search succeeded through
Paperclip. An
add_memorycall with synthetic notebook text waited for Ask first, then executed after Allow once, with both decisions in the audit log. - Supermemory: Google sign-in and developer API key creation completed. Hosted MCP OAuth connected separately with read-only consent restricted to the test tag and one test agent. Search succeeded; a query for an unconsented tag returned the expected provider denial. Live discovery returned 16 tools.
- Cognee: API key created and Cloud access verified. The official pinned MCP client stored synthetic notebook text in a dedicated test dataset and recalled it after indexing completed. Personal setup exposes the three reviewed tools. Paperclip gateway recall returned the expected blue notebook fact (10.6s). A nonexistent test dataset returned a tool error, correctly recorded as failure.
- Zep: Google signup and the isolated
Memory connector testproject are ready. Its project API key is saved in~/.secrets(mode 0600), separately from the hosted MCP OAuth grant. Enabled Google Workspace MCP with writes allowed and automatic user creation disabled; created only the matching test user using the documented API. Paperclip dynamic registration and the explicitly approvedgraph:read/graph:writegrant completed. Live discovery returned 12 tools. The Codex browser's automated form submission stalled; a fresh flow and the user's final consent click completed authorization. - Honcho: initial organization creation failed repeatedly, including after a
fresh Google login. A subsequent retry succeeded and issued the API key,
saved in
~/.secrets(mode 0600). Personal connection setup discovered 40 tools. No payment method was added. The real agent test exposed and verified the personal remote credential-path correction described below.
All five providers now have authenticated managed-tool E2E evidence. Supermemory
now also has verified scoped writes and semantic recall, as recorded below. Discovery does
not establish that every individual tool or advanced provider feature was tested.
No real memories were uploaded for testing. The synthetic Cognee dataset is
paperclip_memory_connector_smoke_20260924; the Mem0 test user and Supermemory
consent tag are paperclip-memory-smoke-20260924.
Real agent tasks
Follow-up acceptance testing creates tasks in the browser and assigns a real
codex_local agent in an isolated company. These tests use managed connector
tools, not provider credentials in the agent environment. Task-scoped connector
audit records verify the returned provider results independently of the agent's
completion comment.
The first task exposed a Codex delivery defect: generated MCP config used
headers, which Codex ignores, instead of http_headers. The adapter now writes
the supported field; a regression assertion checks the complete header setting.
After restarting the test server, the resumed agent received working managed
tools and retrieved the approved Mem0 memory.
- MEM-1 / Mem0: browser-created task requested a synthetic write, paused for
Ask first, and resumed after the board clicked Approve & run. The write
executed once and
search_memoriesretrieved the same memory ID and exact silver compass fact under userpaperclip-memory-task-e2e-20260924. - MEM-2 / Cognee: the task called
rememberandrecallthrough the managed stdio gateway. The provider returned the amber telescope fact from dedicated datasetpaperclip_memory_task_e2e_20260924on the first recall. - MEM-3 / Supermemory: read-only search succeeded within the consented tag
with an honest zero-result response; one out-of-scope search returned the
provider's explicit 403 denial. This does not test memory writes under
read-only consent. The task exposed a gateway reporting defect: provider
isError: truewas recorded and returned as success. Failed provider calls now produce failed invocation/audit records and an MCPisError: trueresponse. A second browser-triggered agent run confirmed both the successful scoped search and the corrected error response; audit records showcall_failed,outcome: failure, andreasonCode: tool_errorfor the denied search. - MEM-4 / Zep: run
959d37a2-5d06-4f8b-bbfd-b4d751949fc8calledadd_memoryandsearch_graphthrough the managed connector. The first episode search returned the exact golden astrolabe fact and matching episode9133fe20-3bf0-46e4-bb48-d58c697d141d. The episode was not yet processed; raw episode retrieval passed, while derived graph processing is not claimed. - MEM-5 / Honcho: the first authenticated run exposed a gateway bug: a
personal API-key path
credentials.authorizationwas incorrectly prefixed a second time during vault resolution. Personal remote grants now use their declared path, with regression coverage for API keys, custom headers, and OAuth. After restart, runf8498aa1-5c84-48f5-8a94-3b603ea30e9amade seven successful managed calls: list/create workspace, create peer/session, add the peer, add a message, and retrieve messages. Dedicated workspacepaperclip-memory-e2e-20260924, peersynthetic-test-explorer, sessionsynthetic-observatory-session, messageq3nOttElad3g_JACmizQdreturned the exact violet sundial fact. No approval or provider errors occurred on the successful run. Its initial discovery still reflected the earlier failed health check; successful calls restored connection health.
All tools default to Allowed, including writes and destructive actions. The temporary Mem0 Ask first test override was removed after the approval test. Effective agent access was checked again: Mem0 11/11, Cognee 3/3, Supermemory 16/16, Zep 12/12, and Honcho 40/40 allowed, with zero ask-first or off actions. Provider OAuth consent remains a separate boundary from Paperclip tool permissions.
Daytona sandbox verification (September 24, 2026)
Browser-created MEM-6 runs the same three connected providers through a
native paperclip_runner Codex agent in a real Daytona Linux x86_64 sandbox.
The acceptance task uses only synthetic data and managed tools: a Mem0 copper
lantern fact, a dedicated Cognee dataset, and Supermemory searches inside and
outside the existing read-only consent. This first run predates Zep and Honcho
account setup; their subsequent local proof appears above. This is a manual
Product E2E attempt, not a full eval campaign.
The immutable sandbox image is
ghcr.io/paperclipai/paperclip-daytona-runner@sha256:b782947dc9738038570308686858dfb37fd731aba2f82944b6bb665a419e2f24.
The remote runner binary was extracted from that image (SHA-256
5067194e4a4eff0946e312b162e78a46184dae49c29f5699be81fec6cfd0b9d7).
The first attempt failed before provider startup because a macOS host needs
PAPERCLIP_RUNNER_REMOTE_BINARY_PATH pointing to a Linux binary. After configuring
it, PRP authenticated through Daytona provider ingress and the agent executed in
/home/daytona/paperclip-workspace as the daytona user.
That retry did not pass connector acceptance: its assigned MCP URL pointed to
the local host's loopback address, which means the sandbox itself when used
remotely. No memory provider calls ran. Catalog readiness from
connections_search does not prove remote gateway connectivity. Native assigned
MCP traffic uses a direct HTTP connection, separate from the PRP control channel;
the remote Codex path now relays assigned tools through the existing authenticated
PRP dynamic-tool channel. The control plane retains the short-lived gateway token
and invokes the same gateway service for discovery and each call. Provider
credentials, policies, approval checks, and audit records stay server-owned.
Every call also verifies the native run still owns its task; planning/ask modes
expose only read tools. Other provider/local paths retain their existing HTTP MCP
delivery. No tunnel or public board/API exposure is needed for remote Codex.
Provider threads retain dynamic-tool declarations, so the remote session contract
also rotates when introducing the relay. An intermediate retry discovered all
30 tools server-side but resumed an old provider catalog; it made no provider
calls and is not counted as a pass.
The first successful browser-triggered run 16c288bc-27c3-4010-b8f8-e3d24d007c59 completed
MEM-6 successfully in 1m 36s with the default configured gpt-5.6-sol model.
Task-scoped gateway audit records independently confirm six calls:
- Mem0
add_memorystored the exact copper lantern fact withinfer=false;search_memoriesreturned the same ID (ba30eea2-f68b-4873-acbe-a59dae98ed75) under userpaperclip-memory-daytona-e2e-20260924. - Cognee
rememberaccepted the dedicatedpaperclip_memory_daytona_e2e_20260924dataset, andrecallreturned the fact on the first attempt. Its stdio provider process remains on the control plane; the Daytona agent calls it through PRP. - Supermemory
search_memorysucceeded within the existing consented tag with zero results. Exactly one unconsented search returned the expected 403 scope restriction and was audited ascall_failed/tool_error.
No approval prompts, public tunnel, direct provider API fallback, or provider credentials in the agent environment were used. All assigned tools remain Allowed. This proves the connected Mem0, Cognee, and Supermemory journeys on remote native Codex; it does not establish live Zep/Honcho access or Supermemory writes beyond its existing read-only consent. Failed setup attempts are retained in the task history. The disposable environment is removed after verification.
After Zep and Honcho onboarding completed, MEM-6 ran again in a fresh
Daytona sandbox: b41a45a5-6040-429d-82f3-f048f45205a8, 2m 4s. The browser
showed Done, and task-scoped gateway audit independently confirmed 10
successful provider calls across all five providers:
- Mem0 retrieved the existing copper lantern memory and matching ID.
- Cognee performed two read-only recalls; the second returned the exact stored sentence from the dedicated dataset.
- Supermemory completed a search within the existing consented tag (zero results).
- Zep stored the jade sextant fact once and retrieved its exact text through
episode search, with matching UUID
8ef23967-bc98-410e-9e06-03669da5d7dd. - Honcho created session
daytona-memory-final-20260924in the existing synthetic workspace, added the test peer, stored the ivory compass fact, and retrieved the exact messagee7g4wGXfWR5_rdb4bk6zN.
The agent confirmed Linux x86_64, user daytona, and working directory
/home/daytona/paperclip-workspace. No unexpected approval or connector error
occurred. The control plane relayed all managed provider calls through the native
runner channel, with no provider keys in the agent environment or public tunnel.
All five connections finished healthy. The original local test-agent configuration
was restored, the disposable environment removed, and Daytona confirmed sandbox
682ca187-765e-4b61-9038-747d2649e76a no longer exists. Provider test memories
remain available for inspection. Supermemory writes and advanced derived-memory
features remain outside this test's coverage.
Storybook walkthrough checks
The Memory group includes 21 stories covering the catalog, experimental switch, all five setup flows, credential forms, OAuth waiting/failure, completion, and narrow layouts. Zep and Supermemory now fetch identity fixtures after mount; preseeded query-cache data previously left their “Which humans” step waiting forever. Browser walkthroughs reach both providers' ready screens with all tools allowed. Credential play functions wait for the access button to become enabled; browser checks also confirmed rejected Mem0 credentials and narrow Cognee inputs. These are simulated provider journeys and do not replace live account tests.
Automated checks
pnpm -r typecheckandpnpm buildpassed. The final server changes also passedtsc --noEmit.- Connector service, memory governance, and instance-setting regressions: 399 tests passed with embedded PostgreSQL enabled.
- Focused shared/UI contract and setup tests: 281 passed.
- Storybook production build, token gates, brand asset validation, and
git diff --checkpassed. Browser review covered both themes, the 320px Storybook viewport, disabled setup, the toggle, OAuth waiting, and rejected-key retry. Storybook authentication remains simulated. - The full repository suite finished: 686 files passed, six failed, four skipped; 13,308 tests passed, 11 failed, 84 skipped. It reported failures in Slack callback batching, concurrent workspace port allocation, and deferred heartbeat comment batching. Initial connector count/error and instance-setting snapshot failures were corrected and their full targeted suites passed. That run also loaded memory-normalization code before the final implementation was saved; the final targeted memory suite passed. The full suite is not claimed green.
- Codex managed-home regression suite: 53 passed after the live-task fix; adapter typecheck and build passed.
- Gateway acceptance/service regression suites: 106 passed after the personal remote credential-path fix; final server typecheck and build passed.
- Native relay/session/authority regressions: 534 passed, followed by 36 final relay/authority checks covering readable tool names and live task-mode changes. Final server typecheck and build passed. Relay checks cover configured gateway reuse, gateway errors, revocation, partial bindings, credential isolation, and planning/ask restrictions.
Supermemory write completion (September 24)
The original read-only grant was replaced through the browser with a new
read/write OAuth grant restricted to paperclip-memory-smoke-20260924 and the
same test agent. The old local connection was removed. who_am_i independently
returned scoped permission: write; all 16 Paperclip tools remain Allowed.
Local run fb67a991-2960-47e5-8f79-94282c65d2ec saved the exact synthetic fact
“The Supermemory test navigator keeps a turquoise compass in a maple cabinet.”
Document zUk5wpBu79rCMWu9Yubd9j initially stayed queued, so the task correctly
did not claim immediate recall. Supermemory's browser console later displayed
Done and the exact stored content.
Daytona run bab3abd3-617e-4598-b0de-213d5c26f075 performed a second write:
“The Daytona Supermemory test pilot keeps a coral sextant in a walnut drawer.”
Document C5HY2CWANHZZa3TckJUDYN reached Done. Managed get_document returned
its exact content; search_memory returned both this fact and the earlier
local fact at 93% relevance to their respective queries. The task audit records
10 successful calls, including the write, document reads, and semantic searches.
No provider credentials entered the sandbox. The native PRP relay handled all
calls without a public tunnel. The local agent configuration was restored, and
sandbox 6a9723dd-972e-4933-b227-6b8e7e2133ae was deleted and verified absent.
Bundled Cognee bridge acceptance (September 24)
The final implementation was retested after replacing the external MCP client
with the bundled Cloud bridge. Local managed write run
16e7820c-2a94-41d9-8d7b-abe6524edf01 stored the bronze-telescope fact in
paperclip_memory_bundled_bridge_20260924; the immediate recall did not yet
prove indexing completion. Follow-up run 8e12cad1-f2f4-4471-a790-d589ffa050b7
returned “He keeps a bronze telescope in a birch observatory.”
Final Daytona run a56f9f97-3fb3-498c-abf6-974ddc7d5d30 independently recalled
that fact, then stored “The Daytona Cognee test cartographer keeps a silver
globe in a cedar study.” in paperclip_memory_daytona_bridge_20260924.
The provider returned dataset 9518ab46-e777-5f38-994b-9ceabfff4856, then graph
recall returned the silver globe and cedar study. Every call used the native
runner relay and reported transport: cognee_cloud, spawnedLocalProcess: false.
The run succeeded. No provider credentials entered the sandbox. The original
local agent configuration was restored, and sandbox
3b980bc0-6bcd-4cfe-9b17-b518c1aed64a was deleted and verified absent.
The gateway regression suite passed all 71 tests, including immediate recovery from a provider error in an authenticated public deployment without a trusted local runtime host. The regression asserts that no runtime slot is created. The bundled bridge's 25 contract and validation tests also passed.
Branding provenance
Official artwork downloaded September 24, 2026; no invented marks or colors:
- Zep:
https://www.getzep.com/apple-touch-icon.png(official gradient mark). - Supermemory:
https://supermemory.ai/apple-touch-icon.png?v=2(official mark on its supplied white background). - Cognee:
https://www.cognee.ai/favicon.ico, converted losslessly to PNG. - Honcho:
https://honcho.dev/Honcho_Pixel-05.svg. - Mem0 reuses the existing catalog artwork.
The supplied square artwork fits the shared gray connector frame and works in
both themes. Registry changes are in ui/public/brands/apps/manifest.json;
regenerate definitions with node scripts/ingest-app-definitions.mjs --definitions-only.