Skip to content
setu

About this project

Setu is a portfolio piece, not a startup.

It's built and dogfooded by Amar Gupta to demonstrate end-to-end ownership of a non-trivial MCP-driven system — from Postgres schema and RLS, through a custom MCP fabric, to a desktop Electron relay, to streaming UI on web and mobile. Signup stays gated so the live API tokens and inboxes don't leak.

About the builder

Amar Gupta

AI-powered full-stack engineer · 7+ years · building agent-native software

Setu is part of a five-product portfolio of dogfooded apps that share infrastructure: a custom MCP fabric, Supabase with RLS, channel-based wakes, and a desktop Electron relay. I built every layer — protocol, dashboard, database, push pipeline, and the Claude Code integration that makes the system actually do work.

Currently building

Setu (chat relay), Sandesh (publishing), Sankalp (job autopilot), Swayam (automation), Sathi (personal manager)

Open to

Senior / staff full-stack · AI eng · MCP and agent infra roles

MCP server designTypeScript / Next.js 16Electron + IPCSupabase + Postgres RLSRealtime / SSE / WebRTCLLM tool calling

What Setu demonstrates

Six skills, one running system.

01

MCP server design

Two parallel MCP servers — OAuth-protected `/api/mcp` on Vercel for external Claude Code clients, and a local `127.0.0.1:9000` server inside an Electron desktop relay. Twin handler code, one Supabase project, single source of truth.

02

Real-time + streaming

Browser, mobile, and external chat surfaces all subscribe to the same Supabase Realtime channel. Streaming UPDATE events paint partial Claude responses live with sub-second wake latency.

03

Cross-platform delivery

Same chat thread, same Claude Code session — reachable from browser, iOS/Android push (Expo + FCM dual-provider), WhatsApp, and Telegram. Provider-aware push fan-out, fire-and-forget so the chat path never blocks.

04

Desktop relay (Electron + IPC)

Sutra is an Electron 33 app that hosts the local MCP, an SSE bridge to Supabase Realtime, a chrome-bridge for Claude-in-Chrome, and the push dispatch worker. WebRTC capture host, encrypted token storage, custom deep-link scheme.

05

Postgres + RLS at the boundary

Single Supabase project with row-level security on every table. JWTs interoperate across sibling apps (Setu, Sandesh, Sankalp, Swayam) so a Setu token validates against any sibling's RLS without server-side token exchange.

06

Next.js 16 + App Router discipline

No middleware (auth gating per-layout for explicit data flow), Server Components by default, host-only auth cookies, Vercel deploys with the OAuth broker living in route handlers.

Sibling products

Setu is one of five.

Setu, Sandesh, Sankalp, Swayam, and Sathi share the same Supabase project, the same MCP fabric, and the same channel-based wake protocol. Each lives at its own subdomain and demonstrates a different end-to-end use case.

Hiring?

I'm open to senior / staff roles.

Full-stack, AI eng, MCP / agent infra. Happy to walk a hiring panel through any layer of this system live — protocol, schema, relay, push, or the Claude Code integration that makes it actually work.