Skip to content
Open
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
168 changes: 93 additions & 75 deletions profile/README.md
Original file line number Diff line number Diff line change
@@ -1,75 +1,93 @@
<div align="center">

# Basilisk Labs

**Infrastructure for long-range collaboration between people and autonomous agents.**

<p>
<a href="https://basilisk-labs.com"><img alt="Website" src="https://img.shields.io/badge/website-basilisk--labs.com-111827?style=for-the-badge"></a>
<a href="https://agentplane.org"><img alt="AgentPlane" src="https://img.shields.io/badge/project-AgentPlane-2563eb?style=for-the-badge"></a>
<a href="mailto:hello@basilisk-labs.com"><img alt="Email" src="https://img.shields.io/badge/contact-hello%40basilisk--labs.com-0f766e?style=for-the-badge"></a>
</p>

<p>
<img alt="Git-native" src="https://img.shields.io/badge/Git--native-111827?style=flat">
<img alt="Agent work" src="https://img.shields.io/badge/agent_work-evidence--first-2563eb?style=flat">
<img alt="Audit trail" src="https://img.shields.io/badge/audit_trail-reviewable-0f766e?style=flat">
<img alt="Open source" src="https://img.shields.io/badge/open_source-practical-7c3aed?style=flat">
</p>

</div>

Basilisk Labs builds tools for agentic software work that needs memory, coordination, and
accountability over time. Our current center of gravity is **AgentPlane**: an open-source audit
layer that turns coding-agent sessions into reviewable Git artifacts.

We are interested in systems where the important question is not just whether an agent produced a
diff, but whether a human or another agent can reconstruct the task, plan, approval, verification,
and closure chain later.

## Focus

| Area | What we build |
| --- | --- |
| Agent coordination | Repo-local workflows for planning, handoff, verification, and finish states. |
| Change evidence | Agent Change Records, task artifacts, signed catalogs, and reviewable traces. |
| Developer tooling | CLI-first tools that work with Codex, Claude Code, Cursor, Aider, and GitHub Actions. |
| Long-lived memory | Practices and infrastructure that preserve useful context without depending on chat history. |

## Projects

