Vee is V1 at Michigan's internal Slack agent, built with the Eve framework and hosted on Vercel.
Vee responds to Slack mentions and direct messages, keeps durable conversation
state within Slack threads, can use Eve's built-in tools, and connects to the
V1 team's shared Notion workspace, public Slack history, Granola meeting notes,
and the Vee and website GitHub repositories through MCP. Its identity and
behavior are defined in agent/instructions.md; model selection lives in
agent/agent.ts; and the Slack channel is configured in
agent/channels/slack.ts.
Vee uses openai/gpt-5.6-luna through AI Gateway, with routing restricted to
Azure. AI Gateway automatically tries the V1 Michigan team's enabled Azure BYOK
credential first and may fall back to Vercel's Azure credentials if BYOK fails.
Vee is retrieval-first for factual answers. It must verify claims with at least one relevant source: Notion at minimum for V1 facts, Granola for meetings, Slack for team discussions and recent operational context, GitHub for repository questions, and web search for external facts. It names its sources and states when retrieval cannot verify an answer instead of guessing.
GitHub access is restricted to V1Michigan/vee (Vee's own code) and
V1Michigan/website-v2 (V1 at Michigan's website), including filing issues and
creating changes on vee/* branches for draft pull requests. Vee may suggest
filing self-feedback in V1Michigan/vee; it files website improvement issues
only when explicitly requested. Vee is instructed never to push to main,
merge its own pull requests, alter repository settings, manage secrets, run
workflows, or publish releases. GitHub branch protection is the enforcement
boundary for main.
pnpm install
pnpm devpnpm typecheck
pnpm buildDeploy with Eve after linking the project and provisioning the Slack connector:
vercel link
vercel env pull
pnpm exec eve deployThe first person to use Notion from Slack must authorize Vee with the shared V1 Notion team account. That grant is then reused by Vee across Slack users.
GitHub uses the same shared-grant model. Authorize the github/vee
connector once with access limited to the V1Michigan/vee and
V1Michigan/website-v2 repositories.
Slack search and Granola use per-user authorization. Slack search requests only
search:read.public, so Vee cannot search private channels or direct messages.
Granola follows each user's active workspace and note permissions; its MCP
server does not support a shared service account.
Vee's check_ai_gateway_usage tool uses Vercel's Custom Reporting API to show
team-wide AI Gateway activity for all time, the past 30 days, the past 7 days,
and the past 24 hours. Each period includes request volume, token usage, the
amount charged through Vercel, and market-price usage across both system and
BYOK credentials.
On Vercel, the tool uses the automatically provided VERCEL_OIDC_TOKEN. For
local development, add a team AI Gateway key:
AI_GATEWAY_API_KEY=Custom Reporting currently requires a Pro or Enterprise Vercel team. Reports
can lag by several minutes. The tool caches results for five minutes and makes
two reporting queries when the cache is cold. Set
AI_GATEWAY_USAGE_START_DATE=YYYY-MM-DD only if the default all-time starting
date of 2020-01-01 needs to be changed.