---
title: Project Notes (markdown scratchpad per project)
---

# Project Notes (markdown scratchpad per project)

## What it is

**Project Notes** is a private markdown scratchpad attached to each project in your sidebar. It's the place to jot things like deploy steps, environment variables, credentials reminders, design sketches, onboarding notes for yourself — anything you want to keep near a project but don't want to commit to the repo. Notes support full GitHub-flavored markdown (headings, code blocks with syntax highlighting, tables, lists) with a live preview when you're just reading, and a plain monospace textarea when you toggle into edit mode. Each project has exactly one note, stored as a local `.md` file in Omniscio's user data directory — no database, no cloud, no sync. Notes are for **you**: they aren't visible to Claude in sessions, don't appear in search results, and aren't shared by Artifact Sharing.

## Where to find it

Open a project's note from the project's three-dot menu in the left sidebar → **Edit Notes**. That opens a centered dialog with the rendered note, a pencil icon (top-right) that switches to a plain monospace editor, and a Save / Cancel footer. While you are editing, the same pencil flips to an eye icon that takes you back to the rendered view. The only other way in is the CLI control server, described under **For agents** below — there is no CLI read route.

## How it behaves

### How to use it

1. **Open a project's note.** Click the three-dot menu on any project in the left sidebar → **Edit Notes**. A centered dialog opens. On first open for a project the body shows "No notes yet" with a **Start writing** button.
2. **Toggle between view and edit.** Use the pencil icon (top-right of the dialog) to switch to edit mode — it flips to an eye icon to go back. Writing happens in a plain monospace textarea so markdown source is visible; viewing renders the markdown (headings, code blocks, tables, inline links all work).
3. **Save.** Click the blue **Save** button at the bottom. Notes are manual-save only — there's no auto-save. An unsaved-changes indicator warns you before discarding, and closing with `Esc` or the backdrop click asks for confirmation if you have pending edits.
4. **Cancel pending edits.** Click **Cancel** in the footer to revert to the last saved content without saving. This is useful if you started writing, changed your mind, and want to throw away the draft.
5. **Size limit.** A single note can hold up to **500,000 characters** (~500 KB). That's roughly 100 pages of plain text or a very large spec document — more than enough for typical use. If you hit the limit Omniscio rejects the save.

## For agents

### How it works

The dialog is [/src/renderer/src/features/projects/ProjectNotesDialog.tsx](/src/renderer/src/features/projects/ProjectNotesDialog.tsx), rendered from [/src/renderer/src/features/dashboard/ProjectListItem.tsx](/src/renderer/src/features/dashboard/ProjectListItem.tsx) when the user clicks **Edit Notes** in the three-dot menu. It uses `react-markdown` + `remark-gfm` for rendering and the project's standard `rehypeHighlightSubset` shim for syntax highlighting in code blocks. On open, the dialog invokes `IPC.PROJECT_NOTES_GET` with the project ID; the handler in [/src/main/ipc/project-handlers.ts](/src/main/ipc/project-handlers.ts) reads `{userData}/project-notes/{projectId}.md` and returns the content (empty string if the file doesn't exist). On save, `IPC.PROJECT_NOTES_SAVE` writes the file, creating the directory if needed. Zod schemas in [/src/shared/ipc-schemas.ts](/src/shared/ipc-schemas.ts) (`projectNotesGetSchema`, `projectNotesSaveSchema`) enforce the 500 KB cap. Because notes live as plain `.md` files in your local Omniscio userData folder, you can browse them with your file explorer, back them up, or grep them — but nothing syncs them across machines and they aren't included in Omniscio exports. Notes are **not** fed into Claude's context during sessions — they're strictly for your eyes. If you want Claude to see a note's contents, paste them into the chat manually.

### CLI access

**Writing a note IS reachable over the CLI control server** (`127.0.0.1:19519`).
`PUT /project/:id/notes` with a JSON body `{ "content": "<markdown>" }` saves the
note for project `:id`, re-validating through the same 500 KB Zod cap (`content`
≤ 500,000 characters) the in-app editor uses — so a CLI write can never exceed the
limit. The `:id` path segment is restricted to `[A-Za-z0-9_-]` (no path traversal);
the route returns `404` for an unknown project, `400` on a validation failure, and
`{ "ok": true }` on success. It is bearer-token authed and rate-limited (the shared
mutation bucket), not approval-gated, and needs no source session.

There is **no** CLI *read* route for notes. Notes live as plain `.md` files at
`{userData}/project-notes/{projectId}.md`, so an external agent that needs to read a
note can open that file on disk directly.

## Related

If what you want is reusable prompt content that _does_ reach Claude, [use-super-prompts.md](use-super-prompts.md) is the right tool rather than this one — notes never leave your own screen. [codebase-stats.md](codebase-stats.md) is the other per-project utility and is reachable from the same three-dot menu, so the two are usually discovered together. To change what a project points at rather than what you keep beside it, see [edit-a-project.md](edit-a-project.md).
