You built a Python app — Flask, FastAPI, a Streamlit dashboard, or a plain script. You want to share it with your team without making it public and without spending a week setting up auth.
This is especially common for data science and ML teams who build internal tools in Python: report generators, data validators, model UIs, automation scripts.
The fastest path: Workshop
npm install -g @getworkshop/cli
workshop login
cd your-python-project
workshop init
workshop deploy
During workshop init, Workshop detects Python and asks for your entry command:
Flask
gunicorn app:app --bind 0.0.0.0:$PORT
FastAPI
uvicorn main:app --host 0.0.0.0 --port $PORT
Plain Python script (one-time run)
python main.py
Choose Company domain access mode. Workshop handles authentication — your Python app just receives authenticated requests.
Dependencies
Workshop installs your requirements.txt automatically inside the container. You don't need to pre-install anything. Just make sure your requirements.txt is in the project root:
flask>=3.0
gunicorn>=23.0
pandas>=2.0
openai>=1.0
Environment variables and API keys
workshop secret set OPENAI_API_KEY=sk-...
workshop secret set SUPABASE_URL=https://...
workshop secret set SUPABASE_KEY=...
Your Python app reads them via os.environ as normal. They're encrypted at rest and injected at container startup.
Scheduled Python scripts
If your app is a scheduled task rather than a web server:
{
"name": "weekly-report",
"runtime": "python",
"entry_cmd": "python generate_report.py",
"cron": "0 8 * * 1"
}
This runs every Monday at 8am. Failure emails you. Logs are in your Workshop dashboard.
Common use cases
- Ops tools: Flask apps that query internal APIs or databases
- ML model UIs: Gradio or custom Flask interfaces for internal models
- Report generators: Scripts that pull data and email a PDF
- Data validators: FastAPI apps that check data quality and return results
- Automation scripts: Python scripts that run on a cron schedule