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.jsonwith a"workspaces"field) - Cargo (
Cargo.tomlwith 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:
- Run a manual rescan from the sidebar.
- Restart the app.
Automatic refresh on file changes (so adding a marker file in Finder hot-adds the project) is on the way.
Related
- 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.