Get Started in 15 Minutes
Follow our step-by-step guide to deploy your own SEAJelly instance. No server required.
Preparation
First, you need a Gmail account and a browser (Chrome is recommended). Follow this tutorial while sipping your coffee — in about 15 minutes, you'll have your own Jelly baby. If you're willing to use your credit card to claim Google's $300 free credit, I guarantee you'll think Google's founders are bodhisattvas reincarnated.
Required Steps (follow this order):
- aGet compute power — you need a basic AI model to run the Agent: Go to Google AI Studio to get an API Key at aistudio.google.com (the free tier is enough to get started; binding a credit card gives you $300 in credits valid for 3 months)
- bRegister a GitHub account with your Google account at github.com (skip if you already have one)
- cRegister a Vercel account with your GitHub account at vercel.com (skip if you already have one — Vercel needs your GitHub account for auto-deployment)
- dRegister a Supabase account with your GitHub account at supabase.com (skip if you already have one)
- eKeep all these sites open and logged in — you'll need them later.
Recommended:
- Prepare a domain name — you can buy the cheapest one on Cloudflare for $1.99/year. If you don't mind, you can use the free Vercel domain instead. (Note: Vercel .app domains are inaccessible in mainland China, so Chinese users should prepare their own domain.)
- Register a Telegram account — it's the best-supported IM for SEAJelly.
- Register a Cloudflare account at cloudflare.com — we'll use its free R2 storage service (10GB free forever) for JellyBox, your personal cloud drive.
Installation
Click the Deploy button in the README.md file. If you're logged into Vercel, you'll see this page:
Then you'll see this page where you need to fill in some required environment variables:
To get these parameters, open the Supabase website (logged in) and create a new Project:
Project name can be anything. Let the system generate a random Database password. But choose your Region carefully — this determines your database server location. I recommend choosing a specific country rather than a broad region, since the speed difference between accessing Singapore vs Japan from Dubai is significant.
After creation, you'll be redirected to the Project homepage. Hover near the project name to see:
- This Project URL is your first environment variable — copy it and paste into
NEXT_PUBLIC_SUPABASE_URLon the Vercel deployment page. - On the Project homepage, click Project Settings → API Keys. Under 'Legacy anon, service_role API keys', find the anon public key — copy it to
NEXT_PUBLIC_SUPABASE_ANON_KEY; find service_role — copy it toSUPABASE_SERVICE_ROLE_KEY.
For NEXT_PUBLIC_APP_URL — if you have a custom domain, enter it. Otherwise, use Vercel's default domain (e.g., https://seajelly-ai.vercel.app). Don't worry if it's wrong — you can change it after deployment.
NEXT_PUBLIC_SUPABASE_URL, NEXT_PUBLIC_APP_URL, etc.) must include the full protocol prefix https:// — for example, https://xxx.supabase.co, not just xxx.supabase.co. Missing the prefix is the #1 cause of setup failures. Also, make sure there's no trailing slash at the end.ENCRYPTION_KEY and CRON_SECRET are security keys for your service. I've made a random generator tool for convenience. You can also set your own, but they must be 32-character random strings.
Key Generator
Click to generate a base64-encoded 32-byte random key and copy it automatically.
Alright, click the Deploy button now.
You'll need to wait about 1-2 minutes before entering the Dashboard.
Haha, Vercel recently redesigned their UI — follow my lead:
First, check Domains to see if the assigned subdomain matches your NEXT_PUBLIC_APP_URL. If it matches, great — skip the next step. If not, or if you want to bind your own domain, go to Settings → Environment Variables and update it. This step is crucial because this domain is essentially your Jelly's home address. So if possible, give it a nice domain name.
About custom domains: Go to your Project's Domains section, add a domain. For beginners, the tricky part isn't on Vercel — it's at your domain registrar. Simply put: log into your domain registrar, find DNS settings, add an A record pointing to Vercel's IP address. Pro tip: there are also many free subdomains available online. For buying domains, both Vercel and Cloudflare offer that service.
Initialization
If you completed the installation smoothly, initialization should be a breeze. You can switch the interface language in the top right corner.
First, the Supabase Access Token (PAT): Click your avatar in the top right → Account preferences → Access Tokens → Generate new token. Give it any name, and for Expires in, select Never (so it won't expire). Click Copy (you'll only see it once — you'll need to regenerate if you want to see it again). Then for Supabase Project Ref — it's the domain prefix from NEXT_PUBLIC_SUPABASE_URL, e.g., if the URL is https://gawtlfhkgvubuavravlg.supabase.co, then the Project Ref is: gawtlfhkgvubuavravlg. Now you can connect and initialize.
After the database initializes successfully, you'll enter admin account registration. DON'T register right away — even if you do, you'll fail to log in due to email verification failure.
- Authentication → Sign In / Providers → User Signups → Find 'Confirm email' and turn it off. After toggling it off, make sure to click the Save changes button at the bottom of the page! Many users toggle the switch and leave without saving — then wonder why email verification still blocks them.
- Authentication → URL Configuration → Site URL → Enter your Vercel deployment URL and save. Make sure there's no trailing slash / at the end (e.g., https://your-app.vercel.app, NOT https://your-app.vercel.app/). This matters for future multi-admin mode.
Now you can register with your own email. After successful registration, you'll be required to log in once. Then you'll see this interface:
Here you can use the Google Gemini API Key you prepared earlier, or use other model API Keys like OpenAI or Anthropic. If you have a Google API Key, the Embedding API Key below can reuse the same key — this significantly impacts the knowledge base feature.
4. Create Your First Agent
Congratulations on reaching the final step! Create your first Agent — the AI entity you'll be chatting with. Give it any name: Xiaoming, Xiaohong, Xiaohuang, or just call it Jelly.
Then configure its IM Bot — you can skip this for now and set it up later. Remember to select the model matching your API Key. Don't worry if you're unsure — we can change it later too.
5. Secure Login URL
6. First Use
Enter SEAJelly and configure your first Agent bot!
Configure Telegram Bot
Log into Telegram, search for @BotFather, click Start, then type /newbot. Follow the prompts to enter your bot's name and ID to create a bot.
Copy the bot Token, go to Agents → Agent 'Jelly' → Channels settings, paste the Token, test it, then click Set Webhook (this registers shortcut commands to the Telegram bot). Save.
Enable Cloudflare R2
Create an R2 Bucket
Log into Cloudflare Dashboard, navigate to R2 Object Storage in the left sidebar, and click Create bucket. Name it whatever you like (e.g., seajelly-storage). For the location, choose Automatic or a region close to your Supabase database.
Get API Credentials
Still on the R2 page, look for the Manage button near the bottom right of the page under Manage R2 API Tokens (it's not very obvious — look carefully). Click it, then select Create API token. Permissions: select Object Read & Write. Specify bucket: choose the bucket you just created. Click Create API Token.
You'll see three values — copy them carefully, as they're shown only once:
- aAccess Key ID → This is your
R2_ACCESS_KEY_ID - bSecret Access Key → This is your
R2_SECRET_ACCESS_KEY - cEndpoint URL (for S3 clients) → This is your
R2_ENDPOINT(it looks like https://xxxx.r2.cloudflarestorage.com)
Configure in SEAJelly
Go back to your SEAJelly Dashboard, navigate to Dev Lab in the left menu → JellyBox → click Add Storage. Fill in the parameters you just obtained in the popup dialog — the inline hints are very detailed, so follow them and you should be fine.
Verify
Once configured successfully, you'll see Storage Usage displayed on the JellyBox page, confirming that R2 is properly connected. You can test it by uploading a small file.