JIXU DOCUMENTATION
jixu-core
The durable single-Agent Harness, Thread API, deterministic Kernel, and adapter ports.
jixu-core is the architectural center of Jixu. It defines the public Agent, Harness, Thread, Tool, Event, State, Effect, Driver, and Store contracts without importing provider SDKs, database drivers, or UI frameworks.
Install
npm install jixu-coreCreate the core boundary
import {
createHarness,
defineAgent,
InMemoryEventStore,
type ModelDriver,
} from "jixu-core";
export function createAgentHarness(modelDriver: ModelDriver) {
const agent = defineAgent({
instructions: "Be precise and verify your work.",
model: { provider: "model", model: "example-model" },
modelCapabilities: {
contextWindowTokens: 128_000,
maxOutputTokens: 16_384,
resolvedModel: "example-model",
schemaVersion: 1,
source: { kind: "explicit", name: "application-declaration" },
},
tools: [],
});
return createHarness({
agent,
modelDrivers: { model: modelDriver },
store: new InMemoryEventStore(),
});
}Use jixu-llm for maintained model Drivers and a Store package when Thread history must survive a process restart.
Primary public surface
| Area | Main exports |
|---|---|
| Agent and Tools | defineAgent, defineSchema, defineTool |
| Runtime | createHarness, Harness, Thread |
| Built-in Store | InMemoryEventStore |
| Adapter ports | ModelDriver, EventStore, ArtifactStore, SignalSink, Clock, IdGenerator |
| Permissions | defineToolPermissionPolicy, resolveToolPermission |
| Recovery | replayEvents, Event decoders, typed compatibility errors |
| Context | Context Policy, Model Capability Profile, compilation and Handoff types |
| Observation | ordered Event and transient Signal stream types |
The normal application path stays small: define one Agent, create one Harness, then create or open Threads. Applications do not manually construct Events, invoke the Reducer, or dispatch Effects.
Harness and Thread
A Harness exposes createThread(), openThread(id), and listThreads(). A Thread exposes:
send(input)andwait();state(),events(), andstream();clear(),interrupt(),pause(), andcontinue();setMode(mode);fork({ at, input }); andreplay().
In-memory is not durable
InMemoryEventStore is useful for tests and short-lived processes. Use jixu-store-jsonl, jixu-store-sqlite, or another contract-tested Store when recovery across process restarts matters.
See Core model, Execution model, and Threads for the semantics behind this API.