Pieces · AsyncAPI Specification

Pieces Copilot (QGPT) Streaming (On-Device WebSocket)

Version 1.0.0

AsyncAPI 2.6 description of the Pieces Copilot **QGPT streaming** surface. Pieces runs **on-device**. Pieces OS is a local process that serves its API over the loopback interface at `http://localhost:1000` (alternate port `http://localhost:5323`). Unlike many AI providers, Pieces documents a real **WebSocket** endpoint for streamed Copilot answers: `GET /qgpt/stream`, published in the official OpenAPI spec with the summary "/qgpt/stream [WS]" and described as a "WebSocket connection that streams inputs to the qGPT model." This WebSocket is bound to localhost and is **not** exposed to the network - it is an on-device transport. The client opens `ws://localhost:1000/qgpt/stream`, sends QGPTStreamInput messages (a question and/or relevance payload), and receives incremental QGPTStreamOutput messages until the answer completes. The same engine supports multiple concurrent conversations. The non-streamed request/response surface (POST /qgpt/question, /qgpt/relevance, /qgpt/reprompt and the asset, model, conversation, and application resources) is modeled in the companion OpenAPI document at `openapi/pieces-openapi.yml`.

View Spec View on GitHub Artificial IntelligenceDeveloper ToolsOn-DeviceLocal APILong-Term MemoryAsyncAPIEventsWebSockets

Channels

/qgpt/stream
publish sendQGPTStreamInput
Send a question and/or relevance payload to the on-device QGPT engine.
The Pieces Copilot (QGPT) streaming channel. The client opens this on-device WebSocket and sends question and/or relevance input; the server streams incremental answer chunks back until the exchange completes.

Messages

QGPTStreamInput
QGPT Stream Input
Client-to-server message carrying a question and/or relevance payload.
QGPTStreamOutput
QGPT Stream Output
Server-to-client streamed answer chunk.

Servers

ws
pieces-os localhost:1000
The on-device Pieces OS WebSocket transport. Bound to the loopback interface only; not network-exposed. The QGPT stream is opened by issuing a WebSocket upgrade to /qgpt/stream against the local Pieces OS process.

AsyncAPI Specification

Raw ↑
asyncapi: '2.6.0'
id: 'urn:app:pieces:os:qgpt:stream'
info:
  title: Pieces Copilot (QGPT) Streaming (On-Device WebSocket)
  version: '1.0.0'
  description: |
    AsyncAPI 2.6 description of the Pieces Copilot **QGPT streaming** surface.

    Pieces runs **on-device**. Pieces OS is a local process that serves its API
    over the loopback interface at `http://localhost:1000` (alternate port
    `http://localhost:5323`). Unlike many AI providers, Pieces documents a real
    **WebSocket** endpoint for streamed Copilot answers: `GET /qgpt/stream`,
    published in the official OpenAPI spec with the summary "/qgpt/stream [WS]"
    and described as a "WebSocket connection that streams inputs to the qGPT
    model."

    This WebSocket is bound to localhost and is **not** exposed to the network -
    it is an on-device transport. The client opens `ws://localhost:1000/qgpt/stream`,
    sends QGPTStreamInput messages (a question and/or relevance payload), and
    receives incremental QGPTStreamOutput messages until the answer completes.
    The same engine supports multiple concurrent conversations.

    The non-streamed request/response surface (POST /qgpt/question, /qgpt/relevance,
    /qgpt/reprompt and the asset, model, conversation, and application resources)
    is modeled in the companion OpenAPI document at `openapi/pieces-openapi.yml`.
  contact:
    name: API Evangelist
    email: kin@apievangelist.com
    url: https://apievangelist.com
  license:
    name: API documentation - Pieces Terms of Service
    url: https://pieces.app/legal/terms
  x-transport-notes:
    transport: WebSocket
    protocol: ws
    direction: bidirectional
    onDevice: true
    baseURL: ws://localhost:1000/qgpt/stream
    triggeredBy: 'WebSocket upgrade on GET ws://localhost:1000/qgpt/stream'
    notSSE: true
    source: https://github.com/pieces-app/pieces-os-client-openapi-spec
defaultContentType: application/json
servers:
  pieces-os:
    url: localhost:1000
    protocol: ws
    description: |
      The on-device Pieces OS WebSocket transport. Bound to the loopback
      interface only; not network-exposed. The QGPT stream is opened by issuing
      a WebSocket upgrade to /qgpt/stream against the local Pieces OS process.
channels:
  /qgpt/stream:
    description: |
      The Pieces Copilot (QGPT) streaming channel. The client opens this
      on-device WebSocket and sends question and/or relevance input; the server
      streams incremental answer chunks back until the exchange completes.
    subscribe:
      operationId: receiveQGPTStreamOutput
      summary: Receive streamed Copilot answer chunks from the on-device QGPT engine.
      message:
        $ref: '#/components/messages/QGPTStreamOutput'
    publish:
      operationId: sendQGPTStreamInput
      summary: Send a question and/or relevance payload to the on-device QGPT engine.
      message:
        $ref: '#/components/messages/QGPTStreamInput'
components:
  messages:
    QGPTStreamInput:
      name: QGPTStreamInput
      title: QGPT Stream Input
      contentType: application/json
      summary: Client-to-server message carrying a question and/or relevance payload.
      payload:
        type: object
        properties:
          question:
            type: object
            description: The question query and grounding seeds.
          relevance:
            type: object
            description: Relevance computation input; may set option question:true to combine.
          conversation:
            type: string
            description: Identifier of the conversation this turn belongs to.
          model:
            type: string
            description: Identifier of the model (local or cloud) to answer with.
    QGPTStreamOutput:
      name: QGPTStreamOutput
      title: QGPT Stream Output
      contentType: application/json
      summary: Server-to-client streamed answer chunk.
      payload:
        type: object
        properties:
          question:
            type: object
            description: Incremental answer payload (answers and scores).
          status:
            type: string
            description: Stream status, e.g. IN-PROGRESS or COMPLETED.
          conversation:
            type: string
            description: Identifier of the conversation this chunk belongs to.

Work with this as data

Every AsyncAPI spec here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for asyncapi

4 MCP tools reach this
  • find_asyncapisBrowse and filter every AsyncAPI spec in the catalog.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This AsyncAPI spec
curl "https://apis.io/api/v1/asyncapis/pieces-asyncapi"
All asyncapi
curl "https://apis.io/api/v1/asyncapis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.