Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 11 additions & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ copy, when a contract changes.
| Runtime messages, Executor/Turn lifetimes, receipts and failure ownership | [Core–Runtime protocol](docs/runtime-protocol.md) and `internal/agentdaemon/proto` |
| Environment ownership and capability preparation (Skills, Plugins, MCP, `packages.system`) | [Environments](contracts/agents-api/environments.md) |
| Adding a Harness (steps) | [Harness onboarding](contracts/agents-api/harness-onboarding.md), `apps/parsar-daemon/internal/agent/harness.go` and `internal/harnessconfig/harness.go` |
| Built-in Harness identifiers, configuration/profile bindings and display names | `internal/harnessconfig/builtin/catalog.json` and its [generated reference](contracts/agents-api/harness-catalog.md) |
| Harness qualification and acceptance | [Harness integration](contracts/agents-api/harnesses.md) |
| Harness selection and Agent defaults | [Harness selection](contracts/agents-api/harness-selection.md) |
| Adding a Sandbox Provider | [Sandbox Provider guide](docs/sandbox-provider.md) and `services/agents-api/internal/sandbox/sandbox_provider.go` |
Expand All @@ -46,6 +47,9 @@ copy, when a contract changes.
are evidence, not current instructions or authority to restore a retired
implementation. Keep task chronology and rollout reports out of contributor rules.
- Keep current integration guidance separate from historical qualification evidence.
- A guide may summarize a workflow but must link to the owning contract for
versions, accepted values, precedence and lifecycle rules. Do not maintain
another normative copy. Generated references are projections, not new owners.

## Repository boundary

Expand Down Expand Up @@ -320,6 +324,13 @@ production provider-switch guard.

### Contract and schema rules

- `internal/harnessconfig/builtin/catalog.json` is the single authored public
Harness registration list. `make generate-harness-catalog` generates Go
configuration/profile registration, client identifiers/names and the reference;
`make openapi` derives the matching enums. `make check-harness-catalog` verifies
freshness in the full gate. Native configuration rules stay in their adapter
declarations; Core qualification and Runtime availability stay separate.

- `make sqlc-generate` owns only `services/agents-api/internal/db/sqlc`
(sqlc v1.29.0). Do not rewrite landed migrations.
- The public protocol schema is `contracts/agents-api/openapi.yaml`. Preserve
Expand Down
10 changes: 9 additions & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,17 @@ SWAG_VERSION ?= v1.16.4
help:
@printf '%s\n' 'make build-agents-api Build standalone Core commands' 'make build-daemon Build the execution daemon' 'make check Run Core, persistence and runtime checks' 'See README.md for runtime prerequisites and deployment.'

check: check-docs check-names check-distribution check-database check-sqlc check-go check-microsandbox-provider check-agents-api check-claude-sdk check-web check-example check-mcode-harness
check: check-harness-catalog check-docs check-names check-distribution check-database check-sqlc check-go check-microsandbox-provider check-agents-api check-claude-sdk check-web check-example check-mcode-harness
@printf 'OpenAgentCore checks passed.\n'

.PHONY: generate-harness-catalog check-harness-catalog
generate-harness-catalog:
python3 scripts/generate-harness-catalog.py

check-harness-catalog:
python3 scripts/generate-harness-catalog.py --check
python3 scripts/generate-harness-catalog.test.py

