Skip to content

just-be-dev/workspace

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

53 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

workspace

This is the configuration for the tools I use for agent driven development.

I'm trending towards doing as much in the terminal as I can and biasing towards tools with high levels of customizability.

Uses the fantasic mise to bootstrap everything.

What's inside

Path Tool Installed by Symlinked to
mise/workspace.toml Global mise tool config [dotfiles] ~/.config/mise/conf.d/workspace.toml
herdr/config.toml herdr mise/workspace.toml -> herdr ~/.config/herdr/config.toml
herdr/plugins/dev-layout/ Herdr plugin: four-pane dev layout post-tools hook -> herdr plugin link
nvim/ LazyVim mise/workspace.toml -> neovim (macOS; omarchy on Linux) ~/.config/nvim (overlay)
ghostty/config Ghostty post-tools hook (brew --cask) ~/.config/ghostty/config (macOS only)
ghui/config.json ghui mise/workspace.toml -> npm:@kitlangton/ghui ~/.config/ghui/config.json
hunk/config.toml hunk mise/workspace.toml -> hunk ~/.config/hunk/config.toml
omp/agent/config.yml omp mise/workspace.toml -> github:can1357/oh-my-pi ~/.omp/agent/config.yml
omp/agent/extensions/ omp extensions (config only) ~/.omp/agent/extensions (overlay)
omp/plugins/pi-claude-bridge/ + .tgz OMP plugin: Claude Code provider + AskClaude tool post-tools hook -> npm install packaged local plugin ~/.omp/plugins/node_modules/pi-claude-bridge
pi/agent/settings.json pi mise/workspace.toml -> npm:@earendil-works/pi-coding-agent ~/.pi/agent/settings.json
pi/agent/extensions/ pi extensions (config only) ~/.pi/agent/extensions (overlay)
skills/effect-setup/ agent skill (config only) ~/.agents/skills/effect-setup
skills/mise-setup/ agent skill (config only) ~/.agents/skills/mise-setup

Global tools

The CLI tools (herdr, hunk, ghui, omp, pi, stylua, atuin) are declared in mise/workspace.toml. The main mise.toml symlinks that file to ~/.config/mise/conf.d/workspace.toml, making those tools global instead of repo-local. A few tools (neovim, gh, claude-code, fzf, lazygit) are scoped to macOS only — on Arch/omarchy the system already provides them, so mise stays out of the way.

Only config is tracked. Runtime files (logs, sockets, state.json, caches, session.json) stay out.

Overlaying onto omarchy

On Linux this machine runs omarchy, which ships its own base configs. Where a config directory is shared with omarchy, the [dotfiles] entries overlay our files rather than replacing the whole directory, leaving omarchy's siblings untouched:

  • nvim — a top-level *.lua glob links init.lua (skipping the nvim-managed lazy-lock.json / lazyvim.json lockfiles), and symlink-each links our files under lua/config/ and lua/plugins/. omarchy keeps options.lua, themes, transparency, remote-clipboard, etc.
  • omp / pi extensions/symlink-each overlays our tracked extensions file-by-file, leaving tool-installed ones (e.g. omarchy-system-theme.ts) in place.
  • ghostty — not a [dotfiles] entry (those can't be OS-scoped). On Linux omarchy's managed config is left alone; on macOS the post-tools hook copies ours in.

omp is the default agent setup. Only non-secret config is tracked: config.yml, the extensions directory, and the local pi-claude-bridge plugin source plus packaged tarball. OAuth credentials and runtime state stay in ~/.omp/agent/agent.db and related files; authenticate with /login or provider environment variables after bootstrap.

pi is also installed and configured as a secondary agent. Its tracked config is settings.json (preferences + package list) and the extensions/ directory. Secrets and runtime state — auth.json, sessions/, npm/, trust.json — stay in ~/.pi/agent/ and are never tracked.

Skills live in the shared ~/.agents/skills/ directory (read by omp, pi, and other agents). That directory also holds skills installed by a skill manager, so each tracked skill under skills/ is symlinked individually rather than linking the whole directory. Add a skill by dropping its folder in skills/ and adding a matching [dotfiles] entry in mise.toml.

Install

From a fresh clone, run the install script. It installs mise if missing, then prints a per-item plan (mise bootstrap status) and waits for confirmation before changing anything — the only thing that runs before you confirm is the mise install itself. Re-running is safe — mise converges each step and skips work already done:

./install.sh

Once you confirm, the install script first links ~/.config/mise/conf.d/workspace.toml with a plain dotfile apply, then starts a fresh mise bootstrap. It intentionally does not pass --force-dotfiles: conflicting real files stay visible in the plan instead of being clobbered by the installer.

The bootstrap then converges the normal mise parts:

  1. installs system packages,
  2. applies [dotfiles] where targets are missing or already managed,
  3. confirms the global tools are installed and runs the post-tools hook: installs fish, installs Ghostty on macOS if missing, links the local Herdr plugin, installs the local omp plugin, and copies the Ghostty config.

If a dotfile target is reported as differs, resolve it explicitly after reviewing the file. For unattended runs set WORKSPACE_ASSUME_YES=1 to skip the prompt; to inspect without the script, mise bootstrap status and mise bootstrap --dry-run both change nothing.

About

Where my work happens

Resources

Stars

Watchers

Forks

Contributors

Languages