Skip to content

CLI Agent

Objective: run a Harness Kernel agent from a Node CLI.

import "dotenv/config";
import { resolve } from "node:path";
import { createHarnessSessionStore } from "@harness-kernel/core/runner";
import { ConsoleLogSink } from "@harness-kernel/core/runner/logging";
import { OpenAIProvider } from "@harness-kernel/provider-openai";
import { LocalSandbox } from "@harness-kernel/sandbox-local";
import { FileSessionStorage } from "@harness-kernel/storage-file";
import { agent } from "./agent.js";
const prompt = process.argv.slice(2).join(" ").trim() || "Summarize this project.";
for (const mode of agent.modes) mode.toolApproval = "ask";
const store = await createHarnessSessionStore({
agent: { definition: agent },
providers: [new OpenAIProvider()],
defaultModel: process.env.HARNESS_KERNEL_MODEL ?? "openai/gpt-5.1",
storage: new FileSessionStorage(),
sandbox: new LocalSandbox({ workDir: resolve(process.cwd()) }),
logging: {
sinks: [new ConsoleLogSink({ level: "info" })],
},
});
try {
const result = await store.send("cli", prompt);
console.log(result.answer);
} finally {
await store.close();
}

The repo includes this pattern under examples/cli-harness.

Boundary note: the CLI owns process arguments, environment variables, provider registration, storage, sandbox, and logs.

API: Session Store.