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 Cargo
cargo install ekphos
Using Docker
git clone https://github.com/hanebox/ekphos.git
cd ekphos
docker build -t ekphos-ssh .
docker compose up -d
and after the container is up, you can SSH into the machine with the following command ssh ekphos@your-docker-container-ip
Using Make
git clone https://github.com/hanebox/ekphos.git
cd ekphos
make
sudo make install
Update
cargo install ekphos
CLI Options
| Flag | Description | …
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 Cargo
cargo install ekphos
Using Docker
git clone https://github.com/hanebox/ekphos.git
cd ekphos
docker build -t ekphos-ssh .
docker compose up -d
and after the container is up, you can SSH into the machine with the following command ssh ekphos@your-docker-container-ip
Using Make
git clone https://github.com/hanebox/ekphos.git
cd ekphos
make
sudo make install
Update
cargo install ekphos
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
sudo make uninstall
If installed with Cargo
cargo uninstall ekphos
Remove config (optional)
rm -rf ~/.config/ekphos
Configuration
Configuration is stored in ~/.config/ekphos/config.toml.
# General settings
theme = "catppuccin-mocha"
notes_dir = "~/Documents/ekphos"
# Keybinds
[keybinds]
quit = "q"
edit = "e"
save = "ctrl+s"
navigate_up = "k"
navigate_down = "j"
switch_focus = "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
name = "mytheme"
[colors]
base = "#1e1e2e"
surface0 = "#313244"
text = "#cdd6f4"
subtext0 = "#a6adc8"
overlay0 = "#6c7086"
lavender = "#b4befe"
peach = "#fab387"
green = "#a6e3a1"
red = "#f38ba8"
yellow = "#f9e2af"
Then set in config:
theme = "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.
git clone https://github.com/hanebox/ekphos.git
cd ekphos
make run
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