NoteChat
Notion-style chat pages inside VS Code. Keep headings, paragraphs, code snippets, images and files in chat-like pages, create as many chats as you like, and back up everything to your own private GitHub repository.
Features
- Chat pages made of blocks: headings, paragraphs, code (with a language label and copy button), images and file attachments.
- Multiple chats: create unlimited chats from the NoteChat sidebar; rename them any time.
- Paste & drop: paste images with
Ctrl+V, drag and drop files, or use the + button (up to 50 MB per file).
- Edit & delete any block; copy code with one click.
- GitHub backup: every message and every file is committed to your own GitHub repository, and files are downloaded from GitHub when you click ⬇ Download.
- Nothing stored on your computer (default): GitHub is the only storage. Chats load from your repo when VS Code starts.
- Join with a 10-digit code: every chat has a code; paste a friend's code to join their chat live (needs a sync server, see below).
Getting started
1. Set up GitHub backup (required)
- Create an empty private repository on GitHub (https://github.com/new).
- Create a fine-grained token at https://github.com/settings/personal-access-tokens/new, with access to only that repository and Contents: Read and write (GitHub adds Metadata: Read-only automatically, which is normal).
- In VS Code, click the NoteChat icon in the activity bar, then the GitHub icon (or run NoteChat: Set Up GitHub Backup), and enter
your-username/your-repo and the token.
Your token is stored in VS Code's encrypted secret storage — never in settings files.
2. Create a chat
Click + in the NoteChat sidebar, name the chat, and start adding content. The chat header shows its 10-digit join code (click it to copy) and the backup status.
3. Add content
| Mode |
Use it for |
| Paragraph |
normal text — Enter sends, Shift+Enter adds a line |
| Heading |
section titles |
| Code |
snippets — set a language, Ctrl+Enter sends |
| + / paste / drop |
images and any file |
Hover over a block to copy, edit or delete it.
How your data is stored
Each message is committed as its own JSON file and each attachment as its own file:
chats/<code>/chat.json
chats/<code>/blocks/<id>.json one per heading / paragraph / code / image / file
chats/<code>/files/<id>_<name> the actual attachments
- A new item is held in memory until its push to GitHub succeeds. The header shows
pushing N… (not saved yet) and then backed up ✓. Wait for backed up ✓ before closing VS Code or going offline.
- Files and images are downloaded from GitHub when needed, so opening them requires an internet connection.
- NoteChat: Refresh Chats from GitHub reloads everything from the repo (for example after using a new computer).
- "Delete chat" only hides a chat until the next refresh; it remains in your repository. To remove it permanently, delete its folder from the repo on GitHub.
- GitHub limits individual files to 100 MB; NoteChat limits attachments to 50 MB.
Prefer an offline copy? Turn on the setting NoteChat › Keep Local Copy and reload the window; chats are then also kept on disk.
Joining chats with a code (sync server)
Live sharing between people uses a small sync server. Without one, everything else works, but Join and live updates do not.
- Set its address in NoteChat › Server Url (for example
wss://notes.example.com). If the server uses a secret, append it: wss://notes.example.com?token=SECRET.
- The default
ws://localhost:8787 only works on your own machine.
- The server is a ~100-line Node.js script (
server/server.js, depends only on ws). Run it with node server.js; useful environment variables: PORT, AUTH_TOKEN, DATA_DIR, and MEMORY_ONLY=1 (store nothing on the server's disk, relay only).
- People who join a chat also back its content up to their own GitHub repo.
Settings
| Setting |
Description |
notechat.githubRepo |
Repository (owner/name) used for backup. Set via Set Up GitHub Backup. |
notechat.keepLocalCopy |
Also keep chats and files on this computer (default: off). |
notechat.serverUrl |
Sync server WebSocket URL for joining chats by code. |
notechat.displayName |
Name shown next to your messages (default: your OS username). |
Commands
- NoteChat: New Chat / Join Chat with Code
- NoteChat: Set Up GitHub Backup
- NoteChat: Push Backup to GitHub Now
- NoteChat: Refresh Chats from GitHub
- NoteChat: Reconnect to Sync Server
Privacy & security
- NoteChat talks only to
api.github.com (your repo) and to the sync server you configure. No telemetry.
- Use a private repository: everything you write, including code and files, is stored there as readable files.
- Anyone who knows a chat's 10-digit code can join it on the sync server — share codes only with people you trust.
License
MIT