Managing Servers
Expose can start and stop development servers directly, giving you full control over your local environment.
Starting a Server
From the project detail view:
- Click Start Server in the Actions section
- Expose runs the appropriate command for your framework
- The server output appears in the log panel
Stopping a Server
- Click Stop Server in the Actions section
- Expose sends SIGINT to gracefully stop the process
- If the process doesn’t stop, SIGTERM then SIGKILL are sent
Server Commands
Expose automatically determines the correct command based on your framework:
Node.js
# Defaultnpm run dev
# With yarnyarn dev
# With pnpmpnpm devPython
# FastAPIpython -m uvicorn main:app --reload --port 8000
# Djangopython manage.py runserver
# Flaskpython -m flask run
# Streamlitstreamlit run app.pyGo
# With air (hot reload)air
# Without airgo run .Rust
cargo runRuby/Rails
bundle exec rails serverServer Output
The log panel shows real-time output from your server:
- stdout — Normal output (white text)
- stderr — Errors and warnings (red text)
Use the log panel to:
- Debug startup issues
- Monitor requests
- Check for errors
Process Management
Expose tracks the entire process tree, ensuring all child processes are stopped when you stop a server.
Graceful Shutdown
- SIGINT sent to process group
- Wait up to 5 seconds
- SIGTERM if still running
- SIGKILL as last resort
Orphan Prevention
If Expose quits unexpectedly, it attempts to stop all managed servers first using registered signal handlers.
Multiple Servers
You can run multiple servers simultaneously:
- Each project can have its own server
- Servers run on different ports
- All are managed independently
External Servers
Expose also detects servers started outside the app:
- Servers running in Terminal
- Servers started by other tools
- System services
These appear as “External” in the services list and can be exposed but not stopped through Expose.
Environment Variables
Servers inherit environment variables from:
- Your shell profile
- The project’s
.envfile (if present) - Expose doesn’t modify environment variables
Troubleshooting
Server Won’t Start
- Check the log output for errors
- Verify dependencies are installed
- Ensure the port isn’t already in use
Server Won’t Stop
- Check for zombie processes
- Try
kill -9 <pid>manually - Restart Expose
Wrong Command
Expose detects the command automatically. If it’s wrong:
- Add a
devscript to yourpackage.json - Or create a
Procfilewith the correct command