A corporate-friendly Markdown notes engine that makes your AI happy.
Project description
endpaper
⠀⠀⠀⠀⠀⠀⠀⠀⣀⣀⣤⣤⣤⣤⣤⣄⣀⡀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⢀⣠⣶⣾⡿⠿⢛⣛⣛⣛⡛⠻⠿⣿⣷⣦⡀⠀⠀⠀⠀⠀
⠀⠀⢀⣴⣿⡿⠛⠁⠀⣴⣿⣿⣿⣿⣿⣷⡄⠀⠉⠻⣿⣷⡀⠀⠀⠀
⠀⢀⣾⡿⠋⠀⠀⠀⢸⣿⣿⣿⣿⣿⣿⣿⡧⠀⠀⠀⠈⠻⣿⣦⠀⠀
⢀⣿⡿⢁⣠⣤⣤⣤⣈⢿⣿⣿⣿⣿⣿⣿⠇⣠⣤⣤⣤⣀⠹⣿⣧⠀
⣼⣿⢳⣿⣿⣿⣿⣿⣿⣧⠙⢻⣿⣿⠛⢡⣾⣿⣿⣿⣿⣿⣷⣻⣿⡀
⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡇⢸⣿⣿⠀⢸⣿⣿⣿⣿⣿⣿⣿⣿⣿⡇
⣿⣿⠘⣿⣿⣿⣿⣿⣿⣿⡀⢸⣿⣿⠀⣸⣿⣿⣿⣿⣿⣿⡿⢹⣿⡇
⢿⣿⡄⠈⠙⠛⠟⠛⠙⢿⣿⣾⣿⣿⣾⣿⠟⠙⠛⠟⠛⠉⠀⣸⣿⠁
⠈⣿⣷⡀⠀⠀⠀⠀⠀⠀⠙⢿⣿⣿⡟⠃⠀⠀⠀⠀⠀⠀⣰⣿⡟⠀
⠀⠘⢿⣷⣄⠀⠀⠀⠀⠀⠀⢸⣿⣿⠀⠀⠀⠀⠀⠀⢀⣴⣿⠟⠀⠀
⠀⠀⠈⠻⣿⣷⣄⡀⠀⠀⠀⢸⣿⣿⠀⠀⠀⠀⢀⣴⣿⡿⠃⠀⠀⠀
⠀⠀⠀⠀⠈⠙⠿⣿⣷⣶⣤⣼⣛⣻⣤⣤⣶⣾⡿⠟⠋⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠉⠉⠛⠛⠛⠛⠛⠛⠉⠁⠀⠀⠀⠀⠀⠀⠀⠀
KEEP YOUR CORPO OVERLORDS HAPPY, FEED YOUR AI
A corporate-friendly Markdown notes engine that makes your AI happy.
A local-only, terminal-based tool for capturing and organizing meeting notes, general notes, and tasks as plain markdown files — structured enough for a human to navigate through a TUI, and legible enough that an AI assistant can search and edit the vault through a CLI without any integration work.
Why
Markdown is the native format of AI assistants — they read it, write it, diff it, and reason over it without an adapter layer. Almost nobody at a large company can actually work that way, because the sanctioned note-taking tools (OneNote, Confluence, SharePoint) lock notes behind proprietary formats and authenticated APIs, and markdown-first apps like Obsidian or Logseq are rarely on the approved-software list.
endpaper installs without admin rights, stores nothing outside a directory you already have, and needs no server or account — just a folder.
The tool disappears into the twenty seconds before a meeting starts. You type /meeting.standup Q3 planning #platform, a file exists with correct frontmatter and a date-stamped name, and you're typing notes before anyone has finished joining the call. You never decide where a file goes or what to call it.
Usage
Install
uv tool install endpaper
Create a workspace
mkdir notes && cd notes
endpaper init
This creates .endpaper/config.toml, AGENTS.md, and meetings/ in the current directory. This directory is now your workspace root — every command below runs from inside it.
Capture a meeting
endpaper meeting new "Q3 planning" --type standup --tag platform
Prints the path to the new file: meetings/2026-07-28-standup-q3-planning.md, already stamped with frontmatter (id, type, title, tags, created, updated).
Browse and list
endpaper meeting list --json
endpaper meeting list --type standup --since 2026-07-01
Or launch the TUI with no arguments:
endpaper
/ opens a combined filter/command bar — type to filter the list live, or type meeting.standup <description> and hit enter to create one without leaving the screen. Arrow keys move, enter opens the selected meeting in a rendered markdown preview, e drops into a raw editor, ctrl+o/ctrl+x save, esc backs out.
For AI assistants
An assistant working in an endpaper workspace reads AGENTS.md at the root and takes it from there — non-interactive, --json-capable, and scriptable by design. Nothing opens an editor or blocks on a prompt.
Below, an assistant is asked to pull up a vendor sync meeting, research the competitor options it calls for, and write up its findings — reading and writing the vault the same way it reads and writes a codebase:
The note it produced shows up like any other — because it is:
See REQUIREMENTS.md for the full CLI reference, frontmatter schema, and exit codes.
Features (v0.0.1)
- Meeting notes —
/meeting.standup Q3 planning #platformcreates a dated, frontmatter-tagged file and drops you straight into it. Browse with/meetings, filter live, open withenter. - General notes —
/noteopens (or creates) today's daily note;/note.research vendor landscape #procurementcreates a typed note. Browse with/notes. - Tasks —
/task.followup send the vendor comparison #procurementappends a checkbox line totasks.md./taskslists open items;spacetoggles done. The file stays hand-editable plain markdown — no database. - Workspace init —
endpaper initsets up a workspace (config,AGENTS.md,meetings/,notes/daily/,tasks.md) in the current directory. Multi-user shared workspaces are planned but not in v0.0.1 — see Roadmap. - View and edit — every note or meeting opens in a rendered markdown preview (
enter), switches to a raw editor (e) with line numbers and soft wrap, and saves withctrl+o(stay) orctrl+x(save and return).escdiscards, but only prompts when there's something to lose.ctrl+sis also bound as a save alias, butctrl+ois the canonical key: some terminals treatctrl+sas the legacy XOFF flow-control signal and swallow it before it ever reaches endpaper. If saves withctrl+sseem to do nothing, runstty -ixonin that shell (or usectrl+oinstead). - AI-friendly CLI — every TUI action has a non-interactive CLI equivalent backed by the same core library:
endpaper find,read,write,append,--jsonon every read command, meaningful exit codes, nothing that opens an editor or blocks on input. - No index, no database — the markdown files are the only state. endpaper globs and parses the workspace in memory on launch; nothing to corrupt, nothing to reindex.
AGENTS.md— generated atinit, under ~60 lines, so an assistant landing in the workspace is productive immediately.
See REQUIREMENTS.md for the full v0.0.1 specification, including CLI syntax, frontmatter schema, and acceptance criteria. Not everything above has landed on main yet — check CHANGELOG.md for what's actually shipped so far.
Roadmap
Planned for a future release, tracked in REQUIREMENTS.md §6:
- Multi-user shared workspaces —
endpaper init <name>inside a shared root (e.g. a OneDrive folder),/workspaceswitching, and cross-workspace search, so a team can share one root without a server.
Considered and explicitly out of scope for v0.0.1 (see REQUIREMENTS.md §5):
- AI invocation from inside endpaper (
/claudemarkers, SDK integration) - Webcam or image capture (
/pic) - Embeddings, vector search, semantic retrieval
- Tasks created inline from inside a note or meeting
- Backlinks, wikilinks, graph views
- Syntax highlighting in the editor
Status
Draft / pre-release. v0.0.1 targets Python 3.11+, installable via uv tool install or pipx, on Windows, macOS, and Linux with no network access required.
License
See LICENSE.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file endpaper-0.0.1.tar.gz.
File metadata
- Download URL: endpaper-0.0.1.tar.gz
- Upload date:
- Size: 2.1 MB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.12.0 {"installer":{"name":"uv","version":"0.12.0","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c5361aaef47daf70d3c7ff167fce786b63aa9aaee8da6b2cd8e8153d8cc0f028
|
|
| MD5 |
0bf3c4223669a8f68cc691f23b7613ac
|
|
| BLAKE2b-256 |
88f373dd9f96a26fae363e574ff81bfd2bcc78d6894036c7668acb185f69e1f1
|
File details
Details for the file endpaper-0.0.1-py3-none-any.whl.
File metadata
- Download URL: endpaper-0.0.1-py3-none-any.whl
- Upload date:
- Size: 38.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.12.0 {"installer":{"name":"uv","version":"0.12.0","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d393fee58692ccfc4fd7667347d44148673be219b1a73b71bac901a141094b7b
|
|
| MD5 |
ceaf9eabe3a7b853cc6e5435abf76b27
|
|
| BLAKE2b-256 |
2861c0f7b4cb831760c31f396e80641589c5d8bc743bcc59417e59fe3b1577cf
|