Ekphos
An open source, lightweight, fast, terminal-based markdown research tool built with Rust.

Requirements
- Rust 1.70+ (run
rustup updateto update) - A terminal emulator (for inline image preview: iTerm2, Kitty, WezTerm, Ghostty, or Sixel-compatible terminal)
Installation
Using Make
Using Cargo
Using Docker
and after the container is up, you can SSH into the machine with the following command
ssh ekphos@your-docker-container-ip
Update
CLI Options
| Flag | Description |
|---|---|
-h, --help |
Print help information |
-v, --version |
Print version |
-c, --config |
Print config file path |
-d, --dir |
Print notes directory |
Uninstall
If installed with Make
If installed with Cargo
Remove config (optional)
Configuration
Configuration is stored in ~/.config/ekphos/config.toml.
# General settings
= "catppuccin-mocha"
= "~/Documents/ekphos"
# Keybinds
[]
= "q"
= "e"
= "ctrl+s"
= "k"
= "j"
= "tab"
Themes
Themes are stored in ~/.config/ekphos/themes/.
Default Themes
catppuccin-mocha(default)catppuccin-lattecatppuccin-frappecatppuccin-macchiato
Custom Themes
Create a .toml file in the themes directory:
# ~/.config/ekphos/themes/mytheme.toml
= "mytheme"
[]
= "#1e1e2e"
= "#313244"
= "#cdd6f4"
= "#a6adc8"
= "#6c7086"
= "#b4befe"
= "#fab387"
= "#a6e3a1"
= "#f38ba8"
= "#f9e2af"
Then set in config:
= "mytheme"
Usage
Layout
Ekphos has three panels:
- Sidebar (left): List of notes
- Content (center): Note content with markdown rendering
- Outline (right): Auto-generated headings for quick navigation
Use Tab to switch between panels.
Creating Notes
- Press
nto create a new note - Enter the note name
- Press
Enterto confirm
Notes are stored as .md files in your configured notes directory.
Renaming Notes
- Select the note in the sidebar
- Press
rto rename - Edit the note name (pre-filled with current name)
- Press
Enterto confirm orEscto cancel
Deleting Notes
- Select the note in the sidebar
- Press
dto delete - Confirm with
yor cancel withn
Editing Notes
- Select a note in the sidebar
- Press
eto enter edit mode - Edit using vim keybindings
- Press
Ctrl+sto save - Press
Escto exit edit mode
Vim Keybindings (Edit Mode)
| Key | Action |
|---|---|
i |
Insert mode |
a |
Insert after cursor |
A |
Insert at end of line |
I |
Insert at start of line |
o |
New line below |
O |
New line above |
v |
Visual mode |
h/j/k/l |
Move cursor |
w/b |
Word forward/back |
0/$ |
Line start/end |
gg/G |
Top/bottom of file |
x |
Delete character |
dd |
Delete line |
y |
Yank (copy) line |
p |
Paste |
u |
Undo |
Ctrl+r |
Redo |
Visual Mode
Press v in normal mode to enter visual mode for text selection.
| Key | Action |
|---|---|
y |
Yank selection |
d |
Delete selection |
Esc |
Cancel |
Supported Markdown
| Syntax | Rendered As |
|---|---|
# Heading |
◆ HEADING (blue) |
## Heading |
■ Heading (green) |
### Heading |
▸ Heading (yellow) |
#### Heading |
› Heading (mauve) |
##### Heading |
Heading (teal) |
###### Heading |
Heading (subtle) |
- item |
• item |
 |
Inline image |
Adding Images
Use standard markdown image syntax:



Supported formats: PNG, JPEG, GIF, WebP, BMP
Viewing Images
- Navigate to the image line in content view
- Press
Enteroroto open in system viewer
Terminal Image Support
For inline image preview, use a compatible terminal:
- iTerm2 (macOS)
- Kitty
- WezTerm
- Sixel-enabled terminals
Using the Outline
The outline panel shows all headings in your note:
- Press
Tabto focus the outline - Use
j/kto navigate headings - Press
Enterto jump to that heading
Keyboard Shortcuts
| Key | Action |
|---|---|
j/k |
Navigate up/down |
Tab |
Switch focus |
/ |
Search notes |
n |
New note |
r |
Rename note |
d |
Delete note |
e |
Edit mode |
Esc |
Exit edit mode / Cancel |
Ctrl+s |
Save |
Enter |
Open image / Jump to heading |
? |
Show help |
q |
Quit |
Contributing
Ekphos is open source and contributions are welcome.
License
MIT
Disclaimer
This project is in an early development stage, so there will be frequent unexpected breaking changes throughout the pre-release, but things should remain usable throughout this stage.
Socials
We don't have socials yet, but things are open for discussion, you can DM hanebox via telegram here: https://t.me/havernut