GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Next.js
  • Svelte
  • Nuxt
  • Nitro
  • AI SDK
  • Chat SDK
  • Flags SDK
  • Workflow SDK
  • Turborepo
  • shadcn/ui
  • SWR
  • just-bash
  • deepsec
  • Docs

This view

  • Original page
  • New address

GeezerVison is showing eve.dev — eve – build AI agents that you own

Build production AI agents

eve is an open-source agent framework for durable, long-running work. Build, govern, and evolve enterprise-grade agents that can scale.

$npx eve@latest init my-agentnpx eve@latest init my-agent
v1.0.0-rc.10·Apache-2.0
  1. CoderAgent10:02 AM

    Picked up a P1 bug and reproduced it in a sandbox.

    Saved carts disappear after sign-inacme/storefront#412 · opened by Dana
  2. Coder

    Fixed, with tests. @Reviewer ready for review.

    fix(cart): keep guest items after sign-inacme/storefront#418 · +84 −12 · 6 checks passed
  3. ReviewerAgent10:33 AM

    The merge logic is right, but the security pass flagged one thing. @Coder

    Guest cart ID is trusted from the cookiecart/session.ts:42 · could pull another guest's cart into an account
  4. CoderAgent10:38 AM

    Good catch. The merge now checks the guest cart belongs to the signing-in session, with a test for it. Pushed.

    pnpm vitest cart/session · 4 passed
  5. ReviewerAgent10:41 AM

    Verified the fix. Security pass is clean, approving.

    fix(cart): keep guest items after sign-inacme/storefront#418 · approved by Reviewer
    • Correctness: merge handles empty and duplicate carts
    • Tests: 4 new cases cover the regression
    • Security: cart ownership verified, no secrets in logs
  6. CoderAgent10:42 AM

    Merged and closed the issue. It goes out with the next deploy.

    fix(cart): keep guest items after sign-inacme/storefront#418 · merged into main · closed #412

Agents that run your company, power your product, or are personal

Start from a working template, or build your own from scratch.

Use the company brain template

Build a Slack agent that answers your team's business questions from your documented dbt models.

  • Answers in SlackOnly for the people and channels you allow.
  • Grounded in dbtReads your model docs before it writes a query.
  • Read-only SQLQueries DuckDB or MotherDuck, and never writes to them.

Build an agent that turns issues into reviewed draft pull requests, from triage and planning to implementation.

  • GitHub and LinearPicks up tasks where your team already files them.
  • Four stationsClassifier, analyst, implementer, and reviewer subagents work each task.
  • Draft pull requestsEvery task ends in a reviewed draft on your repository.

Agents inside your product, over web, voice, or iMessage, with memory for every user.

  • Web chatInside your app, with long-term memory for each user.
  • VoiceCalls that run tools and ask for approval.
  • iMessageThreads that share memory with web and Slack.
  1. D

    Dana9:41 AM

    @company-brain how are repeat orders trending this quarter?

  2. company-brainAgent9:41 AM

    • list_modelsFound customers, orders, and payments
    • get_modelRead the docs for the orders model
    • query_sqlRan 1 query, returned 3 rows

    Repeat customers placed 44% of orders in October, up from 38% in August.

    MonthOrdersRepeat
    August41238%
    September45541%
    October49844%

Dynamic where you need it

Write your agent as plain files. When it needs to behave differently for each customer, make any file dynamic.

When the support agent serves
agent/example
instructions.md

An instructions.md file is a complete agent. Describe its role in Markdown, then run eve.

Static in this example. Any file can be dynamic.

# Identity

You are a support agent.
Answer customer questions, look up
their orders, and escalate anything
you can't resolve.
instructions/sla.tsdynamic

Add instructions that depend on the customer. Enterprise customers get a one-hour SLA, and Pro customers get a reply within a business day.

Acme Org
Enterprise
1-hour SLA, escalate when stuck
import { defineDynamic, defineInstructions }
  from "eve/instructions";

export default defineDynamic((ctx) => {
  const plan =
    ctx.session.auth.current?.attributes.plan;
  return defineInstructions({
    content: plan === "enterprise"
      ? "Reply within the 1-hour SLA. Escalate anything you can't resolve."
      : "Reply within one business day.",
  });
});
agent.tsdynamic

