Mount vibes.* directories via bindfs without polluting git history.
Find a file
2026-01-04 01:08:34 +01:00
src fix(vibes): show help when no subcommand is provided 2026-01-04 01:08:34 +01:00
Makefile fix(makefile): install-local was broken 2026-01-04 00:56:07 +01:00
README.md fix(vibes): show help when no subcommand is provided 2026-01-04 01:08:34 +01:00

Vibespaces

Catchy baseline: Keep AI helper files out of Git, not out of reach.

vibes is a small POSIX sh CLI that mounts out-of-repo vibes.* helper directories into your working tree using bindfs, while ensuring they are globally ignored by Git. It keeps AI artifacts close to your repo without ever showing up in git status.

Why

AI workflows often generate local-only files that you dont want in history:

  • vibes.artefacts/ (session outputs)
  • vibes.examples/ (examples)
  • vibes.reference/ (reference code)
  • vibes.tasks/ (task lists)
  • vibes.tmp/ (temporary files)

vibes keeps them in an external project store and mounts them into the repo on demand. You can use them normally while your Git status stays clean.

Features

  • Mounts vibes.* directories via FUSE (bindfs).
  • Enforces a safe global ignore rule before mounting.
  • Uses a shared storage root per project.
  • POSIX sh script (no bashisms).

How It Works

Directories live at $VIBES_ROOT/<project-name>/ and are bind-mounted into the repo via FUSE (bindfs). The tool refuses to run unless your global Git ignore covers vibes.*, preventing accidental commits.

Installation

make install-system

Installs vibes to /usr/local/bin. You may need sudo depending on your system.

Local install:

make install-local

Configuration

  • VIBES_ROOT: storage root (default: ~/.local/share/vibespaces)
  • VIBES_VERBOSE: set to 0 to reduce output (default: 1)

Example:

export VIBES_ROOT="$HOME/.local/share/vibespaces"
export VIBES_VERBOSE=1

Usage

From a repo root:

vibes fix-ignore
vibes init
vibes attach
vibes detach

What each command does:

  • fix-ignore adds vibes.*/* and vibes.*/ to your global Git ignore file.
  • init creates the external helper directories for the project.
  • attach mounts the helpers into the working tree.
  • detach unmounts them when you are done.

Safety Notes

  • attach and detach refuse to run unless global ignore covers vibes.*.
  • Unmount before deleting a repo directory that contains mount points.

Troubleshooting

  • “Required command not found: bindfs”: install bindfs.
  • “Target does not look like a git repo”: run from a repo root or pass a path.
  • Unmount fails: retry, or ensure no process is using files under vibes.*.

Contributing

PRs and issues are welcome. Suggested areas: configurable helper lists, portable mount detection, and CI checks (shellcheck + formatting).

License

MIT (or your preferred license).