.PHONY: check-names
check-names:
python3 scripts/check-names.test.py
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,20 +30,12 @@ _openapi:
openai_hosted Sessions for this harness need a Session or Agent
bundle.
- content: >-
Core key only. The body is the complete
x_agents_core.model_configuration bundle, including the write-only
api_key; there is no partial update and bundles are never merged. The
provider is validated for this harness: an HTTPS base_url without
credentials, query or fragment, an upstream protocol (responses,
anthropic or chat_completions), automatically adapted by Runtime to
the selected harness and, for mcode, positive context_window and
max_output_tokens. New openai_hosted and none Sessions resolve omitted
model settings from this default and freeze the resolved configuration
into their encrypted snapshot; existing Sessions never change.
self_hosted Sessions never use it. The key is encrypted and never
returned. Each write records an administrator audit entry without the
key and resets last_used_at, last_error_code and last_error_at to
null, including identical writes.
Core key only. Replaces one complete deployment model configuration,
including its write-only provider key. Validates through the selected
Harness declaration and freezes the resolved configuration for new
Sessions; existing Sessions are unchanged. See
contracts/agents-api/model-execution.md#deployment-defaults for
fields, source precedence and observation rules.
---

{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
Expand Down
83 changes: 21 additions & 62 deletions apps/docs/content/docs/configure.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -149,52 +149,20 @@ Which harnesses are enabled, and the default one, are process settings

### Sandbox deployment

Exactly one provider serves the deployment: Docker, microsandbox or E2B. The
deployment specification holds the per-sandbox resources and, for Docker and
microsandbox, the Runtime release. Web's setup proposes the Standard size from
[`standard-sizes.json`](https://github.com/MiniMax-AI/parsar-core/blob/f6d258735fc601c521dd990e6f9e1ed261f4ef2d/apps/web/src/features/sandbox/standard-sizes.json) and
derives Small and Large from it; the installer applies the bundle's copy of the same
file. The database owns the saved values.

| Setting | Standard | Meaning |
| --- | --- | --- |
| `resources.cpus` | 2 | Whole vCPUs per sandbox, 1 through 255 |
| `resources.memory_mib` | Docker 2048, microsandbox 4096 | MiB per sandbox, 512 through 1048576 |
| `resources.root_disk_mib`, `environment_disk_mib` | microsandbox 8192 each | At least 1024 MiB; microsandbox only |
| `runtime` | The bundle's Runtime release | Source revision, exact image ID and manifest, and Runtime and firmware hashes; never a mutable tag |
| Idle suspension, snapshot retention | 300 and 86400 seconds | microsandbox only; fixed |

E2B takes no `runtime`, and Web sends no resources for it: Core adopts the CPU and
memory of the ready template build `template-id:build-uuid`, and supplied values must
match it. For an E2B-compatible service, enter both its HTTPS API origin and
sandbox data-plane domain in the setup wizard. Leaving both blank uses official
E2B. The API host must be the data-plane domain or one of its subdomains.
Changing either address requires draining the deployment in maintenance.
Docker has no separate disk quota.

Changing backend type or E2B team requires an explicit reset and a new setup.
Same-team E2B template, resource and key changes apply online through the Core API:
new allocations use the new generation, while existing sandboxes retain their
original specification. Omit the key to preserve it; explicitly submitting a key,
even the same value, verifies the replacement and advances the generation. Keep the
old key valid until the update succeeds. Initial setup requires a team-owned template.
If Core cannot verify the committed ownership anchor, reset the deployment before
setting it up again.

Docker and microsandbox size/Runtime edits advance the target generation online.
They require neither zero held resources nor node retirement or reenrollment.
Version 2 nodes prepare the target independently, while existing allocations and
suspended VMs retain their original generation. A qualified older serving generation
can still accept new Sessions when it has capacity, including while the target is
preparing or has failed. Target rollout and serving readiness are separate facts.
Use **System** → **Sandbox backend** → **Change resources** to edit the target;
**Nodes** owns node management and readiness.

Runtime generation coexistence and ownership-scoped garbage collection operate
within the installed node release. Existing Sessions retain their placement and history.
See the [nodes guide](/hosted-providers#change-the-sandbox-backend-or-size),
[operator reference](https://github.com/MiniMax-AI/parsar-core/blob/f6d258735fc601c521dd990e6f9e1ed261f4ef2d/services/agents-api/HOSTED-SANDBOX-MANAGER.md#removal-and-reset)
and [deployment contract](https://github.com/MiniMax-AI/parsar-core/blob/f6d258735fc601c521dd990e6f9e1ed261f4ef2d/contracts/agents-api/sandbox-deployment.md).
Configure the backend and sandbox size in **System** → **Sandbox backend**.
**Change resources** edits the deployment target; **Nodes** manages enrolled
machines and their readiness.

The [deployment contract](https://github.com/MiniMax-AI/parsar-core/blob/f6d258735fc601c521dd990e6f9e1ed261f4ef2d/contracts/agents-api/sandbox-deployment.md) owns
provider-specific fields, limits, Runtime identity and online change/reset rules.
The [node protocol](https://github.com/MiniMax-AI/parsar-core/blob/f6d258735fc601c521dd990e6f9e1ed261f4ef2d/contracts/agents-api/node-generation-protocol.md) owns
generation preparation and wire compatibility. This page does not maintain
another version table or set of provider rules.

Web proposes sizes from
[`standard-sizes.json`](https://github.com/MiniMax-AI/parsar-core/blob/f6d258735fc601c521dd990e6f9e1ed261f4ef2d/apps/web/src/features/sandbox/standard-sizes.json);
the installer uses the bundle's copy of that source. For operator steps, see
[changing the sandbox backend or size](/hosted-providers#change-the-sandbox-backend-or-size).

### Node capacity

Expand All @@ -210,23 +178,14 @@ node's own files can't change its capacity, size or Runtime.

### Default models

Each harness has at most one default model configuration:

- `model`: the provider's model ID;
- `model_provider`: the same bundle as `x_agents_core.model_provider` (`protocol`,
HTTPS `base_url`, write-only `api_key`, and for MiniMax Code `context_window` and
`max_output_tokens`);
- `harness_config`: optional native model parameters, `{}` by default.

Core encrypts the key with `secrets/credential.key` and never returns it. Set it in
Web or with `PUT /core/v1/harnesses/{harness}/model-configuration`.

Which Sessions use the default, and in what order it applies, is in
[Which model provider a Session uses](/user-guide#which-model-provider-a-session-uses).
Full rules: [model execution](https://github.com/MiniMax-AI/parsar-core/blob/f6d258735fc601c521dd990e6f9e1ed261f4ef2d/contracts/agents-api/model-execution.md#deployment-defaults).
Set a default in **System** → **Default model**, or use
`PUT /core/v1/harnesses/{harness}/model-configuration`. Core encrypts provider keys
with `secrets/credential.key` and does not return them.

The operator file `AGENTS_API_EXECUTION_OPTIONS_FILE` is retired; see
[installation version policy](/troubleshooting#installation-version-policy).
[Model execution](https://github.com/MiniMax-AI/parsar-core/blob/f6d258735fc601c521dd990e6f9e1ed261f4ef2d/contracts/agents-api/model-execution.md#deployment-defaults)
owns the request fields, replacement rules and applicable sources. The
[user guide](/user-guide#which-model-provider-a-session-uses) explains how to
choose a source for a Session.

## Secrets and identity

Expand Down
2 changes: 1 addition & 1 deletion apps/docs/content/docs/development.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -122,7 +122,7 @@ only helps you pick the right one.

Implement the shared `ExecutorFactory`, `Executor` and `Turn` interfaces in
[`agent/harness.go`](https://github.com/MiniMax-AI/parsar-core/blob/f6d258735fc601c521dd990e6f9e1ed261f4ef2d/apps/parsar-daemon/internal/agent/harness.go), register
the adapter and add a service profile. Follow the numbered steps in
the adapter and add its profile/configuration entry to the shared catalog. Follow the numbered steps in
[Harness onboarding](/harness-onboarding); qualification
evidence belongs in [Harness integration](https://github.com/MiniMax-AI/parsar-core/blob/f6d258735fc601c521dd990e6f9e1ed261f4ef2d/contracts/agents-api/harnesses.md).

Expand Down
Loading
Loading