Skip to content

andreivcodes/dotfiles

Repository files navigation

Dotfiles

Personal macOS configuration files and development environment setup.

Quick Start

git clone https://github.com/andreivcodes/dotfiles.git ~/git/dotfiles
cd ~/git/dotfiles
./setup.sh

What's Included

  • Brewfile: Declarative package management for Homebrew CLI tools and apps
  • Shell Configuration: Performance-optimized .zshrc with lazy loading
  • AI CLI Configuration: Shared Codex, Claude Code, and Pi setup
  • Shared Agent Rules & Skills: One canonical instructions file, synced repo skills, and preserved external skill installs
  • Development Environment: Node.js (via NVM), Rust, Bun, and essential CLI tools
  • Installation Scripts: Automated setup and symlink management

Repository Structure

dotfiles/
├── README.md
├── Brewfile
├── setup.sh
├── installers/
│   ├── all.sh
│   ├── ai-tools.sh
│   ├── brew.sh
│   ├── dev.sh
│   ├── dock.sh
│   ├── mcp-env.sh
│   └── timemachine-exclude.sh
├── dotfiles/
│   ├── dotfiles.sh
│   ├── .zshrc
│   ├── agents/
│   │   ├── AGENTS.md
│   │   └── skills/
│   ├── codex/
│   │   └── config.toml
│   ├── pi/
│   │   ├── mcp.json
│   │   ├── models.json
│   │   └── pi-acp-zed.sh
│   ├── asimeow/
│   │   └── config.yaml
│   ├── claude/
│   │   ├── mcp.json
│   │   ├── settings.json
│   │   └── statusline.sh
│   └── zed/
│       └── settings.json
├── preferences/
│   └── system.sh
└── lib/
    └── utils.sh

Installation

Prerequisites

  • macOS (tested on macOS 15.2+)
  • internet access for Homebrew, npm, git, and installer downloads

Full Setup (Recommended)

git clone https://github.com/andreivcodes/dotfiles.git ~/git/dotfiles
cd ~/git/dotfiles
./setup.sh

This will:

  • Install all Homebrew packages and applications
  • Set up Node.js, Bun, and Rust development environments
  • Install Codex, Claude Code, Pi, Pi ACP, Claude Desktop, T3 Code, Agent Browser, Railway CLI, and Vercel CLI
  • Prompt for MCP API keys used by the shared AI tool configs
  • Configure macOS system preferences
  • Create symlinks for shell, editor, and shared AI CLI configs
  • Configure Dock layout
  • Set up Time Machine exclusions for development directories

Time Machine Exclusions

The dotfiles setup installs asimeow, links the repo-managed config to ~/.config/asimeow/config.yaml, runs an immediate exclusion pass, and then starts the native Homebrew service for ongoing scans.

The managed config intentionally keeps automatic roots outside privacy-protected locations like ~/Desktop, ~/Documents, and ~/Downloads. Background services are less reliable there on modern macOS, so the defaults focus on common unprotected dev roots and keep the scheduled setup predictable.

Defaults are:

  • ~/git
  • ~/src
  • ~/code
  • ~/dev
  • ~/work

User-level dependency caches are also registered directly as exclusions outside the asimeow work roots. The installer resolves the actual cache locations where possible and excludes them directly. Examples include:

  • ~/Library/Caches
  • npm cache
  • pnpm store
  • Bun global cache
  • Cargo registry and git caches
  • Go build and module caches
  • pip and uv caches
  • Gradle caches and wrapper distributions
  • Maven local repository
  • Yarn cache

To change automatic roots or rules, edit the repo-managed config at dotfiles/asimeow/config.yaml and resync dotfiles:

bash dotfiles/dotfiles.sh
bash installers/timemachine-exclude.sh

asimeow itself scans on the schedule provided by its Homebrew service, which is currently every 6 hours upstream.

Partial Setup

bash installers/brew.sh
bash installers/dev.sh
bash installers/ai-tools.sh
bash installers/mcp-env.sh
bash preferences/system.sh
bash dotfiles/dotfiles.sh
bash installers/dock.sh
bash installers/timemachine-exclude.sh

Key Features

Shell Configuration

  • Lazy loading for nvm, cargo, and rustup
  • 100k command history with deduplication and sharing across sessions
  • Git aliases for common workflows
  • Daily completion cache refresh for faster shell startup
  • Minimal Claude wrapper that injects the repo-managed MCP config
  • Pi ACP wrapper that resolves the npm-installed adapter reliably from Zed

AI CLI Configuration

This repo manages shared config files for three CLI tools:

  • Codex: ~/.codex/config.toml, ~/.codex/AGENTS.md
  • Pi: ~/.pi/agent/mcp.json, ~/.pi/agent/models.json, ~/.pi/agent/AGENTS.md, ~/.pi/agent/pi-acp-zed.sh
  • Claude Code: ~/.claude/settings.json, ~/.claude/CLAUDE.md, ~/.claude/mcp.json, ~/.claude/statusline.sh
  • Claude Desktop MCP: merged from ~/.claude/desktop-mcp.json into ~/Library/Application Support/Claude/claude_desktop_config.json

Usage is plain:

codex
pi
claude

Authentication is also plain:

codex login
claude auth login
pi
# then run /login inside pi, or export your provider API key

The repo only manages stable config files and shared skill infrastructure. Auth, sessions, Pi package state, and other mutable runtime state stay in the tools' native user locations. Any old ~/.codex-profiles or ~/.claude-profiles directories are no longer used by this repo.

