# Transport and deployment

> Default listen addresses, transport, streaming format and URL layout of an LMSP service, and how it runs as an operating-system service separate from the model processes.

Source: https://madeforagent.com/lmsp/1.0/transport/
Language: en
Specification: LMSP 1.0 (draft)
Updated: 2026-11-08

## 2.1 Default deployment {#deployment}

A service **MUST** listen on the loopback addresses `127.0.0.1` and `::1` by default. The conventional port is `17832`, which makes the default base address `http://127.0.0.1:17832`.

| Item | Value |
| --- | --- |
| Listen addresses | `127.0.0.1` and `::1` |
| Transport | HTTP/1.1 or HTTP/2 carrying JSON |
| Streaming | Server-sent events, `Content-Type: text/event-stream` |
| Core interface prefix | `/lmsp/v1` |
| OpenAI-compatible prefix | `/v1` |
| Service description | `GET /.well-known/lmsp.json` |
| Machine-readable contract | `GET /lmsp/v1/openapi.json` |
| Optional local channel | Unix domain socket or Windows named pipe |

Requests and responses use JSON in UTF-8 (`Content-Type: application/json`), except streams (`text/event-stream`) and errors (`application/problem+json`). Timestamps are integers: seconds since the Unix epoch. Identifiers are opaque strings; a type prefix such as `resp_` or `task_` is **RECOMMENDED**.

The interface contract is an OpenAPI 3.2 document. OpenAPI 3.2 can describe server-sent events, JSON Lines and JSON Sequences, so the streaming endpoints are specified in the same document as the rest. The contract for this version is published at [`/lmsp/1.0/openapi.json`](https://madeforagent.com/lmsp/1.0/openapi.json).

A service **MAY** also accept connections on a Unix domain socket or a Windows named pipe with the same HTTP semantics. In 1.0, how such endpoints are advertised is left to extensions.

## 2.2 Always-on operation {#operation}

A service **SHOULD** be hosted by the operating system: launchd on macOS, systemd on Linux and the Windows Service manager on Windows.

The service process and the model processes **SHOULD** be separate. A model crash **SHOULD** affect only the tasks that use that model. It **SHOULD NOT** make service discovery, the model catalog or queries about earlier tasks unavailable.
