Mobile · Host & Bootstrap
The mobile host surface: pairing tokens, the bootstrap payload the app opens with, projects and commands, memory, worktrees, and the host capability probes behind browser, computer, island, devtools and LAN.
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
33 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 | /mobile/auth/token | mobile.auth.token.list |
| post | /mobile/auth/token | mobile.auth.token.create |
| delete | /mobile/auth/token/{id} | mobile.auth.token.revoke |
| get | /mobile/bootstrap | mobile.bootstrap |
| get | /mobile/command | mobile.command.list |
| get | /mobile/project | mobile.project.list |
| get | /mobile/memory/history | mobile.memory.history |
| get | /mobile/memory/search | mobile.memory.search |
| get | /mobile/memory/stash | mobile.memory.stash.list |
| post | /mobile/memory/stash | mobile.memory.stash.create |
| delete | /mobile/memory/stash/{id} | mobile.memory.stash.delete |
| post | /mobile/worktree | mobile.worktree.create |
| delete | /mobile/worktree | mobile.worktree.remove |
| post | /mobile/worktree/reset | mobile.worktree.reset |
| get | /mobile/events | mobile.events |
| get | /mobile/brain | mobile.brain.get |
| post | /mobile/brain | mobile.brain.trigger |
| get | /mobile/chatbot/bots | mobile.chatbot.list |
| post | /mobile/chatbot/bots/{name}/start | mobile.chatbot.start |
| post | /mobile/chatbot/bots/{name}/stop | mobile.chatbot.stop |
| get | /mobile/observability | mobile.observability.get |
| post | /mobile/observability | mobile.observability.set |
| get | /mobile/lsp | mobile.lsp.status |
| get | /mobile/fusion | mobile.fusion.list |
| post | /mobile/fusion | mobile.fusion.set |
| get | /mobile/host/browser | mobile.host.browser |
| get | /mobile/host/computer | mobile.host.computer |
| get | /mobile/host/herdr | mobile.host.herdr.get |
| post | /mobile/host/herdr | mobile.host.herdr.set |
| get | /mobile/host/island | mobile.host.island |
| get | /mobile/host/devtools | mobile.host.devtools |
| get | /mobile/host/lan | mobile.host.lan.get |
| post | /mobile/host/lan | mobile.host.lan.start |
Auth
mobile.auth.token.list | Name | In | Type | Required |
|---|---|---|---|
| directory | query | string | optional |
| workspace | query | string | optional |
({ id: string name: string createdAt: | number | "Infinity" | "-Infinity" | "NaN" lastUsedAt?: | | number | "Infinity" | "-Infinity" | "NaN" | null expiresAt?: | | number | "Infinity" | "-Infinity" | "NaN" | null scope?: string | null })[]
Example response from schema
[
{
"id": "",
"name": "",
"createdAt": 0,
"lastUsedAt": 0,
"expiresAt": 0,
"scope": ""
}
] 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.mobile.auth.token.list({
...
}) Try it
mobile.auth.token.create | Name | In | Type | Required |
|---|---|---|---|
| directory | query | string | optional |
| workspace | query | string | optional |
{ name?: string expiresInDays?: | number | "Infinity" | "-Infinity" | "NaN" }
{ token: string info: { id: string name: string createdAt: | number | "Infinity" | "-Infinity" | "NaN" lastUsedAt?: | | number | "Infinity" | "-Infinity" | "NaN" | null expiresAt?: | | number | "Infinity" | "-Infinity" | "NaN" | null scope?: string | null } }
Example response from schema
{
"token": "",
"info": {
"id": "",
"name": "",
"createdAt": 0,
"lastUsedAt": 0,
"expiresAt": 0,
"scope": ""
}
} 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.mobile.auth.token.create({
...
}) Try it
mobile.auth.token.revoke | Name | In | Type | Required |
|---|---|---|---|
| id | path | string | required |
| directory | query | string | optional |
| workspace | query | string | optional |
{ revoked: boolean }
Example response from schema
{
"revoked": 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.mobile.auth.token.revoke({
...
}) Try it
This changes or removes server state, against whatever base URL is set above.
Bootstrap
mobile.bootstrap | Name | In | Type | Required |
|---|---|---|---|
| directory | query | string | optional |
| workspace | query | string | optional |
{ version: string auth: { bearerEnabled: boolean currentToken?: MobileAuthTokenPublic | null } currentProject: MobileProject projects: MobileProject[] execution: { container: { available: boolean runtime?: "docker" | "podman" | null image: string } } github: { connected: boolean tokenAvailable?: boolean | null reconnectRequired?: boolean | null oauthDeviceEnabled: boolean oauthDeviceConfigured?: boolean | null oauthClientSource?: "flag" | "config" | "env" | null user?: | { login: string name?: string | null | null avatar_url?: string | null } | null } expo: { available: boolean easAvailable: boolean details: string[] } mobileProject?: | { detected: boolean platforms?: string[] | null primaryPlatform?: string | null method?: string | null root?: string | null } | null }
Example response from schema
{
"version": "",
"auth": {
"bearerEnabled": false,
"currentToken": {
"id": "",
"name": "",
"createdAt": 0,
"lastUsedAt": 0,
"expiresAt": 0,
"scope": ""
}
},
"currentProject": {
"id": "",
"worktree": "",
"canonical": "",
"vcs": "git",
"name": "",
"icon": {
"url": "",
"override": "",
"color": ""
},
"commands": {
"start": ""
},
"time": {
"created": 0,
"updated": 0,
"initialized": 0
},
"sandboxes": [
""
],
"current": false
},
"projects": [
{
"id": "",
"worktree": "",
"canonical": "",
"vcs": "git",
"name": "",
"icon": {
"url": null,
"override": null,
"color": null
},
"commands": {
"start": null
},
"time": {
"created": null,
"updated": null,
"initialized": null
},
"sandboxes": [],
"current": false
}
],
"execution": {
"container": {
"available": false,
"runtime": "docker",
"image": ""
}
},
"github": {
"connected": false,
"tokenAvailable": false,
"reconnectRequired": false,
"oauthDeviceEnabled": false,
"oauthDeviceConfigured": false,
"oauthClientSource": "flag",
"user": {
"login": "",
"name": "",
"avatar_url": ""
}
},
"expo": {
"available": false,
"easAvailable": false,
"details": [
""
]
},
"mobileProject": {
"detected": false,
"platforms": [
""
],
"primaryPlatform": "",
"method": "",
"root": ""
}
} 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.mobile.bootstrap({
...
}) Try it
Command
mobile.command.list | Name | In | Type | Required |
|---|---|---|---|
| directory | query | string | optional |
| workspace | query | string | optional |
({ name: string description?: string | null agent?: string | null model?: string | null mcp?: boolean | null skill?: boolean | null subtask?: boolean | null hints: string[] })[]
Example response from schema
[
{
"name": "",
"description": "",
"agent": "",
"model": "",
"mcp": false,
"skill": false,
"subtask": false,
"hints": [
""
]
}
] 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.mobile.command.list({
...
}) Try it
Project
mobile.project.list | Name | In | Type | Required |
|---|---|---|---|
| directory | query | string | optional |
| workspace | query | string | optional |
({ id: string worktree: string canonical: string vcs?: "git" | null name?: string | null icon?: | { url?: string | null override?: string | null color?: string | null } | null commands?: | { start?: string | null } | null time: { created: | number | "Infinity" | "-Infinity" | "NaN" updated: | number | "Infinity" | "-Infinity" | "NaN" initialized?: | | number | "Infinity" | "-Infinity" | "NaN" | null } sandboxes: string[] current: boolean })[]
Example response from schema
[
{
"id": "",
"worktree": "",
"canonical": "",
"vcs": "git",
"name": "",
"icon": {
"url": "",
"override": "",
"color": ""
},
"commands": {
"start": ""
},
"time": {
"created": 0,
"updated": 0,
"initialized": 0
},
"sandboxes": [
""
],
"current": 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.mobile.project.list({
...
}) Try it
Memory
mobile.memory.history | Name | In | Type | Required |
|---|---|---|---|
| directory | query | string | optional |
| workspace | query | string | optional |
({ id: string input: string mode?: "normal" | "shell" | null partsCount: | number | "Infinity" | "-Infinity" | "NaN" })[]
Example response from schema
[
{
"id": "",
"input": "",
"mode": "normal",
"partsCount": 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.mobile.memory.history({
...
}) Try it
mobile.memory.search | Name | In | Type | Required |
|---|---|---|---|
| query | query | string | required |
| directory | query | string | optional |
| workspace | query | string | optional |
({ id: string sessionID: string sessionTitle: string messageID: string role: "user" | "assistant" createdAt: | number | "Infinity" | "-Infinity" | "NaN" preview: string })[]
Example response from schema
[
{
"id": "",
"sessionID": "",
"sessionTitle": "",
"messageID": "",
"role": "user",
"createdAt": 0,
"preview": ""
}
] 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.mobile.memory.search({
...
}) Try it
mobile.memory.stash.list | Name | In | Type | Required |
|---|---|---|---|
| directory | query | string | optional |
| workspace | query | string | optional |
({ id: string input: string timestamp: | number | "Infinity" | "-Infinity" | "NaN" partsCount: | number | "Infinity" | "-Infinity" | "NaN" })[]
Example response from schema
[
{
"id": "",
"input": "",
"timestamp": 0,
"partsCount": 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.mobile.memory.stash.list({
...
}) Try it
mobile.memory.stash.create | Name | In | Type | Required |
|---|---|---|---|
| directory | query | string | optional |
| workspace | query | string | optional |
{ input: string }
{ id: string input: string timestamp: | number | "Infinity" | "-Infinity" | "NaN" partsCount: | number | "Infinity" | "-Infinity" | "NaN" }
Example response from schema
{
"id": "",
"input": "",
"timestamp": 0,
"partsCount": 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.mobile.memory.stash.create({
...
}) Try it
mobile.memory.stash.delete | Name | In | Type | Required |
|---|---|---|---|
| id | path | string | required |
| directory | query | string | optional |
| workspace | query | string | optional |
{ success: true }
{ name: "NotFoundError" error: string }
Example response from schema
{
"success": true
} 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.mobile.memory.stash.delete({
...
}) Try it
This changes or removes server state, against whatever base URL is set above.
Worktree
mobile.worktree.create | Name | In | Type | Required |
|---|---|---|---|
| directory | query | string | optional |
| workspace | query | string | optional |
{ name?: string | null branch?: string | null branchPrefix?: string | null baseBranch?: string | null remote?: string | null startCommand?: string | null detached?: boolean | null sourceDirectory?: string | null root?: string | null }
{ name: string branch?: string | null directory: string }
Example response from schema
{
"name": "",
"branch": "",
"directory": ""
} 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.mobile.worktree.create({
...
}) Try it
mobile.worktree.remove | Name | In | Type | Required |
|---|---|---|---|
| directory | query | string | optional |
| workspace | query | string | optional |
{ directory: string force?: boolean | null }
{ success: true }
Example response from schema
{
"success": true
} 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.mobile.worktree.remove({
...
}) Try it
This changes or removes server state, against whatever base URL is set above.
mobile.worktree.reset | Name | In | Type | Required |
|---|---|---|---|
| directory | query | string | optional |
| workspace | query | string | optional |
{ directory: string }
{ success: true }
Example response from schema
{
"success": true
} 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.mobile.worktree.reset({
...
}) Try it
Events
mobile.events | Name | In | Type | Required |
|---|---|---|---|
| directory | query | string | optional |
| workspace | query | string | optional |
{ id: string | null event: string data: string }
Example response from schema
{
"id": "",
"event": "",
"data": ""
} 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.mobile.events({
...
}) Try it
Brain
mobile.brain.get | Name | In | Type | Required |
|---|---|---|---|
| directory | query | string | optional |
| workspace | query | string | optional |
{ enabled: boolean memoryEnabled: boolean minHours: | number | "Infinity" | "-Infinity" | "NaN" minSessions: | number | "Infinity" | "-Infinity" | "NaN" lastBrainAt: | number | "Infinity" | "-Infinity" | "NaN" hoursSinceLastBrain: | number | "Infinity" | "-Infinity" | "NaN" sessionsSinceLastBrain: | number | "Infinity" | "-Infinity" | "NaN" shouldTrigger: boolean model?: | { providerID: string modelID: string } | null }
Example response from schema
{
"enabled": false,
"memoryEnabled": false,
"minHours": 0,
"minSessions": 0,
"lastBrainAt": 0,
"hoursSinceLastBrain": 0,
"sessionsSinceLastBrain": 0,
"shouldTrigger": false,
"model": {
"providerID": "",
"modelID": ""
}
} 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.mobile.brain.get({
...
}) Try it
mobile.brain.trigger | Name | In | Type | Required |
|---|---|---|---|
| directory | query | string | optional |
| workspace | query | string | optional |
| { force?: boolean | null } | null
{ success: boolean sessionsReviewed: | number | "Infinity" | "-Infinity" | "NaN" hoursSinceLastBrain: | number | "Infinity" | "-Infinity" | "NaN" error?: string | null sessionID?: string | null }
Example response from schema
{
"success": false,
"sessionsReviewed": 0,
"hoursSinceLastBrain": 0,
"error": "",
"sessionID": ""
} 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.mobile.brain.trigger({
...
}) Try it
Chatbot
mobile.chatbot.list | Name | In | Type | Required |
|---|---|---|---|
| directory | query | string | optional |
| workspace | query | string | optional |
{ bots: ({ name: string type: string running: boolean webhookPath: string })[] }
Example response from schema
{
"bots": [
{
"name": "",
"type": "",
"running": false,
"webhookPath": ""
}
]
} 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.mobile.chatbot.list({
...
}) Try it
mobile.chatbot.start | Name | In | Type | Required |
|---|---|---|---|
| name | path | string | required |
| directory | query | string | optional |
| workspace | query | string | optional |
{ running: boolean error?: string | null }
Example response from schema
{
"running": false,
"error": ""
} 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.mobile.chatbot.start({
...
}) Try it
mobile.chatbot.stop | Name | In | Type | Required |
|---|---|---|---|
| name | path | string | required |
| directory | query | string | optional |
| workspace | query | string | optional |
{ removed: boolean }
Example response from schema
{
"removed": 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.mobile.chatbot.stop({
...
}) Try it
Observability
mobile.observability.get | Name | In | Type | Required |
|---|---|---|---|
| directory | query | string | optional |
| workspace | query | string | optional |
{ enabled: boolean otlpEndpoint: string | null }
Example response from schema
{
"enabled": false,
"otlpEndpoint": ""
} 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.mobile.observability.get({
...
}) Try it
mobile.observability.set | Name | In | Type | Required |
|---|---|---|---|
| directory | query | string | optional |
| workspace | query | string | optional |
{ enabled: boolean }
{ enabled: boolean otlpEndpoint: string | null }
Example response from schema
{
"enabled": false,
"otlpEndpoint": ""
} 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.mobile.observability.set({
...
}) Try it
Lsp
mobile.lsp.status | Name | In | Type | Required |
|---|---|---|---|
| directory | query | string | optional |
| workspace | query | string | optional |
{ servers: ({ id: string name: string root: string status: "connected" | "error" })[] error?: string | null }
Example response from schema
{
"servers": [
{
"id": "",
"name": "",
"root": "",
"status": "connected"
}
],
"error": ""
} 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.mobile.lsp.status({
...
}) Try it
Fusion
mobile.fusion.list | Name | In | Type | Required |
|---|---|---|---|
| directory | query | string | optional |
| workspace | query | string | optional |
{ presets: ({ name: string builtin: boolean enabled: boolean })[] }
Example response from schema
{
"presets": [
{
"name": "",
"builtin": false,
"enabled": 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.mobile.fusion.list({
...
}) Try it
mobile.fusion.set | Name | In | Type | Required |
|---|---|---|---|
| directory | query | string | optional |
| workspace | query | string | optional |
{ name: string enabled: boolean }
{ name: string enabled: boolean }
Example response from schema
{
"name": "",
"enabled": 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.mobile.fusion.set({
...
}) Try it
Host
mobile.host.browser | Name | In | Type | Required |
|---|---|---|---|
| directory | query | string | optional |
| workspace | query | string | optional |
{ available: boolean reason?: string | null sessions?: unknown[] | null }
Example response from schema
{
"available": false,
"reason": "",
"sessions": []
} 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.mobile.host.browser({
...
}) Try it
mobile.host.computer | Name | In | Type | Required |
|---|---|---|---|
| directory | query | string | optional |
| workspace | query | string | optional |
{ available: boolean reason?: string | null platform?: string | null screenshot?: boolean | null input?: boolean | null detail?: string | null }
Example response from schema
{
"available": false,
"reason": "",
"platform": "",
"screenshot": false,
"input": false,
"detail": ""
} 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.mobile.host.computer({
...
}) Try it
mobile.host.herdr.get | Name | In | Type | Required |
|---|---|---|---|
| directory | query | string | optional |
| workspace | query | string | optional |
{ available: boolean reason?: string | null enabled?: boolean | null installed?: boolean | null }
Example response from schema
{
"available": false,
"reason": "",
"enabled": false,
"installed": 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.mobile.host.herdr.get({
...
}) Try it
mobile.host.herdr.set | Name | In | Type | Required |
|---|---|---|---|
| directory | query | string | optional |
| workspace | query | string | optional |
{ enabled: boolean }
{ available: boolean reason?: string | null enabled?: boolean | null installed?: boolean | null }
Example response from schema
{
"available": false,
"reason": "",
"enabled": false,
"installed": 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.mobile.host.herdr.set({
...
}) Try it
mobile.host.island | Name | In | Type | Required |
|---|---|---|---|
| directory | query | string | optional |
| workspace | query | string | optional |
{ available: boolean reason?: string | null supported?: boolean | null enabled?: boolean | null appRunning?: boolean | null sessions?: | | number | "Infinity" | "-Infinity" | "NaN" | null }
Example response from schema
{
"available": false,
"reason": "",
"supported": false,
"enabled": false,
"appRunning": false,
"sessions": 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.mobile.host.island({
...
}) Try it
mobile.host.devtools | Name | In | Type | Required |
|---|---|---|---|
| directory | query | string | optional |
| workspace | query | string | optional |
{ available: boolean reason?: string | null rss?: | | number | "Infinity" | "-Infinity" | "NaN" | null heapUsed?: | | number | "Infinity" | "-Infinity" | "NaN" | null heapTotal?: | | number | "Infinity" | "-Infinity" | "NaN" | null external?: | | number | "Infinity" | "-Infinity" | "NaN" | null pid?: | | number | "Infinity" | "-Infinity" | "NaN" | null uptimeSec?: | | number | "Infinity" | "-Infinity" | "NaN" | null platform?: string | null }
Example response from schema
{
"available": false,
"reason": "",
"rss": 0,
"heapUsed": 0,
"heapTotal": 0,
"external": 0,
"pid": 0,
"uptimeSec": 0,
"platform": ""
} 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.mobile.host.devtools({
...
}) Try it
mobile.host.lan.get | Name | In | Type | Required |
|---|---|---|---|
| directory | query | string | optional |
| workspace | query | string | optional |
{ listening: boolean url?: string | null hostname?: string | null port?: | | number | "Infinity" | "-Infinity" | "NaN" | null }
Example response from schema
{
"listening": false,
"url": "",
"hostname": "",
"port": 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.mobile.host.lan.get({
...
}) Try it
mobile.host.lan.start | Name | In | Type | Required |
|---|---|---|---|
| directory | query | string | optional |
| workspace | query | string | optional |
{ mdns?: boolean }
{ listening: boolean url?: string | null hostname?: string | null port?: | | number | "Infinity" | "-Infinity" | "NaN" | null }
Example response from schema
{
"listening": false,
"url": "",
"hostname": "",
"port": 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.mobile.host.lan.start({
...
}) Try it
Schemas
The 16 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.
{ name?: string expiresInDays?: | number | "Infinity" | "-Infinity" | "NaN" }
{ id: string name: string createdAt: | number | "Infinity" | "-Infinity" | "NaN" lastUsedAt?: | | number | "Infinity" | "-Infinity" | "NaN" | null expiresAt?: | | number | "Infinity" | "-Infinity" | "NaN" | null scope?: string | null }
{ version: string auth: { bearerEnabled: boolean currentToken?: MobileAuthTokenPublic | null } currentProject: MobileProject projects: MobileProject[] execution: { container: { available: boolean runtime?: "docker" | "podman" | null image: string } } github: { connected: boolean tokenAvailable?: boolean | null reconnectRequired?: boolean | null oauthDeviceEnabled: boolean oauthDeviceConfigured?: boolean | null oauthClientSource?: "flag" | "config" | "env" | null user?: | { login: string name?: string | null | null avatar_url?: string | null } | null } expo: { available: boolean easAvailable: boolean details: string[] } mobileProject?: | { detected: boolean platforms?: string[] | null primaryPlatform?: string | null method?: string | null root?: string | null } | null }
{ name: string description?: string | null agent?: string | null model?: string | null mcp?: boolean | null skill?: boolean | null subtask?: boolean | null hints: string[] }
{ listening: boolean url?: string | null hostname?: string | null port?: | | number | "Infinity" | "-Infinity" | "NaN" | null }
{ mdns?: boolean }
{ id: string sessionID: string sessionTitle: string messageID: string role: "user" | "assistant" createdAt: | number | "Infinity" | "-Infinity" | "NaN" preview: string }
{ name: "NotFoundError" error: string }
{ id: string worktree: string canonical: string vcs?: "git" | null name?: string | null icon?: | { url?: string | null override?: string | null color?: string | null } | null commands?: | { start?: string | null } | null time: { created: | number | "Infinity" | "-Infinity" | "NaN" updated: | number | "Infinity" | "-Infinity" | "NaN" initialized?: | | number | "Infinity" | "-Infinity" | "NaN" | null } sandboxes: string[] current: boolean }
{ id: string input: string mode?: "normal" | "shell" | null partsCount: | number | "Infinity" | "-Infinity" | "NaN" }
{ id: string input: string timestamp: | number | "Infinity" | "-Infinity" | "NaN" partsCount: | number | "Infinity" | "-Infinity" | "NaN" }
{ success: true }
{ name?: string | null branch?: string | null branchPrefix?: string | null baseBranch?: string | null remote?: string | null startCommand?: string | null detached?: boolean | null sourceDirectory?: string | null root?: string | null }
{ directory: string force?: boolean | null }
{ directory: string }
{ name: string branch?: string | null directory: string }