Ante is a self-contained coding agent that runs in a terminal and can be configured with a user-defined profile and system prompt. It is intended for coding assistance across different models and can also serve as a core for custom agent harnesses. The catalogue includes one skill for use with Ante.
Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx agentmods add skills/antigmalabs/ante/harbornpx skills add AntigmaLabs/ante --skill harborgit clone --depth 1 https://github.com/AntigmaLabs/anteWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/antigmalabs/ante/harbor)<a href="https://agentmods.dev/skills/antigmalabs/ante/harbor"><img src="https://agentmods.dev/badge/skills/antigmalabs/ante/harbor.svg" alt="Measured on agentmods" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5 | $0.00051 | $0.00606 |
| Opus 5 | $0.00026 | $0.00303 |
| Sonnet 5 | $0.00010 | $0.00121 |
| Haiku 4.5 | $0.00005 | $0.00061 |
Grade A, and why
harbor scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 5d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
What it actually says
Run Harbor with Ante
Run Harbor with Ante as the agent. The adapter (ante_agent.py) lives in the ante-harbor/ directory of the ante repo. Harbor imports it and installs Ante inside each task sandbox from the published install script.
Prerequisites
- A checkout of AntigmaLabs/ante, for
ante-harbor/ - uv with Python 3.12
- Docker running: Harbor executes each task in a container
- The provider API key exported in the shell
Run
Resolve the model and provider from the user's request. From the repo's ante-harbor/ directory (so ante_agent:AnteAgent is importable):
uv run --python 3.12 --with harbor harbor run \
--agent ante_agent:AnteAgent \
--model "<model_name>" \
--ak provider=anthropic \
--ak install_args= \
--ae 'ANTHROPIC_API_KEY=${ANTHROPIC_API_KEY}' \
--dataset terminal-bench/terminal-bench-2-1 \
--n-attempts 1
Adjust for the request:
providerselects which key Ante reads inside the sandbox. Foropenaiorgemini, forwardOPENAI_API_KEYorGEMINI_API_KEYwith--aeinstead.install_argspicks the Ante build installed in each sandbox: empty for the latest release, or a version to pin.- Scope: add
-i <task-id>(repeatable) to run specific tasks. Smoke-test one task before a full run unless the user asks otherwise. - Throughput:
--n-concurrent <n>caps parallel sandboxes.--n-attempts <n>sets attempts per task; published leaderboard runs use 5. - Custom endpoint: add
--ae 'MODEL_BASE_URL=${MODEL_BASE_URL}'when routing through a proxy.
Read results
Harbor prints a per-task summary and writes a run directory with per-trial output; each trial captures Ante's raw event log from /logs/agent/ante.txt. Task failures do not make harbor exit non-zero, so judge the run by the summary, not the exit code.
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 5d ago First seen · 48 lines · 51 tokens per session scan A 6cdd93d194f6
harbor is a skill published in the GitHub repository AntigmaLabs/ante (1,929 stars, last pushed today), licensed Apache-2.0. It adds 51 tokens to every session and 606 once invoked, about $0.0003 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.
Other skills, from other repositories
vigilante-issue-implementation-on-rust
Implement a GitHub issue end-to-end when Vigilante dispatches work for a Rust repository with Cargo, Clippy, fmt, and security guidance.
tauri2-react-rust
Guides development of cross-platform desktop apps with Tauri 2, TypeScript, React, and Rust. Use when building Tauri apps, implementing IPC, designing Rust backend or TypeScript/React frontend, when researching or cloning a website (open site, snapshot elements), when verifying local dev or built frontend in browser…
Shell Execution
Keeps explicit shell work legible, bounded, and attached to the current workspace thread.
dry-philosophy
Don't Repeat Yourself (DRY) and Never Reinvent the Wheel (NRtW) - core b00t principles. Use existing libraries, leverage Rust via PyO3 instead of duplicating logic in Python, and contribute to upstream projects rather than fork privately.
b00t-interface-library
Design and implement a Rust interface library in l3dg3rr that acts as a feature-configurable lifecycle manager for b00t processes. The library compliantly implements init → operate → terminate → lifecycle maintenance of miscellaneous process surfaces (MCP servers, daemons, sidecars) with deterministic governance…
chalk-interner
The Chalk Interner pattern separates a type handle from its open form using a trait. Ty (I::InternedTy) is the handle; TyKind is the open enum with all variants. The Interner trait bridges them with internty() and tydata() — consumers only see Ty and call .data(), never choosing the storage strategy. The embedder…