Installation

Glove is a set of small packages rather than one framework install. You add the runtime, the binding for your UI, and whichever capability packages the app actually needs. Nothing else is pulled in.

Requirements

  • Node.js 18+ (20+ recommended — several packages use the modern fetch and web streams).
  • TypeScript 5+, ESM. Every package ships "type": "module" with bundled types.
  • zod — tool input schemas are Zod schemas. Install it alongside the runtime.
  • An API key for at least one model provider, or a local runtime (Ollama / LM Studio) that needs none.

Pick your shape

Four common shapes. Pick the row that matches what you are building — the rest of the docs assume one of them.

BuildingInstall
Next.js app (App Router)glove-react glove-next zod
React app with your own backendglove-react zod (+ glove-core on the server)
Node service, CLI, or workerglove-core zod
Voiceadd glove-voice, or glove-voice-s2s for realtime speech-to-speech
terminalbash
# Full-stack (Next.js)
pnpm add glove-react glove-next zod

# Server-only (Node / CLI / worker)
pnpm add glove-core zod

# npm and yarn work the same way
npm install glove-react glove-next zod

glove-core is a dependency of glove-react, so a full-stack install already has the runtime. Install it explicitly when you import from it directly on the server.

Capability packages

Everything else is opt-in and installed the same way. Each one has its own page — this is the map.

NeedPackageDocs
Long-term memory across sessionsglove-memoryMemory
Many tools behind one SQL toolglove-scratchpad, glove-sqlScratchpad
Many tools behind one code-eval toolglove-js, glove-python, glove-lispCode Execution
A sandboxed filesystem the agent works inglove-working-environment + glove-env-*Working Environment
A measured, enforced egress boundaryglove-egressEgress Control
External tool servers (Notion, Linear, Gmail…)glove-mcpMCP
Agents that message each otherglove-meshMesh
Scheduled / supervised agent processesglove-continuum-signalContinuum
Voice — cascade pipelineglove-voice, glove-voice-nativeVoice
Voice — realtime, avatars, LiveKitglove-voice-s2s, glove-voice-avatar, glove-voice-livekitRealtime Voice
Ship the agent as a containerglovebox-core, glovebox-kit, glovebox-clientGlovebox

Model providers

One adapter factory covers every provider. Pass the provider name and a model; the key is read from the environment.

lib/model.tstypescript
import { createAdapter } from "glove-core/models/providers";

export const model = createAdapter({
  provider: "anthropic",              // see the table below
  model: "claude-sonnet-4-20250514",
  stream: true,
});
ProviderEnv variableDefault model
openaiOPENAI_API_KEYgpt-4.1
anthropicANTHROPIC_API_KEYclaude-sonnet-4-20250514
openrouterOPENROUTER_API_KEYanthropic/claude-sonnet-4
geminiGEMINI_API_KEYgemini-2.5-flash
minimaxMINIMAX_API_KEYMiniMax-M2.5
kimiMOONSHOT_API_KEYkimi-k2.5
glmZHIPUAI_API_KEYglm-4-plus
mimoMIMO_API_KEY (+ optional MIMO_BASE_URL)mimo-v2.5
bedrockAWS_ACCESS_KEY_IDanthropic.claude-3-5-sonnet-20241022-v2:0
ollamanoneyou specify
lmstudiononeyou specify
.env.localbash
ANTHROPIC_API_KEY=sk-ant-...
# or
OPENAI_API_KEY=sk-...

Local models

Ollama and LM Studio need no key. Point the adapter at the local server and name the model you pulled:

lib/model.tstypescript
const model = createAdapter({
  provider: "ollama",
  model: "llama3",
  baseURL: "http://localhost:11434/v1", // the default
});

Reasoning and prompt caching

Two switches worth knowing at install time, because they change cost and latency more than anything else you configure:

lib/model.tstypescript
// Capture provider reasoning traces (DeepSeek, Qwen3-Thinking, GLM, Kimi,
// MiniMax, o-series…). `true` for defaults, or an object to tune depth.
createAdapter({ provider: "openai", reasoning: { effort: "high" } });

// Provider prompt caching — breakpoints on the stable prefix and latest turn.
createAdapter({ provider: "anthropic", cache: { ttl: "1h" } });

// The same switches exist on the Next.js handler.
createChatHandler({ provider: "anthropic", cache: true });

Cache usage is reported on every response (cache_creation_input_tokens / cache_read_input_tokens) and threaded through to useGlove().stats, so you can bill on it. Full detail in the Core API reference.

Building from source

The repo is a pnpm workspace. Clone it if you want to run the examples or work on a package:

terminalbash
git clone https://github.com/porkytheblack/glove.git
cd glove
pnpm install
pnpm build       # build every package
pnpm typecheck

Next: build a working agent in 15 minutes, or skim All Packages to see what is available before you commit to a shape.