---
name: tanstack-tanstack-ai-memory-honcho
description: "Use when wiring honcho() from @tanstack/ai-memory/honcho — a hosted memory adapter where recall is a dialectic answer over the user's representation (no discrete fragments). Requires the optional @honcho-ai/sdk peer."
license: "MIT"
metadata:
  decimalai-skill-id: "657fe9bc-0f5b-424b-ac63-bd19a1f5c7c5"
  decimalai-version-id: "516d3bdc-b8db-4acd-9eac-93279ff09be6"
  decimalai-version: "2"
  decimalai-body-sha256: "1272430a445142dcaefa6155a631a1f9fbe729f0cf609a3080aa59a0868a2036"
  decimalai-name: "tanstack/tanstack-ai-memory-honcho"
  decimalai-format: "1"
  decimalai-invocation: "model"
  decimalai-category: "agent-tooling"
  decimalai-source: "https://app.decimal.ai/s/tanstack-tanstack-ai-memory-honcho@2/SKILL.md"
---
# Honcho Memory Adapter

Hosted `recall`/`save` adapter backed by Honcho. Honcho models memory as peers
exchanging messages in a session; `recall` returns a **synthesized dialectic answer**
over the user peer's representation (so there are no discrete fragments), and `save`
appends the turn's messages to the session.

## Setup

```ts
import { memoryMiddleware } from '@tanstack/ai-memory'
import { honcho } from '@tanstack/ai-memory/honcho'

// Build per request from the server-validated session — never from req.body.
function memoryFor(session: { userId: string; threadId: string }) {
  const memory = honcho({ user: session.userId }) // baseURL defaults to HONCHO_URL

  return memoryMiddleware({
    adapter: memory,
    scope: { threadId: session.threadId, userId: session.userId },
  })
}
```

`@honcho-ai/sdk` is an **optional peer dependency**, loaded lazily on first use — install
it where you use `honcho()`.

## Options

- `user` — user peer id (falls back to `scope.userId`, then `'demo-user'`).
- `baseURL` — Honcho server URL (default `HONCHO_URL` or `http://localhost:8001`).
- `workspaceId` — default `HONCHO_APP_NAME` or `'ai-memory'`.
- `apiKey` — default `HONCHO_API_KEY`.
- `assistantId` — assistant peer id (default `'assistant'`).

**Scope fields:** session key = `{tenantId|_}__{threadId}`; peer id is
`{tenantId}__{user}` when `tenantId` is set, otherwise `user` / `scope.userId`.
`namespace` is ignored.

`recall` calls the user peer's dialectic `chat()` and injects the answer as the system
prompt; Honcho exposes no LLM tools.