| Project | Status | Description |
| --- | --- | --- |
| [agentplane](https://github.com/basilisk-labs/agentplane) | Open source | Audit layer for coding agents. Keeps task, plan, verification, and closure evidence in Git. |
| [agent-change-record](https://github.com/basilisk-labs/agent-change-record) | Open standard | JSON schema and tooling for machine-readable evidence manifests for agent-authored changes. |
| [agentplane-recipes](https://github.com/basilisk-labs/agentplane-recipes) | Catalog | Signed recipes for reusable AgentPlane workflows and development practices. |
| [setup-agentplane](https://github.com/basilisk-labs/setup-agentplane) | CI | GitHub Action for installing AgentPlane inside CI runners. |
| [homebrew-tap](https://github.com/basilisk-labs/homebrew-tap) | Distribution | Homebrew tap for AgentPlane CLI releases. |
| [scoop-bucket](https://github.com/basilisk-labs/scoop-bucket) | Distribution | Scoop manifests for AgentPlane on Windows. |
| [agentplane-harbor-adapter](https://github.com/basilisk-labs/agentplane-harbor-adapter) | Experimental | Benchmark adapter for evaluating AgentPlane as a control-plane wrapper around coding agents. |
| [agentplane-marketing](https://github.com/basilisk-labs/agentplane-marketing) | Knowledge base | Public positioning, editorial, launch, and market-practice source documents for AgentPlane. |

## Principles

- Keep workflow evidence close to the code.
- Prefer explicit plans and verification over invisible agent state.
- Make artifacts useful to both humans and machines.
- Treat benchmarks, recipes, and integrations as evidence surfaces, not just growth assets.
- Build small, inspectable tools before adding hosted complexity.

## Start here

```bash
npm i -g agentplane
agentplane init
agentplane quickstart
```

Read the docs at [agentplane.org](https://agentplane.org) or start from the
[AgentPlane repository](https://github.com/basilisk-labs/agentplane).

## Contact

- Email: [hello@basilisk-labs.com](mailto:hello@basilisk-labs.com)
- Website: [basilisk-labs.com](https://basilisk-labs.com)
- AgentPlane: [agentplane.org](https://agentplane.org)
<p align="center">
<img src="./assets/basilisk-labs-header.svg" alt="Basilisk Labs GitHub profile header" style="width:100%;max-width:100%;">
</p>

<div align="center">

# Basilisk Labs

**Local-first infrastructure for inspectable autonomous-agent work.**

<p>
<a href="https://basilisk-labs.com"><img alt="Website" src="https://img.shields.io/badge/website-basilisk--labs.com-111827?style=for-the-badge"></a>
<a href="https://agentplane.org"><img alt="AgentPlane" src="https://img.shields.io/badge/project-AgentPlane-ff4d00?style=for-the-badge"></a>
<a href="https://github.com/basilisk-labs/agentplane/releases/tag/v0.6.2"><img alt="AgentPlane v0.6.2" src="https://img.shields.io/badge/AgentPlane-v0.6.2-18794e?style=for-the-badge"></a>
<a href="mailto:hello@basilisk-labs.com"><img alt="Email" src="https://img.shields.io/badge/contact-hello%40basilisk--labs.com-0f766e?style=for-the-badge"></a>
</p>

<p>
<img alt="Git-native" src="https://img.shields.io/badge/Git--native-evidence-111827?style=flat">
<img alt="Local-first" src="https://img.shields.io/badge/local--first-no_hosted_runtime-2563eb?style=flat">
<img alt="Agent Change Record" src="https://img.shields.io/badge/ACR-reviewable_manifest-7ea2ff?style=flat">
<img alt="Recipes" src="https://img.shields.io/badge/recipes-signed_catalog-6e56cf?style=flat">
</p>

</div>

Basilisk Labs builds open-source systems for agentic software work that must remain reconstructable
after the terminal session is gone. The center of gravity is **AgentPlane**: a Git-native workflow
control layer that records task intent, accepted plans, verification evidence, finish state, and
Agent Change Records beside the code.

The operating premise is simple: a pull request should show more than a diff. It should preserve
why the change exists, which policy bounded it, which checks ran, and what another human or agent
can audit later.

## Current work

| Surface | Repository | What it is |
| --- | --- | --- |
| Workflow control | [agentplane](https://github.com/basilisk-labs/agentplane) | CLI for task -> plan -> approve -> implement -> verify -> finish, with repo-local evidence and ACR. |
| Evidence standard | [agent-change-record](https://github.com/basilisk-labs/agent-change-record) | JSON schema and tooling for machine-readable manifests of agent-authored changes. |
| Reusable behavior | [agentplane-recipes](https://github.com/basilisk-labs/agentplane-recipes) | Signed recipe catalog for reusable coding-agent workflows, repo mapping, and development playbooks. |
| Blueprint catalog | [agentplane-blueprints](https://github.com/basilisk-labs/agentplane-blueprints) | Installable AgentPlane blueprints for verification routes and task execution patterns. |
| CI install path | [setup-agentplane](https://github.com/basilisk-labs/setup-agentplane) | GitHub Action for installing AgentPlane in CI runners from release assets. |
| Release channels | [homebrew-tap](https://github.com/basilisk-labs/homebrew-tap), [scoop-bucket](https://github.com/basilisk-labs/scoop-bucket) | Homebrew and Scoop distribution for the AgentPlane CLI. |
| Evaluation adapters | [agentplane-harbor-adapter](https://github.com/basilisk-labs/agentplane-harbor-adapter), [agentplane-bitgn-adapter](https://github.com/basilisk-labs/agentplane-bitgn-adapter) | Benchmark adapters for running AgentPlane as a reproducible coding-agent harness. |
| Research workspace | [openclaw-deus](https://github.com/basilisk-labs/openclaw-deus) | Experimental automation workspace for local agent workflow research and prototypes. |

## AgentPlane in one screen

```text
task -> plan -> approve -> implement -> verify -> finish
|
v
Agent Change Record
```

AgentPlane is not another coding agent. Claude Code, Codex, Cursor, Aider, and similar tools do the
editing. AgentPlane wraps that work in local lifecycle state, policy routing, verification notes,
and reviewable artifacts.

```bash
npm i -g agentplane
agentplane init
agentplane quickstart
```

Core surfaces:

- **ACR:** commit-safe JSON evidence for task intent, approved plan, commits, verification, and merge readiness.
- **Local context:** repository-owned memory through `context/raw`, `context/wiki`, sourced facts, graph data, and derived projections.
- **Workflow modes:** `direct` for local loops, `branch_pr` for task branches, worktrees, PR review artifacts, and integration flow.
- **Recipes and blueprints:** signed reusable behavior modules for repo mapping, agent profiles, prompts, and verification paths.
- **Distribution:** npm, Homebrew, Scoop, standalone release assets, and GitHub Actions setup.

## Principles

- Keep workflow evidence close to the code.
- Prefer explicit plans and verification over invisible agent state.
- Preserve local ownership: no hosted runtime is required for the core workflow.
- Make artifacts useful to both humans and machines.
- Treat benchmarks, recipes, and integrations as evidence surfaces, not just growth assets.

## Links

| Destination | Link |
| --- | --- |
| Website | [basilisk-labs.com](https://basilisk-labs.com) |
| AgentPlane docs | [agentplane.org](https://agentplane.org) |
| AgentPlane repository | [github.com/basilisk-labs/agentplane](https://github.com/basilisk-labs/agentplane) |
| Contact | [hello@basilisk-labs.com](mailto:hello@basilisk-labs.com) |

<sub>The header is generated by `node scripts/generate-profile-header.mjs` and checked with `node scripts/generate-profile-header.mjs --check`.</sub>
90 changes: 90 additions & 0 deletions profile/assets/basilisk-labs-header.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
117 changes: 117 additions & 0 deletions scripts/generate-profile-header.mjs
Original file line number Diff line number Diff line change
@@ -0,0 +1,117 @@
import { mkdir, readFile, writeFile } from "node:fs/promises";
import path from "node:path";
import { fileURLToPath } from "node:url";

const __filename = fileURLToPath(import.meta.url);
const __dirname = path.dirname(__filename);
const repoRoot = path.resolve(__dirname, "..");
const outputPath = path.join(repoRoot, "profile/assets/basilisk-labs-header.svg");
const checkMode = process.argv.includes("--check");

function renderGrid() {
const vertical = Array.from({ length: 15 }, (_, index) => {
const x = 40 + index * 80;
return `<line x1="${x}" y1="42" x2="${x}" y2="586" />`;
}).join("\n");

const horizontal = Array.from({ length: 8 }, (_, index) => {
const y = 42 + index * 72;
return `<line x1="40" y1="${y}" x2="1160" y2="${y}" />`;
}).join("\n");

return `${vertical}\n${horizontal}`;
}

function renderSvg() {
return `<svg xmlns="http://www.w3.org/2000/svg" width="1200" height="630" viewBox="0 0 1200 630" role="img" aria-labelledby="title desc">
<title id="title">Basilisk Labs GitHub profile header</title>
<desc id="desc">A Basilisk Labs header in the style of basilisk-labs.com, with an inspectable agent infrastructure message.</desc>
<defs>
<linearGradient id="paper" x1="0" y1="0" x2="1" y2="1">
<stop offset="0" stop-color="#fffefd"/>
<stop offset="0.52" stop-color="#fafaf7"/>
<stop offset="1" stop-color="#eceef4"/>
</linearGradient>
<linearGradient id="glass" x1="0" y1="0" x2="1" y2="1">
<stop offset="0" stop-color="#ffffff" stop-opacity="0.82"/>
<stop offset="1" stop-color="#f8f8f5" stop-opacity="0.56"/>
</linearGradient>
<filter id="softShadow" x="-20%" y="-20%" width="140%" height="140%">
<feDropShadow dx="0" dy="24" stdDeviation="26" flood-color="#111113" flood-opacity="0.12"/>
</filter>
</defs>
<rect width="1200" height="630" fill="url(#paper)"/>
<g stroke="#e6e4dd" stroke-width="1" opacity="0.92">
${renderGrid()}
</g>
<g stroke="#c7c4bc" stroke-width="1.1" opacity="0.72">
<path d="M120 90 L320 250 L520 90 L720 250 L920 90 L1080 220"/>
<path d="M120 500 L320 330 L520 500 L720 330 L920 500 L1080 390"/>
<path d="M320 250 L320 330"/>
<path d="M520 90 L520 500"/>
<path d="M720 250 L720 330"/>
<path d="M920 90 L920 500"/>
</g>
<g fill="#ff4d00">
<circle cx="520" cy="90" r="5"/>
<circle cx="720" cy="330" r="5"/>
<circle cx="1080" cy="390" r="5"/>
</g>
<g fill="#7ea2ff">
<circle cx="320" cy="250" r="4"/>
<circle cx="920" cy="500" r="4"/>
</g>
<g filter="url(#softShadow)">
<rect x="74" y="86" width="686" height="430" rx="22" fill="url(#glass)" stroke="#ffffff" stroke-width="1.2"/>
<rect x="74.5" y="86.5" width="685" height="429" rx="21.5" fill="none" stroke="#e6e4dd" stroke-opacity="0.55"/>
</g>
<g font-family="Inter, system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, sans-serif">
<text x="112" y="138" fill="#666a73" font-size="15" font-weight="650" letter-spacing="3">BASILISK LABS / GITHUB</text>
<text x="112" y="238" fill="#111113" font-size="72" font-weight="560" letter-spacing="-2.4">Inspectable work.</text>
<text x="112" y="318" fill="#111113" font-size="72" font-weight="560" letter-spacing="-2.4">Inspectable agents.</text>
<text x="112" y="384" fill="#666a73" font-size="25" font-weight="430">Open-source infrastructure for agent work, memory,</text>
<text x="112" y="420" fill="#666a73" font-size="25" font-weight="430">reviewable evidence, and local-first coordination.</text>
<g font-family="JetBrains Mono, Menlo, monospace" font-size="17" font-weight="600">
<rect x="112" y="456" width="158" height="38" rx="19" fill="#111113"/>
<text x="133" y="481" fill="#ffffff">AGENTPLANE</text>
<rect x="286" y="456" width="112" height="38" rx="19" fill="#f8f8f5" stroke="#d8d5cc"/>
<text x="308" y="481" fill="#111113">ACR</text>
<rect x="414" y="456" width="150" height="38" rx="19" fill="#f8f8f5" stroke="#d8d5cc"/>
<text x="436" y="481" fill="#111113">RECIPES</text>
<rect x="580" y="456" width="118" height="38" rx="19" fill="#fff4ed" stroke="#ffb18a"/>
<text x="602" y="481" fill="#c23b22">X-RAY</text>
</g>
</g>
<g font-family="JetBrains Mono, Menlo, monospace" fill="#111113">
<text x="850" y="148" font-size="14" letter-spacing="2">TRACE_CHAIN</text>
<text x="850" y="184" font-size="20">task -> plan -> verify</text>
<text x="850" y="224" font-size="14" letter-spacing="2" fill="#666a73">LOCAL_FIRST</text>
<text x="850" y="260" font-size="20">repo evidence, not chat drift</text>
<text x="850" y="300" font-size="14" letter-spacing="2" fill="#666a73">STATUS</text>
<text x="850" y="336" font-size="20" fill="#18794e">inspectable</text>
</g>
</svg>
`;
}

async function main() {
const svg = renderSvg();

if (checkMode) {
const current = await readFile(outputPath, "utf8");
if (current !== svg) {
console.error("Profile header artifact is stale.");
console.error("Run: node scripts/generate-profile-header.mjs");
process.exitCode = 1;
return;
}
console.log("Profile header artifact is fresh.");
return;
}

await mkdir(path.dirname(outputPath), { recursive: true });
await writeFile(outputPath, svg, "utf8");
console.log(`generated ${path.relative(repoRoot, outputPath)}`);
}

await main();