Project Discovery

How Vibehaus finds projects on disk, detects monorepos, and refreshes its index.

Project Discovery is the part of Vibehaus that turns the folders on your Mac into a list of projects you can browse, run, and remember.

Why it matters

A project, for Vibehaus, is “a directory that holds a marker file we recognise.” That gives us a single, deterministic rule for what counts — no machine learning, no guessing, no drift from one Mac to the next.

How the scan works

When you point Vibehaus at a root directory, it walks the folder a few levels deep looking for marker files. The first time a directory matches, it’s recorded as a project and the walker stops descending into it — so a Node monorepo with 50 inner packages doesn’t blow up into 50 projects unless you ask for that.

Common build directories (node_modules, .git, build, dist, target, __pycache__, .venv, Pods, DerivedData) are skipped no matter what, so the walker doesn’t disappear into vendored code.

Marker files

The scanner currently recognises these markers and the stacks they imply:

Package.swift / Package.resolved   → Swift
package.json                       → Node
tsconfig.json                      → TypeScript
next.config.{js,mjs,ts}            → Next.js
nuxt.config.ts                     → Nuxt + Vue
vue.config.js                      → Vue
angular.json                       → Angular
svelte.config.js                   → Svelte
remix.config.js                    → Remix
astro.config.mjs                   → Astro
vite.config.{js,ts}                → Vite
webpack.config.js                  → Webpack
Cargo.toml                         → Rust
go.mod                             → Go
pyproject.toml / requirements.txt
  / Pipfile / setup.py             → Python
Gemfile                            → Ruby
pom.xml / build.gradle             → Java + Maven/Gradle
build.gradle.kts                   → Kotlin + Gradle
pubspec.yaml                       → Flutter + Dart
Makefile                           → Make
CMakeLists.txt                     → C/C++ + CMake
Dockerfile / docker-compose.{yml,yaml}
                                   → Docker
tailwind.config.{js,ts}            → Tailwind
prisma/schema.prisma               → Prisma
.env                               → (no stack)

If a project matches multiple markers (a Next.js app is also TypeScript and Tailwind), every label stacks on the same project chip — Next.js · TypeScript · Tailwind is a normal sight in the sidebar.

Monorepos

Vibehaus recognises nine common monorepo layouts and groups all their inner projects under a single header chip:

  • Turborepo (turbo.json)
  • Nx (nx.json)
  • Rush (rush.json)
  • Lerna (lerna.json)
  • pnpm (pnpm-workspace.yaml)
  • npm / Yarn workspaces (package.json with a "workspaces" field)
  • Cargo (Cargo.toml with a [workspace] table)
  • Go workspaces (go.work)
  • Bazel (WORKSPACE / MODULE.bazel)

When two or more projects resolve to the same monorepo root, the sidebar collapses them under a single header showing the build tool’s name.

Manual project add

The scanner is conservative on purpose. If you keep a project in a folder Vibehaus would otherwise skip — or if it has no marker file at all — you can add it by hand from the sidebar’s + menu. Manually-added projects sit alongside discovered ones and behave the same way everywhere else.

Rescanning

Today, the project list refreshes when you:

  1. Run a manual rescan from the sidebar.
  2. Restart the app.

Automatic refresh on file changes (so adding a marker file in Finder hot-adds the project) is on the way.

  • Getting Started — install and run your first scan.
  • Vault — once you have projects, attach secrets to them.
  • Cloud Sync — your project list syncs across Macs.