product directionDesigned for the agent to pilot
The product model puts harness hooks and skills at the entry point, so the agent itself can invoke the protocol, follow the run, and resume with context.
Durable orchestration piloted by the agent
Pajé was designed to be piloted by the agent itself through harness hooks and skills. It turns every change into a verifiable, repository-language-neutral workflow: the right context, isolated execution, human approval, and idempotent publication.
sha256:8d7a4e...bf31The agent pilots. Pajé sustains.
The harness preserves agent autonomy; Pajé provides a predictable contract for effects. Hooks and skills are the intended integration surface. Every action leaves evidence, and every retry knows where to continue.
product directionThe product model puts harness hooks and skills at the entry point, so the agent itself can invoke the protocol, follow the run, and resume with context.
any stackWorkflows are repository-language-neutral. Pajé happens to be implemented in Go, but Go-native positioning is inconsequential; the generic profile runs structured checks for any stack available in the worker image.
restart-safeEach phase persists its state. Retries resume the right work without relaunching the agent or duplicating effects.
Mem0 adapterThe agent receives relevant context by user and application. Worker credentials stay outside the execution.
content-addressedPatch, output, verification, and preflight become an immutable bundle authenticated by SHA-256.
artifact-boundThe human decision applies to one exact run and digest. If the artifact changes, the approval no longer applies.
idempotentBranch, commit, and pull request are reused only when every binding matches. No force-push.
Codex firstCodex is the first supported harness. The execution boundary is designed to support other harnesses in the future without changing the durable protocol.
code-change@v1
The agent starts and follows the work through the harness integration. Hatchet handles the queue, retries, and signals; Pajé owns the contract: state, context, artifacts, policy, and publication.
Resolve
Validates the input, reserves the idempotency key, and resolves the ref to an immutable commit.
Execute
Prepares an isolated worktree, retrieves memory, runs the agent, and verifies every selected module.
Approval
Pauses durably and waits for approval bound to the artifact's exact digest.
Publish
Reapplies and reverifies the bundle before creating or reusing a deterministic draft PR.
Finalize
Writes one outcome to memory and returns durable references for auditing.
Quick guide
The beta is a self-hosted worker. Codex is the first harness; the protocol was designed to support others in the future.
Prerequisites
Go 1.26+ is required only to develop Pajé, which happens to be implemented in Go; Go-native positioning is inconsequential. The target repository can use any language: include its toolchain in the worker image. For the beta, prepare Docker, Helm 3, Hatchet, and Codex authentication.
Installation
Build the image with an auditable revision and apply the chart after configuring separate Secrets.
bashgit clone https://github.com/araihu/paje.git
cd paje
PAJE_COMMIT="$(git rev-parse --verify 'HEAD^{commit}')"
docker build \
--build-arg CODEX_VERSION=0.144.5 \
--build-arg PAJE_COMMIT="$PAJE_COMMIT" \
-t ghcr.io/your-org/paje:beta .
helm upgrade --install paje ./charts/paje \
--namespace paje --create-namespace \
--values values.production.yamlFirst run
Today, start paje-code-change-v1 in Hatchet. The intended integration will move this trigger into harness hooks and skills. Use profile: generic with explicit checks and the toolchain present in the image. The go profile is only a convenience for module discovery and test defaults.
json{
"run_id": "73f659b2-eaee-4c37-8784-48fab274b3e8",
"input": {
"idempotency_key": "client-timeout-20260725",
"task_description": "Increase the client timeout and update the tests.",
"repository_uri": "https://github.com/example/service.git",
"base_ref": "main",
"memory_query": "HTTP client conventions",
"memory_limit": 5,
"tags": {
"user_id": "operator@example.com",
"app_id": "service"
},
"profile": "generic",
"checks": [
{
"name": "test",
"executable": "npm",
"args": [
"test"
],
"timeout": "10m",
"required": true
}
],
"publication": {
"mode": "artifact"
}
}
}Publication
To create a draft PR, use publication.mode: pull_request. The approval phase waits for the event paje:approval:<run-id> with the same run and digest. If anything changes, the decision is not reused.
Security through boundaries
Hatchet, Mem0, and GitHub credentials never enter the agent environment. Publication happens in a new trusted bare repository after repository-controlled code has been verified.
Read guarantees and conflict behaviorservice credentialsDocumentation
01 / Use
02 / Operate
03 / Deploy
04 / Understand
Today Pajé provides the typed code-change@v1 template, the Codex runner as the first harness, Hatchet triggering, artifact or GitHub draft PR mode, and one replica. Agent-side hooks and skills and other harnesses will be supported in the future. Automatic merge, arbitrary YAML, releases, and multiple replicas are outside this beta.
The agent pilots through hooks and skills.
Pajé makes the journey durable.