DEV Community

sys-ronin
sys-ronin

Posted on

A python terminal writer with git, github e2ee sync, hardware bound keys and temporal search

πŸ““ Terminal Notes

GitHub logo sys-ronin / terminal-notes

Terminal notes - Git, encryption, free E2EE sync, cognitive UI

πŸ““ Terminal Notes

Encrypted terminal-based writing system with Git temporal history, powerful search, GDPR erase and zero-trust decoupled architecture.


text-based screenshots


                                 Root Notebooks                                 

No notebooks yet.

Create your first notebook to get started!

or

Press [M] to import existing from remote

[C]reate  [M]anage  [Q]uit

> 

                            Create / Import Notebook
1. Default location (notebooks_root/)
   β†’ Quick creation in app's default directory

2. External location (USB/Network drive) πŸ”’ MORE SECURE
   β†’ Choose any folder on your system
   β†’ Perfect for encrypted notebooks on USB drives
   β†’ Easy to backup, sync with cloud, or store on encrypted drive

3. Import existing notebook
   β†’ Load an existing Terminal Notes notebook from local path
   β†’ Must contain structure.json and Git history

4. Import from Git URL
   β†’ Clone and import a notebook from GitHub/GitLab/Bitbucket
   β†’ Enter repository URL (must end with .git)
   β†’ Will prompt for account credentials if needed


Choose [1-4] or Enter to
…

Encrypted terminal-based writing system with Git temporal history, powerful search, GDPR erase and zero-trust decoupled architecture.


text-based screenshots


                                 Root Notebooks                                 

No notebooks yet.

Create your first notebook to get started!

or

Press [M] to import existing from remote

[C]reate  [M]anage  [Q]uit

> 
Enter fullscreen mode Exit fullscreen mode

                            Create / Import Notebook                            

1. Default location (notebooks_root/)
   β†’ Quick creation in app's default directory

2. External location (USB/Network drive) πŸ”’ MORE SECURE
   β†’ Choose any folder on your system
   β†’ Perfect for encrypted notebooks on USB drives
   β†’ Easy to backup, sync with cloud, or store on encrypted drive

3. Import existing notebook
   β†’ Load an existing Terminal Notes notebook from local path
   β†’ Must contain structure.json and Git history

4. Import from Git URL
   β†’ Clone and import a notebook from GitHub/GitLab/Bitbucket
   β†’ Enter repository URL (must end with .git)
   β†’ Will prompt for account credentials if needed


Choose [1-4] or Enter to cancel: 
Enter fullscreen mode Exit fullscreen mode

────────────────────────────────────────────────────────────
  YOUR RECOVERY PHRASE
────────────────────────────────────────────────────────────

  abstract asset offer fiber attend earth reopen walnut

  Store this phrase safely!

  β€’ Write it down on paper
  β€’ Save it in a password manager
  β€’ Take a photo (store securely)

  [Y] Yes, I've saved it  [C] Copy to clipboard

  > y

  Press Enter when you have written it down.


  Notebook created successfully!
   Name: aa
   Folder: aa-20262609002928
   Location: /home/user/terminal-notes/notebooks_root/aa-20262609002928
   πŸ” Encrypted with password + recovery phrase
   Recovery phrase saved - store it safely!

Press Enter to continue...
Enter fullscreen mode Exit fullscreen mode

                         user-name@github.com Notebooks                         

[1] πŸ”’ project-alpha [Private]
[2] πŸ”’ aa [Public]

[I]mport  [R]efresh  [B]ack  [Q]uit

> i1
Enter fullscreen mode Exit fullscreen mode

                                 Root Notebooks                                 

[1] πŸ”’ aa
[2] πŸ” terminal-notes (10 notes, 7 files, 1 sub)

[C]reate  [V]iew  [S]earch  [D]elete  [L]ock  [M]anage  [Q]uit

> l1

  ❌ Vault file not found: /home/user/terminal-notes/config/session.vault
     This notebook uses the default vault.
     This notebook requires the vault file to unlock.
     Please insert the USB drive or locate the vault file.

  Options:
    1) Retry (I've inserted the USB drive)
    2) Locate vault file manually
    3) Use recovery phrase (will create new vault)
    4) Cancel

  Choose [1-4]:
Enter fullscreen mode Exit fullscreen mode

     .../[1]depth05/[2]depth06/[3]depth07/[4]depth08/[5]depth09/[6]depth10/     

Notes & Files: (2 notes, 4 files)
[1] regular_internal_note                               [Updated: Jun 08 19:28]
[2] regular_external_note                               [Updated: Jun 08 19:28]
[3] index.html                                          [Updated: Jun 08 19:29]
[4] Dockerfile                                          [Updated: Jun 08 20:05]
[5] research.tex                                        [Updated: Jun 08 20:05]
[6] .bashrc                                             [Updated: Jun 08 20:06]

Sub-notebook: (1 sub)
[7] View Sub-notebook =>

[C]reate  [V]iew  [D]elete  [A]ctivity  [B]ack  [J]ump  [Q]uit

>
Enter fullscreen mode Exit fullscreen mode

                               [1]terminal-notes/                               

File Name: new_post.md [.md file]
Created: Jun 04  Updated: Jun 06 11:42

Show HN: A terminal writing environment with git, e2ee sync and temporal
search

