Nojoin AI Agent Instructions

Start Here

Project Context

Nojoin is a distributed meeting intelligence platform. The system records live meeting audio directly from supported browsers, processes the data on a GPU-enabled Docker backend, and presents insights via a Next.js web interface.

Core Philosophy: Centralized Intelligence (GPU server), Ubiquitous Access (Web), Configurable Privacy (Self-hosted with optional local-only AI).

Architecture & Patterns

Backend (FastAPI + Celery)

Frontend (Next.js + Zustand)

Browser Capture

Critical Workflows

Commands

Release Workflow (Unified Lock-step)

The project uses a single Git Tag (vX.Y.Z) to trigger the server and frontend release pipeline.

  1. Update Version: Update docs/VERSION to the new version (e.g., 0.6.0).
  2. Commit and Tag:
    • Commit the change.
    • Create a tag matching the version: git tag v0.6.0
    • Push the tag: git push origin v0.6.0
  3. CI/CD Pipeline (.github/workflows/release.yml): Trigger: The push of the v* tag automatically triggers the pipeline.

Step 1: Docker Build: Builds and pushes API, Worker, and Frontend images to GHCR with tags latest and v0.6.0. The API image also embeds the resolved server version for runtime display in Settings.

Step 2: Release Metadata: Publish or update the GitHub Release for the same tag so Settings can surface release notes. Browser capture compatibility belongs in those release notes when capture behavior changes. The current workflow does not create the GitHub Release automatically.

Important:

Code Style & Conventions

Python (Backend)

TypeScript (Frontend)

Browser Capture (Frontend)

Quality Assurance & Build Safety

Working Style

Agent Interaction Rules

The Workflow Loop

  1. REQUIREMENT: The user states a feature. You then read the AGENTS.md, DEPLOYMENT.md, PRD.md, and USAGE.md files for context.
  2. PLANNING: Produce a detailed plan. Consider signal propagation and dependencies.
  3. APPROVAL: Wait for user confirmation.
  4. IMPLEMENTATION: Generate robust code. Do not delete existing functionality unless planned.
  5. UI DUPLICATION: When modifying the Context Menu for recordings, remember that there are TWO places to update:
    • frontend/src/components/RecordingCard.tsx: The main grid view.
    • frontend/src/components/Sidebar.tsx: The sidebar list view.
    • Failure to update both will result in inconsistent behavior.
  6. TESTING: The user performs manual testing but the agent should run the relevant host-side build checks and rebuild any locally customised container services when needed to catch build-time errors and ensure changes are reflected in the environment. The agent should also provide detailed instructions for testing the new feature, including any necessary setup steps, expected outcomes, and edge cases to consider.
  7. COMPLETION: Update the docs as needed.

Constraints