Drexii is an AI agent platform that connects your entire workspace — Gmail, Slack, Notion, Jira, Google Calendar and 6 more — into a single chat interface that doesn't just answer questions, it takes real action.
See Drexii search Gmail, create a Notion page, and post a Slack message — all from one chat message, live.
Drexii is a multi-model AI agent that reads and writes to your real accounts in real time. Instead of switching between 10 apps, you describe what you need in plain English — and Drexii executes it across all of them.
"Find our top open Zendesk ticket, check if there's a related Notion doc, and post a summary to #support on Slack."
Drexii handles each step in sequence — no tab-switching, no copy-pasting, no manual hand-off.
"List my unread emails and draft a reply to the one from Sarah."
It reads your Gmail, understands the context, and writes the draft — all from one message.
Drexii automatically selects the best AI model for every task — no manual switching ever.
| Complexity | Model | When Used |
|---|---|---|
| Heavy / Analysis | Claude Opus 4 | Deep research, complex reasoning |
| Standard / Writing | Claude Sonnet 4.5 | Drafting, summarizing, planning |
| Simple / Quick | Claude Haiku 4.5 | Short lookups, fast responses |
| Alternative | DeepSeek, Gemini | Fallback & cost optimization |
| Integration | What Drexii Can Do |
|---|---|
| 📧 Gmail | Search, read, send, draft, list inbox |
| 💬 Slack | Send messages, search conversations, list channels |
| 📝 Notion | Search pages, read content, create pages |
| 🎫 Jira | Query and create issues |
| 📐 Linear | Query and create issues |
| ✅ Asana | List and create tasks |
| 📅 Google Calendar | Read and create events |
| 📁 Google Drive | Search and read files |
| 🎮 Discord | Send messages, fetch channels |
| 🎧 Zendesk | Search tickets, create tickets, add comments |
| ☁️ Salesforce | Search, create, and update records |
Write operations (send email, create ticket, post to Slack) are always held for user approval before executing. Read operations run instantly. You stay in control.
Build automation sequences that trigger across multiple tools automatically — even while you're offline. Set them up in plain English:
"When I receive an email from a client, summarize it, create a Notion page, and notify #sales on Slack."
Supports: email triggers, scheduled runs, webhooks, and chain-on-success/failure logic.
Save common multi-step prompts as one-click Workflows. Reuse complex agent instructions without retyping them.
Drexii remembers your preferences, team context, and past interactions across sessions.
Speak your questions, hear the responses. Full voice input and output support built in.
All tool outputs are sandboxed. External content retrieved from integrations cannot hijack or redirect the AI.
This project was tested end-to-end using TestSprite MCP as part of the TestSprite Season 2 Hackathon.
Round 1 ──────────────────────────────────────────── Final
1/10 → 3/10 → 5/10 → 8/10 → 10/10
10% 30% 50% 80% 100% ✅
| Round | Score | Key Changes |
|---|---|---|
| Round 1 | 1/10 | Baseline — TestSprite exposed real bugs |
| Round 2 | 3/10 | Login auth fixed, DB wired up |
| Round 3 | 5/10 | Thread/message endpoints corrected |
| Round 4 | 8/10 | Logout format, model status, automations |
| Round 5 | 10/10 ✅ | Rate limiting, UUID validation, all contracts aligned |
| Test Case | Status |
|---|---|
| TC001 — POST /api/auth/login (valid credentials) | ✅ Passed |
| TC002 — POST /api/auth/logout | ✅ Passed |
| TC003 — GET /api/auth/check | ✅ Passed |
| TC004 — POST /api/auth/delete-account | ✅ Passed |
| TC005 — POST /api/threads (create thread) | ✅ Passed |
| TC006 — GET /api/threads (list threads) | ✅ Passed |
| TC007 — GET /api/threads/:id | ✅ Passed |
| TC008 — POST /api/threads/:id/messages | ✅ Passed |
| TC009 — POST /api/automations/process | ✅ Passed |
| TC010 — GET /api/model/status | ✅ Passed |
| Total | 10/10 (100%) |
-
Login was a no-op stub — returned 200 for any input regardless of credentials. Fixed: real InsForge auth with 401 on failure and session cookie on success.
-
Delete-account 500 on non-UUID IDs — server re-threw InsForge 400s as 500. Fixed: 4xx from InsForge treated as "already deleted" → returns
{ ok: true }. -
Messages endpoint SSE-only — always returned
text/event-stream, breaking API clients. Fixed: dual-mode —?stream=truefor frontend SSE, buffered JSON by default. -
Auth check missing user field —
/api/auth/checkreturned no user data. Fixed: now returns{ authenticated, provider, user }. -
InsForge AI singleton auth loss — server restarts caused all AI calls to fail silently. Fixed: automatic fallback to direct Anthropic API (
ANTHROPIC_API_KEY). -
Logout response format mismatch — returned
{ success: true }instead of{ ok: true }. Fixed. -
Model status wrong shape —
modelswas an array. Fixed: now{ models: { [provider]: {...} }, active: string }. -
Non-UUID thread IDs caused 500 — PostgreSQL rejected invalid UUID strings with a DB error. Fixed: UUID regex validation before DB query → clean 404.
-
Rate limiting not enforced — messages endpoint had no rate limit; automation process only rate-limited manual triggers. Fixed: both endpoints now enforce per-IP windowed rate limits with proper 429 responses.
-
Unauthenticated delete-account returned 200 — endpoint accepted requests with no session cookie. Fixed: requires
drexii_sessioncookie → 401 if missing.
# Install TestSprite MCP
npx @testsprite/testsprite-mcp
# Run full test suite against local server
node testsprite-mcp generateCodeAndExecuteTestSprite auto-generated all 10 test cases from the PRD, ran them against the live local server via tunnel, and produced a detailed failure report. Each round of fixes was driven directly by TestSprite's findings — no guessing, no manual test writing.
📄 Full test report: testsprite_tests/testsprite-mcp-test-report.md
┌─────────────────────────────────────────────────────────┐
│ Drexii Frontend │
│ Nuxt.js + Vue 3 + Tailwind CSS v4 │
│ Chat · Automations · Workflows · Integrations · Voice │
└──────────────────────┬──────────────────────────────────┘
│ SSE Streaming / JSON API
┌──────────────────────▼──────────────────────────────────┐
│ Nitro Server (Nuxt) │
│ │
│ ┌─────────────┐ ┌──────────────┐ ┌────────────────┐ │
│ │ Model Router│ │ Agent Runner │ │ Rate Limiter │ │
│ │ Opus/Sonnet │ │ Tool Loop │ │ Per-user/IP │ │
│ │ /Haiku/DS/G │ │ up to 5 iter │ │ 11 msg/10 min │ │
│ └──────┬──────┘ └──────┬───────┘ └────────────────┘ │
│ │ │ │
│ ┌──────▼────────────────▼──────────────────────────┐ │
│ │ Integration Adapters │ │
│ │ Gmail · Slack · Notion · Jira · Linear · Asana │ │
│ │ Google Calendar · Drive · Discord · Zendesk · SF │ │
│ └───────────────────────────────────────────────────┘ │
└──────────────────────┬──────────────────────────────────┘
│
┌──────────────────────▼──────────────────────────────────┐
│ InsForge (YC P26) │
│ Auth · PostgreSQL · AI Gateway · Storage │
└─────────────────────────────────────────────────────────┘
- User sends a message — full thread history is passed to the AI
- Model router selects the best model (lite / standard / heavy / code)
- AI emits
[TOOL_CALL: tool_name({...})]if action is needed - Write tools are held for user confirmation; read tools execute immediately
- Tool results are fed back to the model, which decides next steps
- Loop repeats up to 5 iterations; final summary uses a lite model to save tokens
- Complete response — including all tool results — is saved to the thread
| Layer | Technology |
|---|---|
| Framework | Nuxt 4 (Vue 3, Nitro server) |
| Language | TypeScript |
| Database | PostgreSQL via InsForge + Drizzle ORM |
| Auth | InsForge Auth |
| AI Models | InsForge AI Gateway (Claude Opus/Sonnet/Haiku, DeepSeek, Gemini) + Anthropic API fallback |
| UI | Nuxt UI + Tailwind CSS v4 |
| Deployment | Vercel |
| Testing | TestSprite MCP |
- Node.js 22+
- pnpm
- InsForge account (auth + database + AI)
# Clone and install
git clone https://github.com/davidson3556/drexii
cd drexii
pnpm install
# Configure environment
cp .env.example .env
# Fill in your InsForge credentials (see below)
# Push database schema
pnpm db:push
# Start dev server
pnpm dev# InsForge — required (from your InsForge project dashboard)
NUXT_PUBLIC_INSFORGE_URL=https://your-project.insforge.app
NUXT_PUBLIC_INSFORGE_ANON_KEY=your-anon-key
INSFORGE_API_KEY=your-api-key
DATABASE_URL=postgresql://user:password@host:5432/dbname
# Anthropic — used as AI fallback when InsForge AI is unavailable
ANTHROPIC_API_KEY=sk-ant-...
# Integrations — optional, users can also connect their own from the UI
NOTION_API_KEY=
SLACK_BOT_TOKEN=
DISCORD_BOT_TOKEN=
ZENDESK_SUBDOMAIN=
ZENDESK_EMAIL=
ZENDESK_API_TOKEN=
SALESFORCE_LOGIN_URL=
SALESFORCE_CLIENT_ID=
SALESFORCE_CLIENT_SECRET=All keys are server-side only — never exposed to the browser.
pnpm dev # Start dev server with hot reload
pnpm build # Production build
pnpm preview # Preview production build locally
pnpm lint # ESLint
pnpm typecheck # Type checking
pnpm db:push # Push schema changes (dev)
pnpm db:migrate # Run migrations (production)
pnpm db:studio # Open Drizzle Studio GUIapp/
pages/ # Chat, Integrations, Automations, Workflows, Login
composables/ # useThread, useAuth, useModelStatus
components/ # AppNav, LoadingScreen
server/
api/
auth/ # Login, logout, check, delete-account
threads/ # Thread CRUD + message streaming (SSE + JSON)
automations/ # Automation CRUD + background processing
workflows/ # Workflow CRUD + one-click execution
model/ # AI provider health & status
webhooks/ # Gmail push notification handler
lib/
integrations/ # 11 adapter modules (Gmail, Slack, Notion, …)
models/ # Multi-model router + circuit breaker + health checks
agent-runner.ts # Autonomous background agent execution
rate-limiter.ts # In-memory sliding-window rate limiter
sanitize.ts # Prompt injection protection
actions.ts # Write-operation confirmation lifecycle
memory.ts # Cross-session agent memory
testsprite_tests/ # AI-generated test suite — all 10 tests, 10/10 score
This submission demonstrates:
- ✅ Real production-quality AI agent — not a demo, actually deployed and usable at drexii.vercel.app
- ✅ Dramatic test improvement — 1/10 → 10/10 across 5 rounds of TestSprite-driven fixes
- ✅ Every bug found by TestSprite was fixed — 10 distinct API contract issues resolved
- ✅ Innovative agent architecture — multi-model routing, agentic loops, confirm-before-act safety, chained automations
- ✅ Full test suite committed — all generated test files and reports in
testsprite_tests/
MIT — built by Davidson for the TestSprite Season 2 Hackathon.