// ——— Section 5 — bring your own everything ——— const PROVIDERS = ['Anthropic', 'OpenAI', 'Google', 'Ollama', 'LM Studio', 'llama.cpp']; const MODEL_MAP = [ { i: 'pen-line', n: 'Writing', m: 'Claude Sonnet', cls: 't-writing' }, { i: 'code', n: 'Code', m: 'GPT-5', cls: 't-code' }, { i: 'eye', n: 'Images', m: 'Qwen-VL · local', cls: 't-vision' }, ]; const HOTKEY_MAP = [ { n: 'Summon Caret · default', keys: ['⌥', 'Space'] }, { n: 'Clipboard · default', keys: ['⌘', '⇧', 'V'] }, { n: 'Summarize · inside Caret', keys: ['ss', '↩'] }, ]; function Byo() { return (

Providers

Cloud or fully local — OpenAI-compatible servers included.

{PROVIDERS.map((p) =>
{p}
)}

Per-action models

Use Sonnet for writing, GPT-5 for code, a local VLM for images.

{MODEL_MAP.map((m) => (
{m.n} {m.m}
))}

Make the keyboard flow yours

Choose Caret’s global shortcut and a separate shortcut for clipboard history. Inside Caret, run actions by alias or their configured shortcut.

{HOTKEY_MAP.map((h) => (
{h.n}
))}
); } // ——— Section 6 — privacy ——— function Privacy() { return (
Privacy

App launching, file browsing, clipboard history and snippets work locally. Clipboard history is stored on your Mac and can be paused or cleared. AI requests go to the provider you choose, using your key; Caret also downloads its shared action catalog.

); } // ——— Section 7 — first minute ——— const FM = [ { t: Download Caret and drag it to Applications., mock: 'install' }, { t: Use your configured shortcut. Launch an app or browse Files — no AI key needed., mock: 'apps' }, { t: For AI, open Settings and connect your provider., mock: 'key' }, { t: Grant Accessibility for selection capture, insertion and snippets., mock: 'grant' }, { t: Select text, summon Caret and run ss for a summary., mock: 'run' }, ]; function FmMock({ kind }) { if (kind === 'apps') return
Apps · Files
; if (kind === 'install') return (
); if (kind === 'grant') return (
Accessibility
); if (kind === 'key') return (
API key
sk-••••••••
); if (kind === 'run') return (
ss
Summarize
); return (
esc
); } function FirstMinute() { return (
{FM.map((step, i) => (
{i + 1}

{step.t}

))}
Tip: Settings → Snippets → Add Snippet. Save a keyword for text you type often. Apps and Files do not require Accessibility access.
); } Object.assign(window, { Byo, Privacy, FirstMinute });