Local Server
A small HTTP server running on your machine.
What it is
Jetro runs a lightweight HTTP server on your machine at localhost:17700. This is the Companion Server. It does two things: serves the browser-based companion app, and exposes a REST API for your workspace data.
REST API
The server provides these endpoints:
| Endpoint | What it does |
|---|---|
/api/projects | List all projects in your workspace |
/api/canvases | List all canvases |
/api/canvas/:id | Get a specific canvas with its elements |
/api/lists | Get all lists |
/api/portfolios | Get all portfolios |
/api/query | Run a DuckDB SQL query against your local data |
/api/files/* | Read workspace files |
/api/upload | Upload files to your workspace |
You can hit these endpoints from any HTTP client. curl, Postman, a custom script. The data is yours.
WebSocket
A WebSocket connection at /ws provides live sync between your editor and the browser companion. When you add or update a canvas element in the editor, the companion sees it instantly. And vice versa.
How it runs
The server starts automatically when the Jetro extension activates. It stops when you close the editor. No separate process to manage.
The server uses Node.js native HTTP. No Express, no ws library, no third-party packages. The WebSocket implementation follows RFC 6455 directly.
Privacy
Port 17700 is fixed and listens only on localhost. Everything runs locally on your machine. No data leaves through this server. No telemetry, no phone-home, no cloud sync.
Because the API is standard HTTP, you can build your own tools on top of it. A mobile dashboard, a Slack bot that queries your data, a scheduled report script. The server is your bridge.