Skip to main content

Overview

The port exposure capability allows your Utari workers to make custom development servers and applications accessible by exposing specific ports. While port 8080 is automatically exposed, you can expose additional ports for applications running on different ports, enabling you to test multiple services simultaneously or work with applications that require specific port configurations.
Port 8080 Note: Port 8080 is automatically exposed and does NOT require manual exposure. Use this tool for all other ports.

Understanding Port Exposure

What is Port Exposure?

Port exposure creates a tunnel that makes locally running applications accessible:

Local Development

Applications running in your Utari workspace on specific ports

External Access

Makes these applications accessible via public URLs

Multiple Services

Run and access multiple servers simultaneously on different ports

Testing & Debugging

Test applications in development before deployment

Default vs. Custom Ports

Automatically Available
  • No configuration needed
  • Immediately accessible
  • Default for most development servers
Common Uses:
  • Python HTTP server: python -m http.server 8080
  • Node.js apps configured for 8080
  • Default development server port
Already works - no exposure tool needed

When to Expose Ports

Use Cases for Port Exposure

Many frameworks use specific default ports:
  • React/Create React App: Port 3000
  • Next.js: Port 3000
  • Angular: Port 4200
  • Vue.js: Port 8080 (auto-exposed) or 5173 (Vite)
  • Flask: Port 5000
  • Django: Port 8000
  • Express.js: Configurable, often 3000
  • Svelte: Port 5000 or 8080
When you need multiple servers running at once:
Some applications require specific ports:
  • Database interfaces and admin tools
  • Monitoring dashboards
  • Development tools (Webpack dev server, etc.)
  • API documentation servers
  • Testing frameworks
When you’ve configured your application for a specific port:

Exposing Ports

Basic Port Exposure

1

Start Your Application

Launch your development server on the desired port:
2

Request Port Exposure

Ask your worker to expose the port:
3

Receive Access URL

Your worker provides a public URL:
4

Access Your Application

Click the provided URL to access your running application.

Multiple Port Exposure

You can expose multiple ports simultaneously:
1

Start Multiple Services

2

Expose All Ports

3

Get All URLs

Common Development Server Configurations

React Applications

Node.js/Express Applications

Python Applications

Angular Applications

Vue.js Applications

Complete Development Workflow

Full-Stack Application Setup

1

Install Dependencies

2

Start Backend (Non-Blocking)

3

Start Frontend (Non-Blocking)

4

Expose Ports

5

Access Applications

6

Test Integration

  • Visit frontend URL
  • Verify API calls to backend URL work
  • Test application functionality

Microservices Architecture

1

Start All Services

2

Expose All Service Ports

3

Map Services

Port Exposure Best Practices

Use Standard Ports

Stick with framework defaults when possible for easier collaboration and documentation

Document Port Usage

Keep a list of which services run on which ports for easy reference

Avoid Conflicts

Ensure no two services try to use the same port simultaneously

Remember 8080

Use port 8080 when possible since it’s auto-exposed (one less step)

Non-Blocking Execution

Always run servers in non-blocking mode so they continue running in the background

Test After Exposure

Always verify the exposed URL works after requesting port exposure

Clean Up

Stop unused servers and unexpose ports when done to free resources

Use Environment Variables

Configure ports via environment variables for flexibility

Common Port Reference

Troubleshooting

Verify:
  • Server is actually running on that port
  • Check server logs for startup errors
  • Use netstat -tuln | grep [PORT] to confirm port is listening
  • Ensure no firewall blocking
  • Try restarting the server
  • Re-request port exposure
Solutions:
  • Check what’s using the port: lsof -i :[PORT]
  • Stop the existing process
  • Or use a different port
  • Kill stuck processes: kill -9 [PID]
  • Restart with new port number
Check:
  • URL copied correctly (no typos)
  • Server started successfully
  • No CORS issues (check browser console)
  • Server bound to 0.0.0.0 not localhost
  • Try accessing from incognito/private window
Ensure:
  • All servers started successfully
  • All ports explicitly exposed
  • No port conflicts
  • Check each service individually
  • Verify each exposed URL
Check that server is bound to all interfaces:Wrong (localhost only):
Correct (all interfaces):
Verify:
  • Server is running (check with list_commands)
  • Correct route/path being accessed
  • Server has proper route handlers
  • No typos in URL path
  • Check server logs for requests

Environment-Specific Configuration

Using Environment Variables

Package.json Scripts

Advanced Usage

Proxy Configuration

When frontend needs to communicate with backend on different port:

Docker Compose with Port Mapping

Summary

You’ve successfully learned:
How port exposure works in Utari
When to use port exposure (all ports except 8080)
How to expose single and multiple ports
Common framework default ports and configurations
Best practices for development server management
Troubleshooting port exposure issues
Advanced configurations for multi-service applications
Port exposure enables your development workflow in Utari, allowing you to run and access multiple development servers, test full-stack applications, and work with framework-specific tooling—all through simple conversational requests.

Next Steps

Terminal Commands

Learn to start and manage development servers

Files and Folder

Organize your application code and assets

Web Browser

Test your exposed applications visually

Triggers

Automate server startup and port exposure