Choose the model per customer: a larger model for enterprise conversations.

Acme Org
Enterprise
Larger model
import { defineAgent, defineDynamic } from "eve";

export default defineAgent({
  model: defineDynamic((ctx) =>
    ctx.session.auth.current?.attributes
      .plan === "enterprise"
      ? "openai/gpt-6-luna-fast"
      : "zai/glm-5.2",
  ),
});
skills/refunds.mdoptional

Skills are Markdown playbooks loaded only when relevant, so the agent gets focused guidance without carrying it in every prompt.

Static in this example. Any file can be dynamic.

---
name: refunds
description: Handle refund requests
---

Check the order date first. Refund
within 30 days. After that, offer
store credit.
tools/lookup_order.tsoptional

Drop a TypeScript file in tools/ and the model can call it. The filename becomes the tool name, no registration required.

Static in this example. Any file can be dynamic.

import { defineTool } from "eve/tools";
import z from "zod";

export default defineTool({
  description: "Look up an order by ID",
  inputSchema: z.object({ orderId: z.string() }),
  async execute(input) {
    const res = await fetch(
      `${process.env.ORDERS_API_URL}/orders/${input.orderId}`
    );
    return res.json();
  },
});
tools/page_on_call.tsdynamic

Let the agent page the on-call engineer, but only for enterprise customers.

Acme Org
Enterprise
Can page on-call
import { defineDynamic, defineTool }
  from "eve/tools";
import { z } from "zod";
import { pageOnCall } from "../lib/pager";

export default defineDynamic((ctx) =>
  ctx.session.auth.current?.attributes.plan === "enterprise"
    ? defineTool({
        description: "Page the on-call engineer.",
        inputSchema: z.object({ summary: z.string() }),
        execute: ({ summary }) => pageOnCall(summary),
      })
    : null,
);
channels/slack.tsoptional

Add channel files to answer customers in Slack, Discord, Teams, or the web with the same agent.

Static in this example. Any file can be dynamic.

import { slackChannel } from "eve/channels/slack";

export default slackChannel();
connections/linear.tsoptional

Connections handle auth for services like Linear, GitHub, and Stripe, so the agent can file a bug for a support issue without managing tokens.

Static in this example. Any file can be dynamic.

import { defineMcpClientConnection }
  from "eve/connections";

export default defineMcpClientConnection({
  url: "https://mcp.linear.app/mcp",
});
subagents/billing/agent.tsoptional

Add subagents for specialized work. The support agent hands billing questions to a billing specialist and uses its answer.

Static in this example. Any file can be dynamic.

import { defineAgent } from "eve";

export default defineAgent({
  description: "Answer billing questions",
  model: "openai/gpt-6-luna-fast",
  reasoning: "high",
});
subagents/escalation/agent.tsdynamic

Give enterprise customers second-level support: a specialist the agent hands hard cases to.

Acme Org
Enterprise
Second-level support engineer
import { defineAgent, defineDynamic } from "eve";

export default defineDynamic((ctx) =>
  ctx.session.auth.current?.attributes
    .plan === "enterprise"
    ? defineAgent({
        description: "Second-level support engineer.",
        model: ctx.model.id,
      })
    : null,
);
schedules/daily-digest.mdoptional

Schedules run agents automatically for jobs like daily digests, continuing durably without an active session.

Static in this example. Any file can be dynamic.

---
cron: "0 8 * * *"
---

Post a summary of yesterday's open
tickets to the support channel.
agent/example
instructions/sla.ts

Add instructions that depend on the customer. Enterprise customers get a one-hour SLA, and Pro customers get a reply within a business day.

Acme Org
Enterprise
1-hour SLA, escalate when stuck
import { defineDynamic, defineInstructions }
  from "eve/instructions";

