Skip to content

Configure Docs

Configure is personalization infrastructure for agents. Configure personalizes your agent with user-approved context from other agents, app contexts, preferences, memories, and more. Users can continue with Configure through OAuth SSO, manage profile permissions inline in chat, then your server reads and writes approved context over API, MCP, or tool calls.

Most teams should start by integrating Configure into an existing agent. Build a new Configure agent only when you want the packaged chat shell.

Choose A Path

Integrate An Existing Agent

Use this when your product already has an agent, chat surface, or model loop.

  1. Install and run setup:
bash
npm install configure
npx configure setup
  1. Add Continue with Configure to the app's existing SSO row.
  2. Add inline Configure inside the chat + menu or integrations list.
  3. Store Configure OAuth tokens server-side. If using Link fallback, listen for configure:linked and send the returned token to your backend.
  4. On the backend, create configure.profile({ token }).
  5. Read the profile, pass read.profile.format() into the model, expose profile.tools(), execute Configure tool calls with profile.executeTool(), and commit after the turn.

Build A New Agent

Use this only when you want a fresh Configure-backed chat shell.

bash
npm install configure
npx configure setup
cp -R node_modules/configure/template ./my-agent

Then customize .env, public/brand.css, public/brand.js, and server.mjs.

Canonical Loop

ts
import { Configure } from "configure";

const configure = new Configure({
  apiKey: process.env.CONFIGURE_API_KEY,
  agent: process.env.CONFIGURE_AGENT,
});

const profile = configure.profile({ token });
const read = await profile.read({
  sections: ["identity", "preferences", "summary", "imports"],
});

const response = await model.run({
  messages: [
    { role: "system", content: read.profile.format({ guidelines: true }) },
    ...messages,
  ],
  tools: profile.tools(),
  executeTool: profile.executeTool,
});

await profile.commit({
  messages,
  response,
  memories: response.memoryCandidates,
});

Default model tools:

  • configure_profile_read
  • configure_profile_search
  • configure_profile_remember

Connector and action tools are opt-in per turn:

ts
const tools = profile.tools({
  connectors: ["gmail", "calendar", "sheets"],
  actions: ["email.send", "sheets.values_update"],
});

Gmail, Calendar, Drive, Notion, and Google Sheets are connectors. Model-callable functions are tools.

Key Boundaries

  • Secret keys (sk_) stay server-side.
  • Publishable keys (pk_) are for browser Link and component surfaces.
  • OAuth access and refresh tokens stay server-side.
  • Link fallback tokens go to your backend. Do not place them in the model prompt.
  • The model receives formatted profile context and Configure tool definitions.
  • API keys resolve the acting agent for writes. Do not let request bodies, display names, or user input choose storage paths.

Personalization infrastructure for agents