Tool calling
Its arguments. The function cannot know who called it, what else is running, or what happens next.
Engineering AI's contact with reality.
The complete intelligence runtime you can ship inside your app.
Write your app in TypeScript. Have it compose local models, spawn agents that share attention state, and use turnkey abilities to perform real-world tasks. Ship it like a regular desktop app that works offline or a web app that serves multiple users.
Qwen deep-research, Gemma 4 with a Whisper and S1-mini voice pipeline, Bonsai with an image tool, and GLM 5.2 with Qwen Reranker in a spreadsheet template.
Built from your local documents
Evidence linked to every finding.
Open the original passage.
Compare the evidence. Continue the brief.
01 / ABILITIES
Agents use Abilities to act on the world and on live inference simultaneously.
Abilities are inference-native. They run inside the model’s execution rather than behind a network boundary, so an extension can see who called it, what that caller already knows, and what else is running — and can fork that state into new agents.
Lloyal hosts a signed channel of 1st & 3rd party Abilities. Installing one brings it all into your app in a single command, for your in-app agents to consume: tools and their schemas, a live source, situation-aware skills[1], and the models it composes. DeepSeek’s Harness bets on a plugin ecosystem for its own agent. Abilities are that ecosystem for the apps you ship.
[1] Agent count · Other agents’ tasks · Tool budgets · Chain position · Date
How Abilities work →Browse Abilities →Its arguments. The function cannot know who called it, what else is running, or what happens next.
Its arguments, in its own process. Language freedom and isolation — the right default for most integrations.
Its arguments, and the context window. The extension carries procedure now, not only operations.
The execution itself. The calling agent, its live inference state, its lineage, its siblings — the authority to fork it into new agents, and to require the harness to load another model before it will run.
02 / THE HARNESS
For two decades the Model in MVC was inert—rows in a database, waiting to be queried. Put a live language model in that slot and every other part holds: product surfaces are still the Views, and the harness is the Controller, ordinary TypeScript deciding how the application's intelligence collaborates, acts, recovers and continues. What changes is that this Model thinks, and it keeps thinking while your code governs it—the same code whether it runs a 4B model on a laptop or GLM-5.2 across a cluster of B200s.
The model supplies the intelligence. The harness supplies the institution.
Program the behaviour once — regardless of product surface or compute:
export function* incidentHarness(incident) { const pool = yield* agentPool({ orchestrate: parallel([ inspectTelemetry(incident), searchServiceHistory(incident), reviewTechnicalManuals(incident), ]), }); const evidence = pool.agents.map((a) => a.result); const assessment = yield* reconcile(evidence); if (assessment.requiresApproval) { return yield* requestOperatorDecision(assessment); } return yield* proposeRemediation(assessment);}
approve remediation?
[y] yes [n] hold
Approve remediation
Approve remediation
Approve remediation
CONTACT
The platform is public and the docs are open — everything above is self-serve. This is the door for partnerships, the hardware programme, press, and anything the documentation does not answer.
No API key, no inference server, no vector database. Ten-minute guide · Docs · HDK on GitHub