Projects

Projects group KB entries and session context. Recalletta detects your current project automatically via .recalletta.json pin files or git remote URLs.

List Projects

$ recalletta project list
Projects:
  Default (default)
  Perfect Manager (perfect-manager)
  Recalletta (recalletta)
  Zombie Game (zombiegame)

Create a Project

$ recalletta project create <NAME>

Creates a new KB project. The name becomes the slug (lowercase, hyphenated).

Rename a Project

$ recalletta project rename <PROJECT> <NEW_NAME>

Changes the project's slug and/or display name.

Delete a Project

$ recalletta project delete <PROJECT> [-y]

Deletes a project and all its contents. Pass -y to skip confirmation.

Pin a Directory to a Project

$ recalletta pin <SLUG|ID>

Writes a .recalletta.json file in your current directory that links it to a KB project. This tells Recalletta which project's KB entries to inject during SessionStart.

Flag Purpose
--local Also adds .recalletta.json to .gitignore

Examples:

$ recalletta pin recalletta           # Pin by slug
$ recalletta pin 70d90af5            # Pin by ID prefix
$ recalletta pin recalletta --local  # Pin and gitignore the pin file

The pin file looks like:

{
  "project_id": "70d90af5-...",
  "slug": "recalletta",
  "name": "Recalletta"
}

How Project Detection Works

When a hook fires, Recalletta checks for a project in this order:

  1. Explicit pin — a .recalletta.json file in the current directory or any parent directory. Overrides everything.
  2. Git remote match — the repo's git remote URL matched against registered projects. Exact match required.
  3. Directory prefix match — is the current working directory a subdirectory of a registered project path? Longest match wins.
  4. Single project fallback — if there is exactly one project, it is used automatically.
  5. No match — no KB injected, only session search results. Sessions are still saved.

See also Concepts: Project Detection.