A lightweight team messenger for groups of up to 30 people, with direct messages, spaces, threads and file sharing.
Try the live app — sign in with Google and start a conversation.
Tofu Chat runs on Tofu, which brings hosting, a managed database and Google sign-in together for apps built with a coding agent. Have an app ready to share? Take it online with Tofu.
Sample conversations from the local demo.
Try a message and a reaction in the landing page's interactive preview, or open the app on your phone.
These captures use synthetic local data. The interactive preview does not send messages to other accounts.
Choose New chat, add a friend's Google email, and share the conversation's invitation link. They join by signing in with that verified email. Use spaces for a team or topic, and threads to keep replies together.
You can send images, files and voice messages; edit or delete your messages; add reactions; and find conversations through search, mentions and stars. Drafts stay on your device when enabled. Files can be up to 5 MiB each, with three attachments per message; voice recordings can be up to two minutes.
On iPhone, open the app in Safari, tap Share → Add to Home Screen, and enable Open as Web App if offered. You can also use the app in an ordinary browser.
Tofu Chat is an independent messenger. Google sign-in does not connect it to Google Chat or import existing conversations. Video and voice calls, background push notifications and automatic offline sending are not included.
Fork the repository, follow Tofu's agent setup, and ask your coding agent:
Deploy this app on Tofu with a database and Google sign-in.
Tofu connects the hosting and services; your agent builds and checks the app. This is a server app with a database, so it needs Tofu's Pro hosting. See current plans before deploying.
Use Node.js 22.13 or newer:
npm ci
npm run devOpen http://localhost:3000 and choose Explore demo to try synthetic conversations without an account. The demo is enabled by default in development; its data stays in that browser. Production disables it unless explicitly enabled for testing.
A connected workspace needs PostgreSQL and Supabase identity settings. Tofu supplies these for the hosted app; .env.example lists the settings for your own deployment. Self-hosted Google sign-in also needs an authorized Tofu OAuth broker setup; environment values alone do not configure it. Keep populated environment files and credentials out of Git. See runtime and data handling for authorization, limits and retry behavior.
Built with Next.js, React and TypeScript, with PostgreSQL for conversations and Supabase for identity.
npm run format:check
npm run lint
npm run typecheck
npm run test:unit
npm run buildThe test suite includes unit tests, embedded SQL checks, native PostgreSQL and API integration, browser flows, failure injection and screenshot regressions. See the testing guide for coverage, CI, browser setup and source-bound integration checks. Screenshots detect changes in this app; they do not establish that it matches another product pixel for pixel.
- Contributing
- Database performance and benchmarks
- Feature scope and gaps
- Security and private vulnerability reports
The project is available under the MIT license. Bundled fonts, icons and emoji data retain their own licenses, listed in third-party notices.
Tofu Chat is not affiliated with or endorsed by Google. Google names and the Google sign-in mark identify their respective services; the app icon and project identity are separate.