I am a 40 years old jobless sys-admin with no cs degree and no development
experience and 25 yeras of system knowledge. I built a fully encrypted
writing environment where I can write with focus forgetting about the
application. Here ai was my code translator while I strictly was the
architect and instructor. It all started when i asked myself that "why and
how i remember any past memory instantly without searching inside my head".
This became the design principle of my app. Thus I solved a fundamental git
problem of tracking a single note throughout the history by embedding uuid
in every commit.

                                  Page 1 of 7    >>                             

[E]dit  [V]iew  [X]port  [T]imeline  [R]ename  [B]ack  [N]ext  [Q]uit

> 
Enter fullscreen mode Exit fullscreen mode

                         Activity: aa and subnotebooks                          

[1] erased file: scipt.sh                                                [root]
[2] renamed note: regular_internal_note β†’ regul...        [.../depth09/depth10]
[3] updated file: index.html 65(+) 3(-)                   [.../depth09/depth10]
[4] updated file: index.html 5(+) 5(-)                    [.../depth09/depth10]
[5] restored note: regular_internal_note                  [.../depth09/depth10]
[6] deleted note: regular_internal_note                   [.../depth09/depth10]
[7] erased note: regular_external_note                    [.../depth09/depth10]
[8] updated note: regular_internal_note 6(+) 0(-)         [.../depth09/depth10]
[9] created sub: depth11                                  [.../depth10/depth11]
[10] created file: .bashrc 178(+)                                        [root]
[11] created file: research.tex 62(+)                                    [root]
[12] created file: Dockerfile 255(+)                                     [root]
[13] created file: index.html 94(+)                       [.../depth09/depth10]
[14] created note: ff 3(+)                                               [root]
[15] created note: a 1(+)                                                [root]

                                  Page 1 of 2    >>                             

[V]iew  [B]ack  [N]ext  [Q]uit

>  
Enter fullscreen mode Exit fullscreen mode

                              Timeline: 4 versions                              

[1] 2026-06-09 00:13 [RENAMED] regular_internal_note  β†’ regular_internal_...
[2] 2026-06-09 00:09 [RESTORED]
[3] 2026-06-09 00:09 [DELETED]
[4] 2026-06-09 00:06 [UPDATED] 6(+) 0(-)

[V]iew  [B]ack

> 
Enter fullscreen mode Exit fullscreen mode

                                 Notebook: πŸ” aa                                 

Type: πŸ” Encrypted (unlocked)
Path: /home/user/terminal-notes/notebooks_root/aa-20262607180201

Account: user-name@github
Repository: aa-20262607180201
Visibility: πŸ”’ PRIVATE
Last modified: Jun 07, 2026 20:46

Vault: default

Notes: 4
Files: 0
Subnotebooks: 0

[V]isibility  [S]ync  [D]elete  [C]hange  [A]ctivity  [B]ack  [Q]uit

>
Enter fullscreen mode Exit fullscreen mode

                              Change Options - aa                               


  [1] Change password
  [2] Change Autolock status
  [3] Change remote location
  [4] Change trusted device status
  [5] Change vault location

  Press Enter to cancel

  Choose:
Enter fullscreen mode Exit fullscreen mode
꘎ SECURELY ERASING ENTIRE NOTEBOOK: aa
  This will DELETE ALL COMMITS and remove the folder permanently!

  Repository: /home/user/terminal-notes/notebooks_root/aa-20262607180201

  Enter notebook password to confirm erasure (3 attempts):
Enter fullscreen mode Exit fullscreen mode

πŸ“¦ 1. Requirements

  • Python 3.13 (any version for installed cffi and cryptography)
  • Git (for history, timeline, restoration)
  • No pip install needed (cryptography is bundled in assets/)
  • nvim / micro (configurable via config.json)
  • Linux / Windows / Mac (designed to run on any OS)

(tested only on Debian Linux 13)


πŸš€ 2. Executables

terminal_notes_ui.py - Main notebook app β€” encrypted notes, search, Git timeline, restore

Run from project folder:

python3 terminal_notes_ui.py
Enter fullscreen mode Exit fullscreen mode

or

git clone https://github.com/sys-ronin/terminal-notes.git
cd terminal-notes
chmod 700 terminal_notes_ui.py
./terminal_notes_ui.py
Enter fullscreen mode Exit fullscreen mode

single command

git clone https://github.com/sys-ronin/terminal-notes.git && cd terminal-notes && python3 terminal_notes_ui.py
Enter fullscreen mode Exit fullscreen mode

πŸ” 3. Search (from main app)

Command Description
s query Search current notebook
s g* query Search all notebooks
s created* Show all created notes
s deleted* Show deleted notes (restorable)
s in* notebookname Search inside a specific notebook
s date* 15-05-2026 Filter by exact date
s today* Today’s changes
s thisweek* This week’s activity
s created* file* in* projects Created files inside the "projects" notebook

πŸ’‘ Tips:

  • j1, j2, jb β†’ jump between notebooks
  • l β†’ lock / unlock encrypted notebooks
  • b β†’ back
  • q β†’ quit
  • s β†’ search

The entire GitHub repository with all its source code and documentation are explicitly part of the prior art (Public + timestamped + enabling)

A fact – my app itself has no name printed except on documents, like an app with no name. I could not find a place to put it and it is not needed inside the environment.

The rest is explained in documentations

email : sys_ronin@protonmail.com

Write without friction inside the best possible environment - The Terminal

sys-ronin

Top comments (0)