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.
fetch and web streams)."type": "module" with bundled types.Four common shapes. Pick the row that matches what you are building — the rest of the docs assume one of them.
| Building | Install |
|---|---|
| Next.js app (App Router) | glove-react glove-next zod |
| React app with your own backend | glove-react zod (+ glove-core on the server) |
| Node service, CLI, or worker | glove-core zod |
| Voice | add glove-voice, or glove-voice-s2s for realtime speech-to-speech |
# 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 zodglove-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.
Everything else is opt-in and installed the same way. Each one has its own page — this is the map.
| Need | Package | Docs |
|---|---|---|
| Long-term memory across sessions | glove-memory | Memory |
| Many tools behind one SQL tool | glove-scratchpad, glove-sql | Scratchpad |
| Many tools behind one code-eval tool | glove-js, glove-python, glove-lisp | Code Execution |
| A sandboxed filesystem the agent works in | glove-working-environment + glove-env-* | Working Environment |
| A measured, enforced egress boundary | glove-egress | Egress Control |
| External tool servers (Notion, Linear, Gmail…) | glove-mcp | MCP |
| Agents that message each other | glove-mesh | Mesh |
| Scheduled / supervised agent processes | glove-continuum-signal | Continuum |
| Voice — cascade pipeline | glove-voice, glove-voice-native | Voice |
| Voice — realtime, avatars, LiveKit | glove-voice-s2s, glove-voice-avatar, glove-voice-livekit | Realtime Voice |
| Ship the agent as a container | glovebox-core, glovebox-kit, glovebox-client | Glovebox |
One adapter factory covers every provider. Pass the provider name and a model; the key is read from the environment.
import { createAdapter } from "glove-core/models/providers";
export const model = createAdapter({
provider: "anthropic", // see the table below
model: "claude-sonnet-4-20250514",
stream: true,
});| Provider | Env variable | Default model |
|---|---|---|
openai | OPENAI_API_KEY | gpt-4.1 |
anthropic | ANTHROPIC_API_KEY | claude-sonnet-4-20250514 |
openrouter | OPENROUTER_API_KEY | anthropic/claude-sonnet-4 |
gemini | GEMINI_API_KEY | gemini-2.5-flash |
minimax | MINIMAX_API_KEY | MiniMax-M2.5 |
kimi | MOONSHOT_API_KEY | kimi-k2.5 |
glm | ZHIPUAI_API_KEY | glm-4-plus |
mimo | MIMO_API_KEY (+ optional MIMO_BASE_URL) | mimo-v2.5 |
bedrock | AWS_ACCESS_KEY_ID | anthropic.claude-3-5-sonnet-20241022-v2:0 |
ollama | none | you specify |
lmstudio | none | you specify |
ANTHROPIC_API_KEY=sk-ant-...
# or
OPENAI_API_KEY=sk-...Ollama and LM Studio need no key. Point the adapter at the local server and name the model you pulled:
const model = createAdapter({
provider: "ollama",
model: "llama3",
baseURL: "http://localhost:11434/v1", // the default
});Two switches worth knowing at install time, because they change cost and latency more than anything else you configure:
// 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.
The repo is a pnpm workspace. Clone it if you want to run the examples or work on a package:
git clone https://github.com/porkytheblack/glove.git
cd glove
pnpm install
pnpm build # build every package
pnpm typecheckNext: build a working agent in 15 minutes, or skim All Packages to see what is available before you commit to a shape.