@runecraft/spawnSpawn tmux integration: automatically opens subagent panes and renders real-time agent execution with smart layouts
1
77
11 in 7 days
33.3
Multi-signal model
21 days ago
2026-07-29
Install and configure
opencode.jsonWrites to this project's opencode.json — applies to this repository only.
opencode.json
{
"$schema": "https://opencode.ai/config.json",
"plugin": ["@runecraft/spawn@0.0.6"]
}Writes to ~/.config/opencode/opencode.json — applies to every project.
~/.config/opencode/opencode.json
{
"$schema": "https://opencode.ai/config.json",
"plugin": ["@runecraft/spawn@0.0.6"]
}If you want to modify the plugin locally, install it into the project and reference the local path.
shell
pnpm add -D @runecraft/spawnopencode loads npm dependencies through its embedded runtime on startup and caches them locally — no manual global install needed.
Artifacts
Five independent packages, each installable on its own — none of them require the others.
| Artifact | Package | What it does | Status |
|---|---|---|---|
| Spells | @runecraft/spells |
17 SKILL.md files AI agents load as specialized instructions |
Published |
| Summon | @runecraft/summon |
Interactive CLI that installs Spells (and other tools) into any project | Published |
| Runes | @runecraft/runes |
OpenCode plugin giving agents durable, SQLite-backed, per-repo memory | Published |
| Guild | @runecraft/guild |
OpenCode plugin: 8 RPG-themed agents, workflows, and orchestration hooks | Published |
| Spawn | @runecraft/spawn |
OpenCode plugin that opens a live tmux pane for every subagent | Published |
| Grimoire | @runecraft/grimoire |
Shared Biome + TypeScript configs, inherited by every package above | Internal |
| Familiar | @runecraftai/familiar |
Internal Pi multi-agent runtime — private, not published | Internal |
What this is
Arcanum is the monorepo behind the Runecraft family of OpenCode tooling. It's a Bun workspace, not a framework: each package above ships and versions independently on npm, and picking one doesn't pull in the rest.
Why five separate packages
Memory, orchestration, skill definitions, installation, and terminal visibility are different concerns with different lifecycles — Runes changes on a different cadence than Spawn, and a user who only wants persistent memory shouldn't have to install an 8-agent orchestration layer to get it. Splitting them keeps each package's surface area small enough to reason about, test, and version on its own.
How it works
- Bun workspaces link
packages/*together for local development; published packages resolveworkspace:*to real semver ranges viabun pm pack. - Turborepo v2 orchestrates
build/lint/testacross packages with caching and dependency-aware ordering. - Conventional commits → Changesets: a commit like
feat(runes): add stats toolis turned into a changeset automatically by.changeset/generate-from-commits.ts, which drives the version bump and changelog on release..changeset/*.mdfiles are never hand-authored. - Biome, configured once in
@runecraft/grimoireand inherited by every other package, enforces one lint/format standard monorepo-wide.
How to use
Working in this monorepo:
bun install
bun run build
Common commands:
bunx turbo lint
bunx turbo test
bunx turbo build
Using one artifact in your own project — you don't need this repo at all, just install the package:
npx @runecraft/summon install # browse and install skills
Each package's own README (guild, runes, spells, summon, spawn) has the full install and usage instructions for that artifact specifically.
Contributing
See CONTRIBUTING.md for the changeset-free commit workflow (changesets are generated from conventional commits, not written by hand) and the automated release pipeline. Architecture notes live under .specs/.