New: classifier models — decide what matters without reading it

Build agent systems that do the work.

Glove is the open-source TypeScript stack for AI-powered applications: models, tools, memory, voice, media, UI, browser use, sandboxes, and working environments. Foundry composes those capabilities into typed, observable systems that respond to events, work together, and keep going.

FoundryDisplay StackMemoryInboxScratchpadBrowser UseSandboxesCode ExecutionClassifiersMeshVoiceAvatarsImagesMCP

The application framework for agents.

Define what an agent can be in code. Configure what each live agent can use as data. Foundry assembles the right model, tools, applications, memory, workspace, and collaborators for every message—then shows you how the work happened.

CODEdefinitionfile-routed
+
DATAinstancelive choices
→
RUNassemblyobservable
Used in production by

An agent is more than a model with tools.

Glove provides the capabilities agents need to do real work: interfaces, memory, media, browser use, sandboxes, computation, integrations, and coordination. Adopt any package on its own, or use Foundry to compose them into a complete, persistent application.

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