Skip to main content

A Standing Brief for Your Work

Some work isn’t one conversation — it’s a dozen conversations sharing one context: the same instructions repeated, the same files re-attached, the same background re-explained. A project gives that work a home. It’s a named bundle of standing instructions and files; every conversation started inside it begins already briefed, without you pasting anything. A project is four things:

How the Briefing Works

Every turn of a project conversation carries a <project> block appended to the system prompt:
  • The instructions are injected verbatim — they’re user-authored prompt text, so they are context.
  • The files are injected as a list only: each file’s name, size, and absolute path — never its content. This is the same model-led attachment policy as chat uploads: Wolffish consults a file with its tools (pdf_info / pdf_search / pdf_read for PDFs, file_read line ranges, image_view for images, spreadsheet and document tools) the moment its content matters, and is explicitly forbidden from claiming knowledge of a file it hasn’t read or searched in the conversation.
That split is what lets a project carry a 3,000-page reference PDF without costing anything until the moment a question actually depends on it. The overlay is computed once per turn, so it never disturbs prompt caching mid-turn — and across turns it changes only when you edit the project.
A file that’s gone missing from disk is listed as missing rather than silently dropped — Wolffish tells you instead of guessing.

The Projects Page

Open Projects from the app menu. Each project is a card showing its emoji, title, when it was last edited and last used, how many conversations it has, and how many files it carries — with actions to view its conversations, edit, or delete it. The page refreshes itself live when something changes underneath it — ask Wolffish mid-chat to build or restock a project and watch its card update in place. New creates a project and opens the editor dialog:
  • Title and emoji — the icon comes from a searchable emoji picker.
  • Instructions — a Markdown field, auto-saved moments after you stop typing (same discipline as the procedures editor: no Save button, just Done).
  • Files — attach with a file picker. Each source is copied into the project’s own folder (uploads/project-<id>/ in the workspace), so the project owns its files and never dangles on an original that later moves or gets deleted. Removing a file deletes the project’s copy; originals outside the workspace are never touched.
  • New conversation — starts a chat inside the project right from the dialog; Exit project steps the current chat out of it.
Deleting a project keeps its past conversations in History — they simply lose the project context on future turns.

Conversations Inside a Project

Start a project conversation any of these ways:
  • Hover the New Chat button — your projects fan out as cards; pick one and the new conversation starts inside it from the very first word.
  • From the Projects page or dialog — the New conversation action.
  • From your phone/project on Telegram and WhatsApp lists your projects by number; reply with one to start a conversation inside it. /new while inside a project deliberately stays in the project; /project close is the way out.
The binding lives on the conversation itself (a projectId stamped on its file), so it survives restarts, merges, and channel hops — a project conversation continued anywhere is still a project conversation. Project conversations are recognizable everywhere:
  • An empty project chat swaps the Wolffish hero for the project’s own identity — its emoji, title, and an instructions preview — and clicking it opens the project editor.
  • The conversations rail in a project chat shows only that project’s conversations, under the project’s title.
  • Rail chips and History rows wear the project’s emoji.

Procedures and Automations in a Project

Recurring work can be project-bound too:
  • A procedure bound to a project runs with the project’s instructions and files, and its run conversations register under the project.
  • An automation binds via the project: setting marker in its job block — its scheduled runs get the same briefing.
So a “weekly status draft” procedure inside your Client X project already knows the client, the tone, and the reference documents every time it fires.

Through Wolffish

You don’t have to touch the page — the projects capability gives Wolffish the same hands:
  • “Make a project for the kitchen renovation with these PDFs”project_create + project_add_files
  • “What projects do I have?”project_list (number, icon, title, file count)
  • “Show the renovation project”project_view (full instructions + files with per-file existence and size)
  • “Rename it / change its icon / rewrite its instructions”project_update
  • “What have we discussed in it?”project_conversations, then conversation_read on any of them
  • “Delete it”project_delete (asks you to confirm first)

Where They Live

Projects are stored as a single JSON file at brain/projects.json in your workspace — a flat list written atomically, exactly like procedures. Each record is { id, title, icon, instructions, files, createdAt, updatedAt }, and each file reference points inside the workspace at the project’s own copy. Treat it as managed data: create, edit, and delete through the page or through Wolffish rather than hand-editing.

See Also