export default defineDynamic((ctx) => {
  const plan =
    ctx.session.auth.current?.attributes.plan;
  return defineInstructions({
    content: plan === "enterprise"
      ? "Reply within the 1-hour SLA. Escalate anything you can't resolve."
      : "Reply within one business day.",
  });
});
  • StaticBuild agents from files in a directory, and each file's path determines how eve loads it.
  • DynamicInstructions, skills, tools, subagents, connections, and models can all resolve per session.
  • Multi-tenantOne agent serves every customer, each with the plan, data, and access that fits them.

Own your intelligence

Customize at every layer, from the harness to the UI to every agent run.

    1. 1import { defineAgent } from "eve";
    2. 2
    3. 3export default defineAgent({
    4. 4 defaultTools: false,
    5. 5 model: "anthropic/claude-opus-5.5",
    6. 6});
    An editor showing agent/agent.ts, with defaultTools: false being added to defineAgent: the agent starts without eve's default tools.

    Own your harness

    Start with great defaults. Turn off what you don't need, extend what you do. Scale from side project to enterprise.

  • SvelteKit
    Nuxt
    Next.js
    Three agent apps in overlapping windows, built with Next.js in front, Nuxt, and SvelteKit.

    Own your agent UI

    Build rich agent UIs natively in Next.js, Nuxt, SvelteKit, and TanStack. Ship agent and app in one deploy.

  • Rounded squares represent data in your runtime, with model providers above and a hosting provider below. Choose your model routing and hosting infrastructure when self-hosting.

    Own your data

    Control where your agent runs and who can access it. Self-host with your own workflow storage, sandbox provider, and model routing.

Everything you need to ship to production

  • One agent at the center of radar rings, reached from WhatsApp, GitHub, Slack, Linear, Discord, Telegram, Google Chat, Microsoft Teams, iMessage, Web.

    Agent chat on every channel

    Multiplayer and single-player chat across Slack, Teams, iMessage, WhatsApp, and the web. Channels are a framework primitive.

  • Resolved per user
    • AliceMemoryCRM tools
    • BobMemorySchedules
    • CarolMemoryLegal skills
    One deployment resolves capabilities per person in the Acme org, each avatar badged with the Acme logo: Alice gets memory and CRM tools, Bob memory and schedules, and Carol memory and legal skills.

    Multi-tenant with dynamic capabilities

    One deployment, every customer. Skills, schedules, memory, and tools resolved per user at runtime.

  • Three runs: a fully agentic loop of model steps, a deterministic workflow of code steps, and a workflow with one agentic step among its code steps.

    Determinism where you need it

    Fully agentic loops, deterministic workflows, or both in one run. You choose per task.

  • Any model, no rewrite

    Swap models with a one-line edit. Provider fallback included. Route different models to different tasks.

  • Durable execution & scheduling

    Checkpoints every step. Survives crashes, restarts, and days-long waits. Runs on crons, too.

  • Human in the loop

    Pause for approval. Resume durably when it arrives.

  • Evals

    Test agent behavior before and after every change.

  • Connections & subagents

    Connect to services over MCP and OpenAPI, or delegate to focused subagents. Credentials stay in the runtime.

  • Agent identity & sandboxes

    Bring any OIDC provider and act as the agent or the signed-in user. Code runs in an isolated sandbox per session.

Built on open-source SDKs,
yours to self-host

Swap any backend and self-host the whole runtime with no managed infrastructure, or deploy on Vercel for fully native support.

RuntimeDurable execution, state persistence, event streaming
Durable WorkflowCheckpointed steps, park between messages, resume on delivery
Vercel Workflows
AI SDKModel calls, streaming
AI Gateway
Vercel Sandbox SDKIsolated execution
Vercel Sandbox
Vercel Connection SDKMCP/HTTP endpoints
Vercel Connect
Tools & SubagentsFunctions, child agents
ChannelWhere your agent gets surfaced
Chat SDK
SlackDiscordWeb ChatGoogle ChatMicrosoft TeamsWhatsAppAPICronTwilioLinearGitHubTelegramiMessageSMSEmailGmailInstagramMessengerXNotionGitLabWebexMattermostLINE
Toggle deployment target

Fully managed via Vercel. Sandboxes, durable workflows, model routing, and observability handled for you.

Build your first agent today

Deploy on VercelRead the self-hosting guide
You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.