Recursive Selves Platform

(01)

Developer interfaces

The console is for projects, subscriptions and keys. Everything a product does with a self it does through one of these three, and all three are generated from the same contract, so none of them can drift from the runtime.

(02)

The contract

Every route, its role and its body, as a document the runtime serves about itself.

curl -H "Authorization: Bearer $RS_KEY" https://api.recursiveselves.com/contract

The server refuses to start with a route the contract does not name, and a test fails if the contract names a route the server does not serve.

(03)

The client kit

A typed client over the same contract: a turn that carries the self's context and comes back with a ticket, ratings from people, and outcomes from your own systems.

npm i @praecise/selves-client
import { Selves } from "@praecise/selves-client";

const selves = new Selves({ url: "https://api.recursiveselves.com", key: process.env.RS_KEY });

const turn = await selves.turn({ self: "economist", surface: "chat", task: question, person: userId });
const answer = await yourModel(turn.wrap(question));   // your product, your model
await turn.done(answer);

// What came of it, and the check your own system ran.
await selves.outcome(turn.ticket, {
  signal: 1, label: "used",
  check: { name: "live prices", ran: true, passed: true },
});

A check your own system ran is the only thing that teaches a self how to do the work. Ratings move what it believes; checks move what it does.

Nothing above is required: every one of those calls is a route on the contract, and plenty of adopters use the HTTP API or the MCP endpoint directly. The kit exists so you do not hand-write the parts every adopter would otherwise write the same way.

@praecise/selves-client on npm → Apache-2.0

(04)

The MCP endpoint

The same project, as tools an agent can call.

https://api.recursiveselves.com/mcp   # Authorization: Bearer $RS_KEY

(05)

The harness

Praecise Harness is the open agent harness underneath: declare an agent, give it a self, and the runtime is wired in for you.

npm i @praecise/harness

github.com/Praecise/praecise-harness → Apache-2.0