Licence
MIT
Version
0.1.3
Deps
0
Size
33 kB
Vulns
0
Weekly
6
@string-os/client
HTTP/SSE client for stringd — talk to a running String daemon from any Node.js or TypeScript program. No runtime dependencies (uses only Node's built-in http module).
This is the same client library that @string-os/string's CLI uses internally. Extracted as a standalone package so you can write a custom tool that speaks to stringd without pulling in the full runtime.
Install
npm install @string-os/clientPrerequisites
You need a running stringd daemon. The simplest path:
npm install -g @string-os/string
string --daemon startDefault port is 3923. Change with STRING_PORT=... in the daemon's environment.
Usage
import { ping, ensureAgent, exec } from '@string-os/client';
const port = 3923;
const agentId = 'default';
const home = '/home/alice/.string/agents/default';
// 1. Check the daemon is alive
const alive = await ping(port);
if (!alive) throw new Error('stringd not running on port ' + port);
// 2. Make sure the agent exists (idempotent)
await ensureAgent(port, { id: agentId, home });
// 3. Execute a command in a topic
const result = await exec(port, agentId, 'main', '/open ./README.md');
console.log(result.ok); // true
console.log(result.code); // null on success, error code on failure
console.log(result.content); // the command output
console.log(result.meta); // current document metadata or nullAPI
ping(port: number): Promise<boolean>
ensureAgent(port: number, agent: { id: string; home: string }): Promise<void>
exec(port: number, agentId: string, topic: string, cmd: string, requestId?: string): Promise<ExecResult>
health(port: number): Promise<{ ok: boolean; agents: number; sessions: number }>
shutdown(port: number): Promise<void>
// SSE utilities
parseSSE(raw: string): Array<{ event: string; data: string }>
sseToExecResult(raw: string): ExecResult
stripContentPrefix(raw: string): string
interface ExecResult {
ok: boolean;
code: string | null;
content: string;
meta: object | null;
}Protocol
The client speaks stringd protocol v0.1. If you want to implement this protocol in another language, start there — the spec is the source of truth, not this TypeScript client.
Related
@string-os/string— the runtime, daemon, and CLI@string-os/string— MCP server for Claude Code, Claude Desktop, Codex, Cursor, etc.- stringd protocol v0.1
- SFMD spec
License
MIT