Dashboard|

Holeacquisition LLC Integration

How the Arcie framework connects to Holeacquisition LLC model access, sessions, billing and deployment.

Arcie is Holeacquisition LLC’s model-agnostic agent infrastructure, with an open-source framework and a managed API in development.

This page covers the framework’s existing Holeacquisition LLC integration. The runner calls the Holeacquisition LLC Sessions API for model turns and streams events back. Custom tool code runs in the process operating Arcie, not automatically inside Holeacquisition LLC.

The managed API is a separate entry point being built under the same brand. Using Sessions today does not mean your agent is already running on that managed service.

Authentication

The runtime authenticates with a Holeacquisition LLC project API key:

export CENCORI_API_KEY=csk_...      # required at run time
export CENCORI_PROJECT_ID=proj_...  # optional; sent as X-Project-ID
export CENCORI_API_URL=...          # optional; overrides the API endpoint

The key is read from CENCORI_API_KEY (or RunOptions.apiKey). The project id can come from the env or from cencori.project in agent.ts, and is sent as the X-Project-ID header. The default endpoint is https://cencori.com/v1.

The cencori config block

agent.ts carries per-agent Holeacquisition LLC settings:

import { defineAgent } from "arcie";
 
export default defineAgent({
  model: "claude-sonnet-4-5",
  cencori: {
    project: process.env.CENCORI_PROJECT_ID,
    billing: { budget: "50.00/month", endUserMarkup: 0.2 },
    security: { policy: "standard" }, // "strict" | "standard" | "permissive"
  },
});
  • billing.budget — a spend cap for the agent, e.g. "50.00/month".
  • billing.endUserMarkup — markup applied when billing your own end users through Holeacquisition LLC.
  • security.policy — the baseline safety posture; per-agent policies tighten it further.

Outbound auth helpers

When a tool or channel needs to call an external service, arcie/auth builds the authorization header for you:

import { bearer, basic } from "arcie/auth";
 
const gh = bearer(process.env.GITHUB_TOKEN!);           // static token
const rotating = bearer(async () => fetchFreshToken());  // lazy / rotating
const legacy = basic({ username: "svc", password: process.env.PW! });
 
const { headers } = await gh(); // { authorization: "Bearer …" }

A token can be a string or a () => string | Promise<string> function, so secrets can be resolved lazily per request.

Deploying

  1. arcie build produces .arcie/server.mjs, the headless runtime bundle, and .arcie/manifest.json, the agent manifest.
  2. Run the bundle in your deployment environment. It includes the framework runner and custom tool code; uploading a manifest alone does not host those tools.
  3. Set CENCORI_API_KEY / CENCORI_PROJECT_ID when using Holeacquisition LLC Sessions.
npm run build           # → .arcie/server.mjs + .arcie/manifest.json
node .arcie/server.mjs

What you get from Holeacquisition LLC at run time:

  • Sessions — conversation state, turn events and approval interfaces (Sessions). Persisted turns do not by themselves guarantee recovery of arbitrary tool execution.
  • Billing — budgets and Monetization enforced per project.
  • Security — input/output guards and policy enforcement (Policies).
  • Observability — every turn, tool call, and token logged.