Installation
The archmax harness requires Node.js 22 or later and ships as an ESM-only npm package.
Install the package
Section titled “Install the package”npm install @archmax-ai/harnessThis installs the runtime library and the archmax CLI.
For hacking on the SDK itself, see development setup.
The authoring skill
Section titled “The authoring skill”The authoring skill is the Agent Skill that coding agents (Claude Code, Cursor,
Codex, …) use to author workflow.yaml workspaces and wire the runtime. Install
it with the skills CLI:
npx skills add archmax-ai/harnessThat installs the latest version from the GitHub repository. Add -g to install
it for your user rather than the current project.
The package also ships the skill inside the install, so it always matches the
SDK version you depend on. After npm install, install the packaged copy:
npx skills add ./node_modules/@archmax-ai/harnessnpx skills experimental_sync does the same for every skill-bearing package in
node_modules. The package ships the skill at skills/archmax-harness/ for
these installers.
To load it in your own agent, point skills middleware at the exported constant:
import { BUNDLED_AUTHORING_SKILL_DIR } from "@archmax-ai/harness";// <BUNDLED_AUTHORING_SKILL_DIR>/archmax-harness/SKILL.md (+ references/)Configure the model
Section titled “Configure the model”The model is configured from environment variables, and it targets any OpenAI-compatible endpoint (OpenRouter, vLLM, LiteLLM, Together, …). These five are what a first run needs:
| Variable | Description | Example |
|---|---|---|
ARCHMAX_API_BASE_URL |
Base URL of the OpenAI-compatible API | https://openrouter.ai/api/v1 |
ARCHMAX_API_KEY |
API key for the endpoint | sk-or-v1-... |
ARCHMAX_MODEL |
Model identifier | anthropic/claude-sonnet-4.6 |
ARCHMAX_TEMPERATURE |
(optional) sampling temperature | 0 |
ARCHMAX_MAX_TOKENS |
(optional) max output tokens | 4096 |
Under the hood this builds a ChatOpenAI instance pointed at
ARCHMAX_API_BASE_URL, and Deep Agents uses it as its model.
Prompt caching, streaming and token pricing have their own variables. The configuration reference lists the full set.
.env is loaded from the workspace root. That is the directory passed via
--root (or rootDir), or the current working directory. Variables already
present in the real process environment always win.
cp .env.example .env # then fill in your credentialsTo supply a model programmatically instead, see the
public API reference. Any LangChain
BaseChatModel works, including per-role factories.