dotfiles my AI-agent setup and Linux workstation, as code In use
One rules file, every harness.
I run several AI coding agents at once, in Claude Code, OpenCode and DSH (a DeepSeek harness). Their rules, skills, agents and settings are written once, and one command renders them into the format each harness reads.
Compare your harnesses with mine (writes nothing)
git clone https://github.com/spy4x/dotfiles && cd dotfiles && deno task ai --checkOnly deno task install-all installs my setup: it adds my apps and replaces your shell configuration.
Where each file goes
AGENTS.md
- Claude Code
CLAUDE.md- OpenCode
AGENTS.md- DSH
AGENTS.md
skills/<name>/ (SKILL.md + files)
- Claude Code
skills/<name>/- OpenCode
skills/<name>/ and/or commands/<name>.md- DSH
skills/<name>/
agents/<name>.md
- Claude Code
agents/<name>.md- OpenCode
agents/<name>.md- DSH
.agent-presets/<name>/{preset,agent.cordis}.yml
settings/<harness>/**
- Claude Code
settings.json merged- OpenCode
opencode.json, tui.json merged- DSH
settings.yaml merged, profiles/web/* copied
mcp.jsonc
- Claude Code
mcpServers in ~/.claude.json, merged- OpenCode
mcp in opencode.json, merged- DSH
not rendered
--check answers one question: is what the harnesses read on this machine the same as what is committed here?
The AI-agent setup
One rules file, every harness
ai-harnesses/AGENTS.md holds the global rules: autonomy, Git flow, secrets, cleanup, subagent orchestration. It becomes Claude Code's CLAUDE.md and OpenCode's and DSH's AGENTS.md, byte for byte.
Agents and skills, written once
The agents and skills in one harness-neutral format. Validated frontmatter picks a model tier and effort per agent; each adapter renders its harness's format, covered by golden tests.
A reviewer gate
A separate, read-only reviewer runs the checks itself, breaks the code to prove each test goes red, and counts every claim in the PR body. Its verdict is what authorises a merge.
Nothing left running
tools/sweep-orphans.sh lists the processes and stale systemd-run scopes an agent session left behind, and the anonymous Docker volumes and networks no container uses, and stops exactly those on request. The rules cap the processes and memory of anything that spawns processes, and give every wait a deadline.
Costs you can see
tools/session-cost.ts reports each session's and subagent's cost, peak context and compactions from Claude Code's transcripts.
Secrets stay local
Committed env files are age-encrypted one value per line, and tools/env-key-copy.ts gives a worktree its key without the key ever being printed.
The workstation
- Apps. install-apps.ts installs everything in apps.jsonc with dnf, apt or zypper, and falls back to Flatpak.
- Claude Desktop. tools/claude-desktop-update.sh installs or updates the app from Anthropic's Debian package, which Fedora has no updater for.
- Secrets backup. tools/secrets-backup.sh backs up the age keys and plaintext env files that Syncthing keeps on this machine, with restic, every night.
- Shell. install-shell.ts sets up Zsh, Oh My Zsh, Powerlevel10k and the aliases in aliases.sh.
- Config in home. tmux, Neovim, Zsh and the prompt are symlinked from this repository.
- Limits for many agents. system/ raises inotify instances and zram swap, cleans /tmp sooner, and caps the tasks each app can start.
- VPN only while it works. tools/vpn-guard/ connects a full-tunnel VPN at boot and every 30 minutes, and drops it when the internet does not work through it.
- Synced, not cloned. The repository lives in a Syncthing folder, and agent worktrees are ignored so they never replicate.
Where it stands
This is how I run AI agents on real work, on my own machine. It is that machine's live config: a merged change is not done until it is applied there.
What is not built yet is on the open issues.
Use it if
- You want a working example of one rules source driving several AI coding agents.
- You want a Linux workstation set up by script.
Skip it if
- You want a framework: these are my own settings, not a configurable product.
Two ways to use it
Use it yourself
The code is on GitHub under the MIT licence.
Compare your harnesses with mine (writes nothing)
git clone https://github.com/spy4x/dotfiles && cd dotfiles && deno task ai --checkHave me build it
Need something like this for your team? That's my day job.
More tools
caldav-mcp
MCP server that lets AI assistants read and write CalDAV events and tasks.
In usets-libs
tested TypeScript building blocks for web-standards back ends.
Readypreact-components
server-rendered Preact and Tailwind components.
The design system, the component styling and the original markup are by Eirene. Eirene on GitHub · isorokina.com
Beta
