New — sandboxes, code execution & realtime voice

Build agents that do cool things.

Glove is an open-source TypeScript framework for AI-powered applications. You define tools; the agent decides when to use them — then renders UI, speaks, remembers, computes in a sandbox, and coordinates with other agents.

Display StackMemoryInboxScratchpadSandboxesCode ExecutionMeshContinuumVoiceAvatarsMCPGlovebox
Used in production by

Agents outgrew the chatbox, and need more.

An agent that only calls tools and prints text hits a wall fast. Glove gives it the rest — a way to render UI and speak, memory and a mailbox, a sandbox to compute in, peers to coordinate with, and a way to ship. Every one is a separate package you can adopt on its own.

A tool, a model, and you're running.

Everything else is opt-in. Install the runtime, describe what your app can do, and let the agent sequence it.

agent.tstypescript
import {
  Glove, MemoryStore, Displaymanager, createAdapter,
} from "glove-core";
import { z } from "zod";

const agent = new Glove({
  store: new MemoryStore("session-1"),
  model: createAdapter({ provider: "anthropic" }),
  displayManager: new Displaymanager(),
  systemPrompt: "You are a helpful assistant.",
})
  .fold({
    name: "search_products",
    description: "Search the product catalog",
    inputSchema: z.object({ query: z.string() }),
    async do(input, display) {
      const hits = await catalog.search(input.query);

      // Render a grid mid-conversation, keep going.
      await display.pushAndForget({
        renderer: "product_grid",
        input: hits,
      });

      return hits;
    },
  })
  .build();

await agent.processRequest("Running shoes under $100");
One install per capability

glove-core is the runtime. Memory, sandboxes, voice, mesh and MCP are separate packages that mount onto it — nothing you skip costs you anything.

Tools render, and can wait

pushAndForget shows UI mid-run; pushAndWait suspends the tool until the user answers, then resumes with their value.

Any model, any store

Anthropic, OpenAI, Gemini, OpenRouter, Bedrock, Ollama and LM Studio behind one factory — and a store interface small enough to implement over whatever you already run.

Browse all packages

Five components. One runtime.

Built on adapters — interfaces that decouple the runtime from specific implementations. Swap models, stores, or UI frameworks without changing application logic.

AgentThe agentic loop. Takes a message, prompts the model, executes tool calls, feeds results back, repeats until the model responds with text.
Prompt MachineThe model wrapper. Manages system prompts, dispatches requests, notifies subscribers. The model itself is swappable via the ModelAdapter interface.
ExecutorThe tool runner. Validates inputs with Zod, retries with Effect, manages permissions through the tool permission system. Tools are registered at build time.
ObserverThe session watcher. Tracks turns, token consumption, and triggers context compaction when conversations get too long. Sessions run indefinitely.
Display ManagerThe UI state machine. Manages the display stack — what the user sees. Framework-agnostic. This is what makes Glove an application runtime, not a chatbot backend.

Swap anything. Change nothing.

Every layer is an interface. The runtime doesn't care what's behind it.

ModelAdapter

The AI provider. Anthropic, OpenAI, local models, or mocks for testing. Anything that takes messages and returns responses.

StoreAdapter

The persistence layer. Messages, tokens, turns, inbox. In-memory, SQLite, Postgres — wherever your state lives.

DisplayManagerAdapter

The UI state layer. Manages the display stack. Framework-agnostic — React, Vue, Svelte, terminal UI. Bind however you want.

SubscriberAdapter

The event bus. Logging, analytics, real-time streaming, debugging. Plug in whatever you need to observe.

Build something cool.

Glove is open source and ready to build on.

ElevenLabs Startup Grant