Open3 is a modern, full-stack AI chat application inspired by platforms like ChatGPT, Gemini, and more — created in connection to the T3 Chat Cloneathon (we do not infringe any of T3 Chat's brandings, UIs, assets or copyrights nor are we affiliated with, but not exclusive to, T3, Theo or T3 Chat). Built with Next.js, TypeScript, and Node, it supports multi-model chat, file uploads, and real-time streaming, with a clean, mostly modular architecture.
If you want or for help, join our Discord.
I added the following feature within the additional 24 hour period given to update our submissions:
- Web Search: If you want to judge without it then pull the commit
559d501instead.
I might've misunderstood that but if I did then I at least got you guys covered (I would've probably added web search either way, I loved working on this project).
I made a small follow-up contribution which is of course not allowed, but I had no choice due to me having to deploy it. However, please consider pulling commit 8fbd00f, as that one was the last commit made within the 24-hour submission window. The only commit after that period was related to the web deployment and does not impact local builds or core functionality.
- Multi-Model Chat: Seamlessly chat with multiple AI models (OpenAI, Gemini, Anthropic, and more).
- File Uploads: Attach and process files in conversations.
- Real-Time Streaming: Enjoy instant responses with Server-Sent Events (SSE).
- Syntax highlighting and Markdown
- BYOK (Bring Your Own Key): Securely use your own API keys for supported models.
- Web Search
- Robust streams: You can leave the website, come back, switch between chats or even devices and all your progress will be retained! (Title generation isn't yet robust, wait until title is done generating if you don't wanna loose it)
- Chat Management: Create, delete, search, and organize chats with titles and bulk actions.
- Tabs: Your device has "tabs" of the chats you currently want to see, you can switch bettwn them, close them, open them, etc. Helps with organizing especially across devices.
- Works well with keyboard: Shortcuts below!
- Message copying/deleting/regenerating
- Works well with touch
- Extensible: Modular(-ish?) codebase for easy addition of new models and features.
- Modern UI: Responsive, accessible, and beautiful interface.

Chat Palette
- Global
- CMD/CTRL+K (Chat Palette/Search)
- OPT/ALT+TAB (Next tab)
- OPT/ALT+SHIFT+TAB (Prev tab)
- In-chat
- OPT/ALT+W (Close tab)
- Shift+Enter (New line)
- Chat Palette
- Shift+Backspace / DELETE (Delete chat)
- Shift+Click / Touch: Press and Hold (Bulk select)
- Enter (When in delete mode: Confirm delete chat, otherwise: Open chat)
- Typing (Search)
- ESC (Close)
- Frontend: Next.js (App Router), React, TypeScript, Tailwind CSS
- Backend: Next.js API routes, SSE, Redis
- Other: Docker, ESLint, PostCSS
WARNING: THIS APP IS NOT COMPATIBLE WITH SERVERLESS ENVIRONMENTS LIKE VERCEL OR NETLIFY. THIS HANDLING IS COMING LATER.
-
Clone the repository:
git clone https://github.com/Reboxed/Open3.git cd open3 -
Configure environment variables:
- Copy
.env.exampleto.envand fill in your API keys and settings. - The AI API keys are optional if REQUIRE_BYOK is true, but Clerk and NEXT_PUBLIC_APP_URL, are 100% required.
- Copy
-
Start the project (via Docker):
docker-compose up -d
-
Open in your browser: Visit http://localhost:3000
-
Install dependencies:
bun install # or npm install -
Run the development server: (you have to modify docker-compose.yml to comment out production build to get just redis running)
bun run dev # or npm run dev
src/app/— Next.js app directory (pages, API routes, components)src/lib/— Utilities, types, and helperssrc/internal-lib/— Backend used libraries like reddis, event busses, types, and more.src/internal-lib/constants.ts— Shared constantspublic/— Static assetspublic/uploads— Uploads
/api/chat— Main chat endpoint/api/models— List available models/api/upload— File uploads/api/byok— BYOK endpoints/attachments— "Virtual attachment" endpoint
- BYOK functionality
- Extend chat logic in
src/app/api/chat/ - Customize UI in
src/app/components/andsrc/app/(page.tsx/layout.tsx)
- Fork the repo
- Create a new branch (
git checkout -b feature/your-feature) - Follow CONTRIBUTING.md
- Commit your changes
- Push to your fork and open a Pull Request
- A bit of a refactor/touch ups/speed improvements
- Implement message editing + chat branching + model switching mid-chat.
- Image generation
- Pinning favorite models
- Chat sharing and Open3 Extensions
- Migration to Reboxed infrastructure and SDKs since by then probably stable (Rebxd Auth, Rebxd Serverless, Rebxd Storage, Rebxd Realtime DB, etc. What is Rebxd? Right now not yet launched but check out our Discord and YouTube (@rebxdcloud) so yeah)
- Adding captchas
- Stripe billing integration
- Posthog for analytics
- Mobile app! (We have some really talented mobile devs on the team including me too)
- Chat sharing and "collaborative chatting" — what that is y'all will find out soon 👀
And that's as far as I want to plan, more detailed roadmap soon!
Apache 2.0
Open3 — The open, extensible AI chat platform.
