TechnologyWhat we build on

The harness under everything we build

We built our own harness, and every client project starts from it. It gives agents typed tools to act with, a runtime to work in, rules they can't talk their way around, and a record of everything they did. We fit it around your systems, and run our own apps on it.

01Architecture

Between the agent and the systems it touches

Whether the agent is yours, a third party's, or one of our own apps, it reaches your systems only through the harness.

Agents

Your agentsAssistants and automations you run
Third-party agentsOutside assistants acting for a customer
Our appse.g. Agent of Point

Senneseum harness

Typed tools
Runtime & state
Guardrails & policy
Human approvals
Evals & tracing

Your systems

Point of sale
Inventory & orders
Commerce platforms
CRM & messaging
Custom APIs & data

02Capabilities

What every project gets from it

  • H/01

    Typed tools

    Every action an agent can take is a typed, documented tool with validated inputs, so agents call your systems the same way every time.

  • H/02

    MCP & connectors

    Tools are exposed over MCP and standard APIs, and connect to point-of-sale, inventory, commerce and custom back ends.

  • H/03

    Runtime

    Runs the agent loop: state, memory, retries, scheduling and handoffs between agents.

  • H/04

    Guardrails & policy

    Rules about what agents may do, enforced by the harness rather than by the prompt alone.

  • H/05

    Human approvals

    Anything that moves money or can't be undone pauses for a person to approve, with the full context in front of them.

  • H/06

    Evals & observability

    Traces for every step, replayable sessions and regression suites that run before each change ships.

03How it looks

Tools, policies and traces

Each tool declares its inputs and whether it needs approval. Policies set what an agent may do and how much. Every session leaves a trace you can inspect and replay.

  • tool.tsDeclares its inputs and whether it needs approval.
  • policy.yamlSets what an agent may do, and how much.
  • trace.jsonRecords every step, ready to inspect and replay.
1import { defineTool } from '../harness';
2import { z } from 'zod';
3
4const line = z.object({
5 sku: z.string(),
6 qty: z.number().int().positive(),
7});
8
9export const createPurchaseOrder = defineTool({
10 name: 'purchase_orders.create',
11 description: 'Draft a purchase order with a supplier.',
12 input: z.object({
13 supplierId: z.string(),
14 lines: z.array(line),
15 }),
16 // Money leaves the business: always ask a person first.
17 approval: 'required',
18 async run({ supplierId, lines }, { systems }) {
19 const quote = await systems.suppliers.quote(supplierId, lines);
20 return systems.purchasing.draft({
21 supplierId,
22 lines,
23 total: quote.total,
24 });
25 },
26});
Checkpoint lines: where a person gets asked. Illustrative examples.

Have a job you want agents to take on?

Tell us about your systems and what you'd like automated. We'll come back with a plan for the tools, guardrails and evals it needs.

Start a project