Create a digital AI twin of your personality. Train it on your writing, chat with it in real-time, and watch it talk exactly like you.
| Feature | Description |
|---|---|
| π― Personality Analysis | Extracts tone, slang, sentence patterns & quirks via Claude AI |
| π¬ Real-Time Chat | WhatsApp-style chat UI with typing indicators & auto-scroll |
| π Personality Modes | Switch between Chill π, Professional πΌ, and Angry π‘ |
| π€ Voice Input | Web Speech API β speak to your clone hands-free |
| π¦ Multi-Personality | Save, name, and switch between unlimited clones |
| π€ Export | Download personality profiles as JSON |
| π Streaming | SSE-based streaming responses (optional) |
Frontend: React 18 + Vite + Tailwind CSS + Framer Motion
Backend: Node.js + Express
AI: Anthropic Claude (claude-sonnet-4-20250514)
Database: MongoDB (optional) or in-memory fallback
Deploy: Vercel (frontend) + Render (backend)
cloneai/
βββ frontend/ # React + Vite app
β βββ src/
β β βββ pages/
β β β βββ LandingPage.jsx
β β β βββ DashboardPage.jsx
β β β βββ TrainPage.jsx
β β β βββ ChatPage.jsx
β β βββ components/
β β β βββ Navbar.jsx
β β βββ context/
β β β βββ PersonalityContext.jsx
β β βββ hooks/
β β β βββ useVoice.js
β β βββ utils/
β β βββ api.js
β βββ vercel.json
β βββ .env.example
β
βββ backend/ # Express API
βββ routes/
β βββ chat.js # Claude chat + streaming
β βββ analyze.js # Personality extraction
β βββ personalities.js # CRUD + MongoDB
βββ server.js
βββ render.yaml
βββ .env.example
git clone https://github.com/yourusername/cloneai.git
cd cloneai
# Install backend
cd backend && npm install
# Install frontend
cd ../frontend && npm install# Backend
cd backend
cp .env.example .env
# Edit .env β add your CLAUDE_API_KEY
# Frontend
cd ../frontend
cp .env.example .env
# VITE_API_URL=http://localhost:3001/api (default, no change needed)# Terminal 1 β Backend
cd backend && npm run dev
# Terminal 2 β Frontend
cd frontend && npm run devOpen http://localhost:5173 π
CLAUDE_API_KEY=sk-ant-xxxxxxxxxxxxxxxxxxxxxxxx # Required
MONGODB_URI= # Optional (blank = in-memory)
PORT=3001
FRONTEND_URL=http://localhost:5173VITE_API_URL=http://localhost:3001/api- Push
backend/folder to a GitHub repo - Go to render.com β New Web Service
- Connect repo, set:
- Build:
npm install - Start:
node server.js
- Build:
- Add environment variables in Render dashboard:
CLAUDE_API_KEY= your keyFRONTEND_URL= your Vercel URL (set after frontend deploy)
- Deploy β copy your Render URL (e.g.
https://cloneai-api.onrender.com)
- Push
frontend/to GitHub - Go to vercel.com β New Project β Import repo
- Add environment variable:
VITE_API_URL=https://cloneai-api.onrender.com/api
- Deploy β done!
- Open app β click "Try Demo First" to load 3 prebuilt personalities
- Have the Train page ready with sample text pre-pasted
Step 1 β Show the landing page
"This is CloneAI β it creates an AI that talks exactly like a specific person."
Step 2 β Train a personality (live)
- Go to Train tab
- Paste casual sample text (from
docs/demo-data.json) - Hit Analyze β show the extracted profile
- Save it
Step 3 β Chat demo
Ask the clone these questions in order:
- "Introduce yourself"
- "What do you think about AI?"
- "How was your day?"
Step 4 β Switch modes
- Show Chill β Professional β Angry mode switching
- Same question, wildly different responses
Step 5 β Voice input
- Click π€ mic button
- Speak a question
- Show it transcribing and sending
Step 6 β Dashboard + Export
- Show multiple personalities
- Export one as JSON
Casual Me + "How was your day?"
"bro it was kinda mid ngl lol, lowkey just vibed the whole time fr"
Work Mode + "How was your day?"
"It was quite productive, actually. Wrapped up the deliverables ahead of schedule."
Chaos Gremlin + "How was your day?"
"I am LITERALLY dead. The most unhinged sequence of events occurred today and I cannot"
{
"personality": { "name": "...", "tone": "...", "traits": [], "commonWords": [], "avgSentenceLength": "..." },
"message": "Hello!",
"mode": "chill",
"history": []
}Returns: { "reply": "...", "usage": {} }
{ "text": "your sample writing here..." }Returns: { "profile": { "tone": "...", "traits": [], "commonWords": [], ... } }
Same body as /api/chat. Returns Server-Sent Events stream.
MIT β free to use, modify, and present.
Built with β€οΈ using React, Express, and Claude AI.