API Connection โ
Dendrite can optionally load persona config from an AgentLayerZero API instead of inline configuration. This enables "embed my AI persona on any website" use cases.
How It Works โ
- Your app calls
fetchPersonaConfig(apiUrl, username, slug) - Dendrite fetches the instance settings + personality docs from the API
- The response is cached in
localStorage(1 hour TTL) - Config is passed to
createNeuron() - After init, everything runs locally โ no server during chat
Usage โ
Manual Fetch โ
ts
import { createNeuron, fetchPersonaConfig } from '@agent-layer-zero/dendrite'
const persona = await fetchPersonaConfig(
'https://synapse-xxr0cw.fly.dev',
'shyaboi',
'career-coach'
)
const neuron = createNeuron({
modelId: persona.instance.model_id || 'gemma-2-2b-it-q4f16_1-MLC',
worker: new Worker(new URL('./worker.ts', import.meta.url), { type: 'module' }),
personalityDocs: persona.personalityDocs.map(d => ({
type: d.type,
content: d.content,
name: d.name,
order: d.order,
enabled: d.enabled,
})),
})What the API Returns โ
json
{
"instance": {
"slug": "career-coach",
"name": "Career Coach",
"model_id": "gemma-2-2b-it-q4f16_1-MLC",
"temperature": 0.3,
"max_tokens": 2048,
"zero_shot_prompt": null
},
"personality_docs": [
{
"name": "Identity",
"type": "zero-shot",
"content": "You are a career coach for Ian Sears...",
"order": 0,
"enabled": true
}
]
}Caching โ
Persona config is cached in localStorage:
| Visit | Behavior |
|---|---|
| First | API call โ cache โ init |
| Return (< 1 hour) | Cache hit โ instant init |
| Return (> 1 hour) | Cache hit โ init immediately + background refresh |
| Offline | Cache hit โ works with stale data |
Cache key format: dendrite_persona_{username}_{slug}
API Endpoint โ
GET {apiUrl}/api/public/instance/{username}/{slug}No authentication required for public instances. The API returns the instance config and all enabled personality documents.
