SEAJelly
Serverless multi-channel AI agent platform with self-evolution built in.
SEAJelly stands for Self Evolution Agent Jelly.
SEAmeans Self Evolution Agent and also echoes the ocean-native, serverless philosophy of the product.Jellymatches the jellyfish mascot, the playful brand tone, and the current visual identity of the app.
Why SEAJelly
The most distinctive part of SEAJelly is self-evolution.
SEAJelly is not only a chat agent platform. It can also read its own codebase, propose edits, push reviewed changes through GitHub, and watch Vercel deployments through its self-evolution pipeline. That loop is the sharp edge of the project and the reason the SEA name matters.
SEAJelly is for teams who want an agent platform that is:
- Serverless-first: no VPS, no Docker requirement, no always-on process
- Multi-channel: IM/webhook adapters feed a shared event and agent runtime
- Admin-friendly: setup wizard plus dashboard-managed secrets, models, agents, and tools
- Extensible: skills, MCP servers, coding tools, sub-apps, and storage integrations
- Data-aware: memories, vector knowledge base, event logs, usage analytics, and subscriptions
Core Product Concepts
| Concept | Why it matters |
|---|---|
SEA self-evolution | The project can evolve its own code through a review-first GitHub/Vercel loop, guided by the self-evolution skill contract. |
| LLM load balancing | Provider keys are stored as a weighted key pool with per-key call counts and automatic cooldown when keys hit rate limits or overload. |
| Sub-Apps | Sub-Apps are agent-native GUI applications, not just links or embedded forms. They let agents create real browser experiences with bearer-link access and private server-side data boundaries. |
| Agent subscriptions | The subscription system is an early "OnlyFans for agents" prototype: creators can run paid agents with trial messages, approvals, Stripe payment links, and per-channel subscriptions. |
| Sandboxes + scheduling | SEAJelly combines secure E2B code sandboxes with scheduled agent invocations and reminders via pg_cron. |
What Exists Today
| Area | Current scope |
|---|---|
| Self-evolution | GitHub/Vercel pipeline, self-evolution skill contract, review-first code change flow |
| Agent runtime | Multi-step agent loop, slash commands, toolkits, event queue, retries, tracing |
| LLM routing | Weighted multi-key provider pool, per-key usage tracking, automatic cooldown and failover |
| Channels | Telegram, Feishu, WeCom, Slack, QQ Bot, WhatsApp |
| Knowledge | Knowledge bases, article chunking, vector search, image-media embedding search |
| Agent capabilities | Skills, MCP servers, model/provider management, scheduled tasks |
| Multimodal | TTS, live voice, ASR, image generation |
| Coding sandboxes | E2B sandbox execution, HTML preview, and agent-triggerable code workflows |
| Sub-apps | Agent-native GUI apps with bearer-link access, built-in realtime chat room |
| Monetization | Subscription plans, channel subscriptions, approval fallback, Stripe webhook scaffolding |
| Scheduling | Reminders, agent-invoke tasks, worker queue processing, cron-backed automation |
| Storage | JellyBox object storage management backed by Cloudflare R2-compatible storage |
| Operations | Dashboard analytics, events queue inspection, usage stats, and admin controls |
Architecture
Users / IM channels → Webhook & public routes → events table → worker routes → agent loop
Dashboard / setup → Next.js app + admin APIs → Supabase Auth + Postgres + RLS + pgvector
agent loop → LLM providers / MCP / E2B / JellyBox / voice / GitHub
agent loop → Platform senders / sub-app links / previews
Core execution model
- Incoming channel traffic lands on a webhook or public entry route.
- The request is normalized and queued in
events. - Worker routes claim pending events and run the agent loop.
- The loop loads session context, memories, skills, MCP tools, and enabled built-in tools.
- Replies, logs, usage data, and downstream side effects are persisted back to Supabase.
Repository Map
| Path | What it owns |
|---|---|
src/app/(dashboard) | Admin UI pages |
src/app/api/admin | Admin-only APIs |
src/app/api/webhook | Channel webhook entrypoints |
src/app/api/worker | Queue and scheduler workers |
src/app/api/app | Public bearer-link sub-app APIs |
src/app/api/voice | Voice temp-link and config routes |
src/lib/agent | Agent loop, commands, media handling, tools, toolkits |
src/lib/platform | Channel adapters, senders, approval flows |
src/lib/supabase | Auth/session middleware and admin helpers |
src/lib/security | Login gate and SSRF/security utilities |
Tech Stack
- Framework: Next.js (App Router), React
- Database & Auth: Supabase (Postgres, pgvector, RLS)
- AI Orchestration: Vercel AI SDK, Model Context Protocol (MCP)
- Execution: E2B (Security Code Interpreters)
- Styling: Tailwind CSS, Shadcn UI
- Icons: Lucide React
License
This project is licensed under the MIT License.