JIXUDOCS
Packages

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-core

Create 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

AreaMain exports
Agent and ToolsdefineAgent, defineSchema, defineTool
RuntimecreateHarness, Harness, Thread
Built-in StoreInMemoryEventStore
Adapter portsModelDriver, EventStore, ArtifactStore, SignalSink, Clock, IdGenerator
PermissionsdefineToolPermissionPolicy, resolveToolPermission
RecoveryreplayEvents, Event decoders, typed compatibility errors
ContextContext Policy, Model Capability Profile, compilation and Handoff types
Observationordered 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) and wait();
  • state(), events(), and stream();
  • clear(), interrupt(), pause(), and continue();
  • setMode(mode);
  • fork({ at, input }); and
  • replay().

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.