MODULE 07 · LESSON 7.1
Create a canonical blueprint
Provision the cooperating agents from one canonical blueprint.
Lesson 39 of 86 · FabrCore 2.0
Overview
FabrCoreBlueprint describes the application baseline. Bare handles let the same definition be applied for different principals. Extensions such as squads and connectedAgents belong in the canonical document, not a separate agents-only compatibility DTO.
A canonical definition describes a workspace
A blueprint collects the agent definitions your product wants for one principal: handles, registered types, model aliases, plugins and arguments. Reusing bare local handles lets the same definition create dev:assistant and another user's assistant under their respective owners. It is data describing desired instances, not an assembly containing their implementations.
Storing and applying are different steps
Saving a named blueprint makes it available for later deployment. Applying expands its definition and attempts the corresponding agent operations. Neither putting a file beside the Host nor starting the process necessarily applies every blueprint to every user. Choose the application event that provisions the workspace, such as first sign-in, and inspect its results.
Write and apply the blueprint
- Create ops-desk with the assistant and specialist definitions, named models, plugin selections and Args. Keep credentials out of the document.
- Store a named blueprint through /fabrcoreapi/Blueprint or apply a canonical document directly through /fabrcoreapi/Agent/blueprint.
- Apply from trusted application bootstrap, such as first sign-in. Host startup does not automatically reconcile all blueprints for all principals.
{
"name": "ops-desk",
"version": "1.0.0",
"agents": [
{
"handle": "researcher",
"agentType": "researcher",
"models": "default",
"plugins": [
"requests"
],
"args": {
"_HarnessDefaultMode": "plan",
"_HarnessLoop": "todo"
}
}
]
}
Invoke-RestMethod -Method Post -Uri http://localhost:5098/fabrcoreapi/agent/blueprint -Headers @{ "x-user-handle" = "dev" } -ContentType "application/json" -InFile ./ops-desk.json
A Cloud Server stores the canonical definition with the principal-scoped administration API, previews the saved revision and deploys the reviewed expansion. The JSON definition is the same document shown under Files & code.
This path provides conditional storage and deployment receipts. For new definitions use If-Match: "*"; for edits use the current definition revision. Host/extension assemblies must already be installed.
- PUT the complete ops-desk.json body to the named management resource below. Read/export it to verify the stored definition.
- Request preview and inspect the returned revision, expansionDigest and expanded agents.
- Deploy using an operation receipt as shown in lesson 7.2. Saving the definition alone does not create instances.
PUT /fabrcoreapi/admin/v1/principals/dev/blueprint-management/ops-desk
Authorization: Bearer <administration-credential>
If-Match: "*"
Content-Type: application/json
{
"name": "ops-desk",
"version": "1.0.0",
"agents": [
{
"handle": "researcher",
"agentType": "researcher",
"models": "default",
"plugins": [
"requests"
],
"args": {
"_HarnessDefaultMode": "plan",
"_HarnessLoop": "todo"
}
}
]
}
GET /fabrcoreapi/admin/v1/principals/dev/blueprint-management/ops-desk/preview
Authorization: Bearer <administration-credential>
Compare definition and created instances
- Use the example with an installed agent alias and available model alias. Apply it to a disposable principal and inspect each creation result.
- List/read the principal's resulting agents and compare their local handles, type aliases and model selections with the definition. Every intended target should be accounted for.
- Apply an ensure operation again. Confirm existing instances are not duplicated and remember that this does not prove changed fields were updated on them.
The result establishes repeatable workspace provisioning. It does not make the blueprint a continuous reconciler that deletes or updates every drifted instance automatically.
If the result is different
Preserve unknown top-level extensions when editing/cloning JSON. Agents-only compatibility helpers cannot represent extension-aware workflows.
Go deeper
Explore the related documentation.