Quickstart
get-started / v1
Build and install locally
Node 22+ and Python 3.11+ are supported. Packages are unpublished, but all documented local interfaces can be used now. From the repository root run the build commands below. The WASM build needs the Rust target and wasm-bindgen CLI 0.2.129. No hosted key is required. For an external Node project, pack cells/cell-relay/node with pnpm pack and install the resulting local archive. For Python, run python scripts/build.py in cells/cell-relay/python and install the resulting local wheel.
Wrap one call
The TypeScript example below runs a synthetic local read and an explicitly unavailable-engine fixture. It asserts return identity, one upstream call and one bypass event. This is fixture traffic, not evidence of recovered production drift. Run the saved TypeScript file from a project with the local Node archive installed using node --experimental-strip-types example.ts.
Read the first outcome
Inspect sdk.recent() or subscribe with sdk.on. Bypass is an event; the result body is unchanged. A healthy default engine can return no findings without proving drift safety. Audit artifact production requires explicit audit options and a host drain; missing artifact IDs must stay unavailable.
Specification
Read the governing contract and the related guide.
pnpm install --frozen-lockfile
rustup target add wasm32-unknown-unknown
cargo install wasm-bindgen-cli --version 0.2.129 --locked
node cells/cell-relay/node/scripts/build.mjs
python3 cells/cell-relay/python/scripts/build.py --stage-only
uv sync --directory cells/cell-relay/python --frozenimport { createAgindow } from '@agindow/node';
const sdk = createAgindow({ mode: 'observe' });
await sdk.ready;
const payload = { id: 'synthetic-customer' };
let calls = 0;
const read = sdk.guard(() => { calls++; return payload; }, { tool: 'vendor.read', operation: 'read' });
const result = read();
if (result !== payload || calls !== 1) throw Error('Fixture identity changed');
// A labelled unavailable-engine fixture produces one bypass without a hosted key.
const unavailable = createAgindow({ mode: 'observe' }, async () => { throw Error('Synthetic loading fault'); });
await unavailable.ready;
const fallback = unavailable.wrap(() => payload);
if (fallback() !== payload || unavailable.recent().filter(e => e.type === 'bypass').length !== 1) throw Error('Missing bypass');
sdk.configure({ mode: 'observe' });
console.log('Synthetic fixture: original result retained; unavailable engine bypassed once.');