During setup, installers/mcp-env.sh prompts for CONTEXT7_API_KEY, EXA_API_KEY, UIDOTSH_TOKEN, and NEURALWATT_API_KEY and writes them to ~/.zshrc.local.

Pi defaults to the repo-managed NeuralWatt provider in ~/.pi/agent/models.json, using model glm-5.2, defaultThinkingLevel xhigh, and NEURALWATT_API_KEY from the local shell environment.

Shared MCP coverage includes context7, gh_grep, exa, vercel, and Figma's remote MCP server across the managed agent surfaces. Codex keeps the curated Figma plugin enabled for the Codex app and also has the remote MCP endpoint in ~/.codex/config.toml; Claude Code uses Figma's official Claude plugin so it gets both MCP settings and Figma skills; Claude Desktop uses a stdio-compatible mcp-remote bridge merged into the app config; Pi uses pi-mcp-adapter with OAuth support in ~/.pi/agent/mcp.json; and Zed uses a native context_servers.figma entry that is also forwarded to external agents over ACP. Codex, Claude Code, and Pi also expose the portable local MCP servers kicad, kipilot, and uidotsh; the Codex desktop node_repl server is intentionally not mirrored because it depends on Codex app internals. The Pi config stores ${CONTEXT7_API_KEY} placeholders plus EXA_API_KEY and UIDOTSH_TOKEN references, not the secrets themselves.

Shared Skills

  • Repo skills placed under dotfiles/agents/skills are linked into the shared skills directory at ~/.agents/skills
  • Skills installed separately, including skills.sh symlink installs, are preserved during sync
  • Codex and Claude Code native skill directories are linked to that shared location
  • Pi auto-discovers ~/.agents/skills directly, and installers/ai-tools.sh also records that shared path in Pi's mutable settings.json
  • One canonical rules file in dotfiles/agents/AGENTS.md is linked into each tool's documented shared config location

Because ~/.codex/skills and ~/.claude/skills both point at the same shared directory, and Pi reads ~/.agents/skills directly, global skills.sh installs done as symlinks stay compatible with this repo's setup.

Browser Automation

agent-browser is installed through Homebrew on macOS:

brew install agent-browser
agent-browser install

The first command installs the CLI. The second downloads Chrome for Testing, which agent-browser uses by default. The shared AGENTS.md rules tell Codex, Claude Code, and Pi to use it for browser automation tasks.

Brewfile Package Management

Use the checked-in Brewfile directly:

cd ~/git/dotfiles
brew bundle install
brew bundle check
brew bundle cleanup

brew bundle install --file ~/git/dotfiles/Brewfile
brew bundle check --file ~/git/dotfiles/Brewfile

Zed Configuration

  • Codex, Claude Code, and Pi agent server support
  • Prettier formatters for JavaScript, TypeScript, and TSX
  • Git gutter and inline blame
  • Integrated zsh terminal
  • System-aware One Light / One Dark theme

Desktop AI Apps

Full setup also installs:

  • Claude Desktop via the official Homebrew claude cask
  • T3 Code via the official Homebrew t3-code cask

The Dock installer places both right after Zed Preview when they are installed.

Performance Testing

Measure Shell Startup Time

/usr/bin/time zsh -i -c exit

Expected result with the current lazy-loading setup: roughly 0.05-0.15s.

Profile Shell Initialization

zmodload zsh/zprof
exec zsh
zprof

Maintenance

Updating Packages

brew update && brew upgrade
omz update

cd ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions && git pull
cd ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting && git pull

Syncing Changes

The dotfiles are symlinked into your home directory, so edits to managed paths such as ~/.zshrc, ~/.codex/config.toml, or ~/.config/zed/ are reflected in the repository.

Troubleshooting

Slow Shell Startup

  1. Profile the shell with zprof
  2. Check that nvm and cargo are still lazy-loaded
  3. Trim unused Oh My Zsh plugins
  4. Run brew doctor

AI CLIs Not Working

Verify the commands resolve correctly:

type codex
type pi
type pi-acp
type claude
type agent-browser

If a tool is missing, install it with:

brew install --cask codex
curl -fsSL https://claude.ai/install.sh | bash
npm install -g @earendil-works/pi-coding-agent
npm install -g pi-acp
brew install agent-browser
agent-browser install
brew install railway
npm i -g vercel@latest

If Claude Code is installed but not loading the shared MCP config, reload your shell and verify ~/.claude/mcp.json exists. If Claude Desktop is not showing MCP tools, fully quit and restart the app, then inspect ~/Library/Logs/Claude/mcp*.log.

If Pi is installed but not seeing the shared MCP servers, verify ~/.pi/agent/mcp.json exists, confirm pi list includes pi-mcp-adapter, and restart Pi so the adapter reloads. If NeuralWatt is not available in Pi, verify ~/.pi/agent/models.json exists and NEURALWATT_API_KEY is set in ~/.zshrc.local.

Completion Not Working

rm -f ~/.zcompdump
exec zsh

Homebrew Issues

brew doctor
brew cleanup
brew update
brew upgrade

Security Notes

  • .gitignore keeps secrets and local-only files out of the repo
  • This repo only symlinks stable AI config files; auth and session state stay tool-managed
  • always_allow_tool_actions in Zed bypasses security prompts; adjust if needed

Resources

License

MIT License. Adjust as needed for your own setup.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors