Terminals
Pseudo-terminal sessions — create, resize, remove, and the upgrade endpoint that attaches to one.
Send these requests to your own running server. Values stay in this browser.
How this works
Start a server with nikcli serve --hostname 127.0.0.1 --port 4096. Requests go
straight from this page to that address — the browser allows it because loopback counts as a
secure origin, and the server allows it because nikcli-ai.dev is in its CORS
allowlist.
To try things without touching your real sessions or config, start the server with
NIKCLI_TEST_HOME pointed at a throwaway directory — see
the guided tour.
Operations
6 endpoints, generated from the
server's own OpenAPI document. Every path also accepts the
directory and workspace query parameters that select which instance
handles the request.
| get | /pty | pty.list |
| post | /pty | pty.create |
| get | /pty/{ptyID} | pty.get |
| put | /pty/{ptyID} | pty.update |
| delete | /pty/{ptyID} | pty.remove |
| get | /pty/{ptyID}/connect | pty.connect |
pty.list | Name | In | Type | Required |
|---|---|---|---|
| directory | query | string | optional |
| workspace | query | string | optional |
Pty_1[]
Example response captured
[] SDK example
import { createNikcliClient } from "@nikcli-ai/sdk/httpapi"
const client = createNikcliClient()
await client.pty.list({
...
}) Try it
pty.create | Name | In | Type | Required |
|---|---|---|---|
| directory | query | string | optional |
| workspace | query | string | optional |
{ command?: string | null args?: string[] | null cwd?: string | null title?: string | null env?: | { [key: string]: string } | null }
{ id: string title: string command: string args: string[] cwd: string status: "running" | "exited" pid: | number | "Infinity" | "-Infinity" | "NaN" }
{ name: "PtyCreateError" data: { [key: string]: unknown } }
Example response from schema
{
"id": "",
"title": "",
"command": "",
"args": [
""
],
"cwd": "",
"status": "running",
"pid": 0
} Generated from the response schema — field values are placeholders, the shape is real.
SDK example
import { createNikcliClient } from "@nikcli-ai/sdk/httpapi"
const client = createNikcliClient()
await client.pty.create({
...
}) Try it
pty.get | Name | In | Type | Required |
|---|---|---|---|
| ptyID | path | string | required |
| directory | query | string | optional |
| workspace | query | string | optional |
{ id: string title: string command: string args: string[] cwd: string status: "running" | "exited" pid: | number | "Infinity" | "-Infinity" | "NaN" }
{ name: "NotFoundError" data: { [key: string]: unknown } }
Example response from schema
{
"id": "",
"title": "",
"command": "",
"args": [
""
],
"cwd": "",
"status": "running",
"pid": 0
} Generated from the response schema — field values are placeholders, the shape is real.
SDK example
import { createNikcliClient } from "@nikcli-ai/sdk/httpapi"
const client = createNikcliClient()
await client.pty.get({
...
}) Try it
pty.update | Name | In | Type | Required |
|---|---|---|---|
| ptyID | path | string | required |
| directory | query | string | optional |
| workspace | query | string | optional |
{ title?: string | null size?: | { rows: | number | "Infinity" | "-Infinity" | "NaN" cols: | number | "Infinity" | "-Infinity" | "NaN" } | null }
{ id: string title: string command: string args: string[] cwd: string status: "running" | "exited" pid: | number | "Infinity" | "-Infinity" | "NaN" }
{ name: "NotFoundError" data: { [key: string]: unknown } }
Example response from schema
{
"id": "",
"title": "",
"command": "",
"args": [
""
],
"cwd": "",
"status": "running",
"pid": 0
} Generated from the response schema — field values are placeholders, the shape is real.
SDK example
import { createNikcliClient } from "@nikcli-ai/sdk/httpapi"
const client = createNikcliClient()
await client.pty.update({
...
}) Try it
pty.remove | Name | In | Type | Required |
|---|---|---|---|
| ptyID | path | string | required |
| directory | query | string | optional |
| workspace | query | string | optional |
boolean Example response from schema
false
Generated from the response schema — field values are placeholders, the shape is real.
SDK example
import { createNikcliClient } from "@nikcli-ai/sdk/httpapi"
const client = createNikcliClient()
await client.pty.remove({
...
}) Try it
This changes or removes server state, against whatever base URL is set above.
pty.connect | Name | In | Type | Required |
|---|---|---|---|
| ptyID | path | string | required |
| directory | query | string | optional |
| workspace | query | string | optional |
unknown Example response from schema
null
Generated from the response schema — field values are placeholders, the shape is real.
SDK example
import { createNikcliClient } from "@nikcli-ai/sdk/httpapi"
const client = createNikcliClient()
await client.pty.connect({
...
}) Try it
Schemas
The 6 schemas reachable from these endpoints. Each is shown one level
deep; nested types link to their own entry below.
Names ending in _2, _3 and so on are the OpenAPI emitter
disambiguating same-named schemas declared by different HttpApi groups — they are distinct
shapes, not duplicates.
{ id: string title: string command: string args: string[] cwd: string status: "running" | "exited" pid: | number | "Infinity" | "-Infinity" | "NaN" }
{ name: "PtyCreateError" data: { [key: string]: unknown } }
{ command?: string | null args?: string[] | null cwd?: string | null title?: string | null env?: | { [key: string]: string } | null }
Pty_1[]
{ name: "NotFoundError" data: { [key: string]: unknown } }
{ title?: string | null size?: | { rows: | number | "Infinity" | "-Infinity" | "NaN" cols: | number | "Infinity" | "-Infinity" | "NaN" } | null }