Skip to main content

Customization & extension points

Customize LibraOS through published contracts. Internal services, prompts, database tables, and source modules are not extension points and can change without compatibility guarantees.

Change you needChange this layerVerify with
Change the UI or business workflowYour application codeUI and integration tests
Change an agent's instructions, model, tools, output, or limitsSupported managed-agent API or declarative agent fileAgent evaluation plus a request through the installed endpoint
Share defaults across agentsEmployee configuration or house profile, according to the intended scopeEffective configuration and an identity-scoped test
Add or update documentsCollection and document APIs or a supported connectorRetrieval capability response and retrieval test
Decide which knowledge an agent can useAgent bindings and collection authorizationPositive and negative authorization tests
Call a business systemA narrowly scoped tool callback or application-side adapterContract, authorization, failure, and idempotency tests
Change whether an external action needs reviewTool risk and approval policyDry-run, approval, execution-result, and audit tests
Change model routingServer and per-agent model settingsEffective model configuration and representative evaluations
Retain a known structured valueoutput_type with declared persisted fields and scopeCross-turn, cross-user, reset, and deletion tests
Retain general observationsOperator-enabled observational memoryIdentity-isolation, latency, retention, and removal tests
Run work beyond one connectionNative jobs APISubmit-once, reconnect, duplicate-event, failure, and outcome tests
Change deployment servicesDocumented environment and deployment configurationlibraos doctor deployment and GET /api/capabilities

Choose the narrowest supported entry point​

  • Put presentation and business-state transitions in the application.
  • Put executable agent behavior in an agent definition.
  • Put reusable operating guidance in the supported shared configuration for its intended scope.
  • Put documents in knowledge collections, not in prompts or memory by default.
  • Put external side effects behind a typed tool with explicit policy.
  • Read capability and outcome fields instead of inferring success from a 2xx response, stream event name, backend name, or completed model turn.

Keep a project-specific file map​

Public documentation cannot name files in an application it does not own. Each application repository should maintain a file map using real paths from that repository:

| Change | File or configuration | Contract | Verification |
| --- | --- | --- | --- |
| Change agent behavior | <actual path> | Agent schema/API | Agent evaluation |
| Add a business field | <actual migration and API path> | Application schema | Migration test |
| Add an external operation | <actual adapter path> | Tool contract | Authorization test |
| Add a knowledge source | <actual connector/binding path> | Collection API | Retrieval test |

Do not copy example paths into a customer repository. Generate or review this table against the actual code, migrations, configuration, and tests whenever the project structure changes.

When the public contract is insufficient​

First confirm the installed server and SDK versions and inspect the published OpenAPI contract. If the required field or behavior is absent, treat it as an unsupported capability rather than editing runtime internals and documenting that edit as a stable integration.

Start with Build on LibraOS, Calling agents, and the Portability contract.