Skip to content

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:

  1. Click Start Server in the Actions section
  2. Expose runs the appropriate command for your framework
  3. The server output appears in the log panel

Stopping a Server

  1. Click Stop Server in the Actions section
  2. Expose sends SIGINT to gracefully stop the process
  3. 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

Terminal window
# Default
npm run dev
# With yarn
yarn dev
# With pnpm
pnpm dev

Python

Terminal window
# FastAPI
python -m uvicorn main:app --reload --port 8000
# Django
python manage.py runserver
# Flask
python -m flask run
# Streamlit
streamlit run app.py

Go

Terminal window
# With air (hot reload)
air
# Without air
go run .

Rust

Terminal window
cargo run

Ruby/Rails

Terminal window
bundle exec rails server

Server 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

  1. SIGINT sent to process group
  2. Wait up to 5 seconds
  3. SIGTERM if still running
  4. 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:

  1. Each project can have its own server
  2. Servers run on different ports
  3. 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:

  1. Your shell profile
  2. The project’s .env file (if present)
  3. 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:

  1. Add a dev script to your package.json
  2. Or create a Procfile with the correct command