`company_skills.markdown` stored the full SKILL.md body. The on-disk
file under `profile/skills/{companyId}/{slug}/SKILL.md` is what pi-
coding-agent actually reads via `loadSkills` at runtime. The DB column
was a duplicate — import wrote to both, renderer read from DB. Any
discrepancy between disk and DB was invisible until the agent behaved
differently from what the user saw in SkillDetail.
Disk becomes the single source of truth. DB keeps name / description /
metadata / source info / file inventory — the cheap lookup row. UI reads
SKILL.md content live via a new IPC channel.
## Migration v37 (rebuild company_skills without markdown)
Table-rebuild pattern matching v35/v36: `fn:` form, PRAGMA walk for
drift columns, row-count assertion before DROP, `defer_foreign_keys`
for the `agent_skill_assignments(skill_id)` reference. Indexes
recreated. Idempotent via `schema_migrations` ledger.
Existing DB rows' markdown content is discarded — but the on-disk
SKILL.md files are the authoritative copy, so no user-visible data
loss. Any agent using those skills keeps working; the UI just starts
reading from disk instead of the DB cache.
## Code changes
- `src/main/database/skills.ts`: drop `markdown` from read mapping,
upsert input type, INSERT column/bind list, ON CONFLICT DO UPDATE.
- `src/shared/types/records-core.ts`: `SkillRecord.markdown` removed.
- `src/main/skills/import.ts` + `import-github.ts`: drop `markdown:`
from 4 `saveCompanySkill` call sites. Disk-write via
`materializeSkillFiles` unchanged (it's what the file agent reads).
- `src/main/skills/index.ts`: expose `skillFilesDir` for the new IPC
handler to resolve `${profile}/skills/${companyId}/${slug}/SKILL.md`.
- `src/shared/contracts/channels.ts` + `schemas-execution.ts` +
`desktop-api/skills.ts`: new `getSkillMarkdown` channel
`{ companyId, slug } → DesktopResult<string>`.
- `src/preload/index.ts`: expose `getSkillMarkdown(companyId, slug)`.
- `src/main/ipc-skill-handlers.ts`: handler validates schema, ensures
company, resolves path, `readFile`, returns content. Fails closed
with `SKILL_NOT_FOUND` on ENOENT, `SKILL_READ_FAILED` on other
read errors.
- `src/renderer/components/skills/SkillDetail.tsx`: `useEffect` fetches
markdown via IPC when the skill detail loads; shows "Loading…" until
resolved, surfaces read errors. Preserves `stripFrontmatter`.
- Tests: drop `markdown:` from 2 fixture sites
(`skill-types.test.ts`, `skill-aware-assignment.spec.ts`).
## Verification
- typecheck / lint / 578 tests green
- `grep 'skill\.markdown' src/` → 0 DB-record reads
- `grep '\.markdown\b' src/main/database/skills.ts` → 0
- Remaining `.markdown` references are all `ghSkill.markdown` (GitHub
fetcher's intermediate struct feeding `materializeSkillFiles` to
disk) and parameter names in `stripFrontmatter(markdown: string)` /
fs-writer helpers — none read from a DB row.
AgentCompany
Launch autonomous AI companies from your desktop.
Set a goal. Watch AI agents self-organize, delegate, and deliver.
PLEASE USE A CODING PLAN, IT COMSUMES A LOT OF TOKENS
I will add support for Ollama and Github Copilot in the near future.
Download | Website | Features | Quick Start
What is AgentCompany?
AgentCompany is a cross-platform desktop app that turns a single goal into a coordinated AI team. You provide a company name, description, and mission. A CEO agent self-organizes departments, delegates tasks, and produces deliverables — code, content, research, business plans, and more — while you observe and approve through a chat-based command hub. Inspired by Paperclip
Supported AI Runtimes
| Runtime | Status |
|---|---|
| Claude Code | Ready |
| Codex CLI | Ready |
| Gemini CLI | Ready |
Features
Self-Organizing Teams
Your AI CEO builds the org chart — recruiting specialists, creating departments, and establishing reporting lines from a single goal.
Real-Time Agent Communication
Agents coordinate through channel and direct-message threads. Watch decisions unfold in real time.
Autonomous Task Management
Goals break down into tasks automatically. Agents pick up work, report progress, and escalate blockers without intervention.
Human-in-the-Loop Approvals
Critical decisions surface for your review. Approve, reject, or redirect — your company respects the chain of command.
AI Document Generation
Agents draft business plans, marketing strategies, and technical specs — stored in a shared document center.
One-Click Company Creation
Name it, describe the mission, connect a runtime, and launch. Agents start working in under a minute.
Quick Start
Download
Grab the latest release for your platform:
Available for macOS (Apple Silicon & Intel), Windows, and Linux.
Build from Source
# Prerequisites: Node.js 22+, pnpm 10+
pnpm install
pnpm dev
Verification
pnpm typecheck
pnpm lint
pnpm test:unit
pnpm test:integration
pnpm test:e2e
pnpm build:verify
Packaging
pnpm build # Compile + package for current platform → /build/release
pnpm build:dir # Compile + unpackaged directory
pnpm build:current # Build for current host platform (see note below for other OS)
pnpm release:local # Signed/uploading release pipeline (see docs/release/local-r2.md)
- Targets: macOS (
.dmg), Windows (.exe/ NSIS), Linux (.AppImage) - Packaging uses
electron-builder - Local builds use ad-hoc signing (
CSC_IDENTITY_AUTO_DISCOVERY=false) - Defaults to
--publish never; override withAGENTCOMPANY_ELECTRON_PUBLISH - Cloudflare R2 release hosting + auto-update pipeline:
docs/release/local-r2.md
Architecture
src/
main/ # Electron main process — database, services, IPC, orchestration
preload/ # Context-isolated bridge — DesktopApi via contextBridge
renderer/ # React 19 UI — components, hooks, i18n
shared/ # Contracts, types, Zod schemas shared across processes
packages/
adapter-utils/ # Shared adapter utilities
adapter-claude-local/
adapter-codex-local/
adapter-gemini-local/
Key Design Decisions
- Local-first: SQLite database, secrets in OS keychain, no external services required
- Security:
contextIsolation: true,nodeIntegration: false, Zod-validated IPC, JWT agent tokens - Agent coordination: Agents delegate tasks, escalate blockers, and produce deliverables through the orchestration runtime
Tech Stack
| Layer | Technology |
|---|---|
| Framework | Electron 39.8.0 |
| Runtime | Node.js 22+ |
| Language | TypeScript 5.9 (strict) |
| UI | React 19, Tailwind CSS 4, Framer Motion |
| Build | electron-vite, Vite 7, electron-builder |
| Database | SQLite (WAL mode, schema in src/main/database/) |
| Validation | Zod 4 |
| Testing | Vitest, Playwright |
License
Built with quiet authority. Ship your AI company.






