If your coworkers already have Replit accounts, use Replit’s own private publishing: it is a setting in the Publishing tool, on Starter and Core plans and up. If they don’t, or you want them to sign in with their work account, move the app to TeamOnly. Download it as a zip or push it to GitHub, run npx teamonly init and ask your AI tool to “Move this app to TeamOnly”. The screens stay the same; the Express server, the Replit database and Replit Auth are replaced. Python apps can’t move.
Last updated Written by TeamOnly. Replit facts link to Replit’s own docs. We moved a real Replit Agent app from GitHub to write this.
01Try this first
Can Replit make it private?
Yes. Replit’s Publishing tool has a Sharing setting with four choices. Two are private, and both need a Replit account.
Replit sharing settings and TeamOnly, checked 26 October 2026
Who can open it
Do visitors need a Replit account?
Best when
Public
Anyone on the internet with the link
No
Nothing in it is private
Password protected
Anyone with the password
No. One shared password
A quick demo. Workspace admins can turn this option off
Workspace only
Admins, members and viewers in your Replit workspace
Yes
Your coworkers are already in your Replit workspace
Invite only
You, workspace admins, and the people or groups you invite
Yes
A handful of people who use Replit
TeamOnly
Everyone at your company, or a named list
No. Work Google, Microsoft or an emailed code
Coworkers who don’t have Replit accounts
Replit says private publishing is on Starter and Core plans and up since May 2026; before that it needed Pro or Enterprise. Core is $20 a month, or $18 billed yearly. Pro is $100 a month and lets you invite up to 50 viewers; more than 50 needs Enterprise, which is also where SSO and audit logs are.
Your coworkers don’t have Replit accounts. Asking finance or the warehouse to make one to use a single tool is where most of these apps stall.
You want company login, not a list. Anyone at your company signs in with the work account they already have, and people who leave lose access when IT turns off their account.
More than a few people need it. On TeamOnly, people who only use apps are free, however many there are.
You want admin rights set by someone, not by who signs in. Roles such as editor or approver are given out in TeamOnly and checked on the server.
Your company email isn’t on Google or Microsoft. Emailed codes work for any company domain.
If none of that applies, stay on Replit. Moving is real work, and Replit’s own sharing is a setting.
03Will my app move?
Will my app move?
Moves cleanly
Replit Agent web apps: an Express server with a React + Vite front end
PostgreSQL tables used through Drizzle
Replit Auth, which is removed: company login takes its place
shadcn/ui, Tailwind, wouter, react-query and other front-end libraries
Moves with more work
Big apps with thousands of lines of server code
Postgres-only queries (arrays, jsonb), rewritten for SQLite
Live updates over WebSockets, which become a Refresh button
Public pages and forms meant for outsiders, which become coworker-only
Doesn’t move
Python apps: Flask, Streamlit, FastAPI, Django
Your existing data, automatically (export it as CSV)
Postgres extensions such as pgvector
Mobile apps, and apps that must be public
04How
How do I move it?
You need the project’s code on your computer, Node.js, and Claude Code or Cursor.
Get the code
In Replit, open the menu at the top of the file tree and choose Download as zip. Or connect GitHub in the Git tool, push the project and clone it.
Add TeamOnly
In the project folder, run:
npx teamonly init
npm install
This adds the files TeamOnly apps need and instructions your AI tool reads. It never overwrites your files.
Ask your AI tool to move it
Move this app to TeamOnly
It follows the TeamOnly instructions: keeps every screen, turns the Express routes into TeamOnly server routes, rebuilds the Drizzle tables in the app’s own database, removes Replit Auth, and tells you what it changed and what it couldn’t move.
Check it on your computer
It runs the app locally. Click through the main screens before you go further.
Put it online
npx teamonly login
npx teamonly deploy
You get a link like blog.acme.teamonly.app. Coworkers open it and sign in with their work account.
05What changes
What happens to the Replit parts?
What each part of a Replit app becomes on TeamOnly
In your Replit app
On TeamOnly
Replit Auth: the sign-in button, /api/login, the sessions and users tables
Removed. TeamOnly signs people in before the app loads; the app reads who they are.
The Express server (server/routes.ts)
Routes in the app’s server code, at the same /api paths
PostgreSQL tables through Drizzle
The app’s own database, created on first deploy (SQLite, on Cloudflare D1)
“Signed in” as the only check
Roles such as editor or approver, given out on the app’s page in the dashboard or with npx teamonly roles
Replit Secrets
Secrets, set with npx teamonly secrets set, never sent to the browser
Live updates over WebSockets
A Refresh button
.replit and the Replit Vite plugins
Removed
06Your data
How do I get my data out of Replit?
The moved app starts with an empty database. Your rows stay in Replit until you copy them.
In Replit, open the Database tool, choose the production database and copy the connection string from its Settings tab. Replit only lets outside tools reach the production database, not the development one.
Export each table as a CSV file with any PostgreSQL tool, such as psql (example below). Keep a full backup too: Replit’s own docs use pg_dump for that.
In the moved app, use its import screen to load the CSV files. If it has none, ask your AI tool to add one before you put the app online.
One table to CSV with psql:
psql "PRODUCTION_CONNECTION_STRING" \
-c "\copy your_table TO 'your_table.csv' CSV HEADER"
We have not moved a live Replit database ourselves. Check the row counts after you import.
07Python apps
What about Python apps?
Python apps can’t move to TeamOnly. It runs one kind of app, a React front end with a TypeScript server on Cloudflare, and there is no way to run Flask, Streamlit, FastAPI or Django on it.
If your Replit app is in Python, use Replit’s own private publishing above. Asking an AI tool to rebuild it in React and TypeScript is a rewrite, not a move, and we haven’t tested it.
08What we found
What did moving a real Replit app teach us?
We took a public Replit Agent app from GitHub, a blog with an editor dashboard built on Express, React, PostgreSQL with Drizzle and Replit Auth, and moved it.
Every screen came over. 74 front-end files, and only 9 needed edits: 8 about login, 1 for a style rule the newer build tools reject.
All 18 Express routes became TeamOnly routes at the same paths, and the 3 data tables moved to the app’s own database.
Replit Auth and its sessions and users tables were removed.
Type checks and the build passed, and the main flows worked on a laptop: write, publish, edit and delete a post, send a message to the author.
The original had a gap that comes from how Replit Auth works: anyone with a Replit account can sign in, and the app treated every signed-in person as its admin. So anyone could edit or delete posts and read every message. After the move, editing needs the owner or the editor role, checked on the server.
In the Publishing tool, under Sharing, choose Workspace only or Invite only. Visitors then sign in with a Replit account. There is also Password protected, which needs no account but is one shared password. Replit says private publishing is on Starter and Core plans and up since May 2026.
Do people need a Replit account to open a private Replit app?
For Workspace only and Invite only, yes: visitors are asked to sign in through Replit. People you add to your Replit team as viewers get an email to create an account if they don’t have one. Only the Password protected setting works without an account.
Can I export my app from Replit?
Yes. In the project, open the menu at the top of the file tree and choose Download as zip, or connect GitHub in the Git tool and push the code there. Your database is separate: see the next question.
Does my Replit database come over?
Not automatically. The app moves with an empty database. Export your tables from the production database (its connection string is in the Database tool, Settings tab) as CSV files, then load them through an import screen in the moved app. If the app has none, ask your AI tool to add one.
What happens to Replit Auth?
It is removed. Replit Auth signs people in with Replit accounts. On TeamOnly people sign in with their work Google or Microsoft account, or a 6-digit code sent to their work email, before the app loads, and the app is told who they are.
Can I move a Python app from Replit?
No. TeamOnly runs one kind of app: a React front end with a TypeScript server. Flask, Streamlit, FastAPI and Django apps can’t run on it. For those, use Replit’s own private publishing.
Do my coworkers need a TeamOnly account?
No. They open the link and sign in with the work account they already have. People who only use apps are free.
How long does the move take?
For a typical Replit Agent app, 15 to 60 minutes of your AI tool working in your project, plus you checking the screens. Apps with thousands of lines of server code take longer. The one-minute part comes after: from deploy to a coworker using it.
TeamOnly is in early access, and every plan is open now. Try it free for 14 days with no card, or subscribe. Either way, your company is ready right away, and three commands put your first app online.