@itelos-packages/1vt
v1.0.0
Published
Vim-like terminal UI for 1Password
Readme
1vt
A vim-like terminal UI for 1Password. Browse vaults, search items, and copy credentials — all without leaving the terminal.
Built with Ink (React for CLI), powered by the 1Password CLI.
1vt > Private > Items (142)
─────────────────────────────────────────────────────────
1 > [Login] GitHub github.com
1 [Login] Gmail gmail.com
2 [Pass] AWS Root Key
3 [Note] Recovery Codes
4 [Login] Netflix netflix.com
5 [Card] Visa *4242
6 [Login] Twitter x.com
─────────────────────────────────────────────────────────
NORMAL j/k:nav enter:open /:search 3:142 TopFeatures
- Vim motions —
j/k,gg/G,Ctrl-d/Ctrl-u,H/M/L, count prefixes (5j,12G) - Relative line numbers — just like
:set relativenumber - Fuzzy search — press
/to filter,Enterto lock the filter,cto clear - Copy anything —
ycopies selected field,p/u/tfor password/username/TOTP - Open in browser —
oopens the item URL - Fast — vaults and item metadata are cached locally (AES-256-GCM encrypted, key stored in macOS Keychain). Secrets are never cached.
- Full-screen — uses the alternate terminal buffer, restores your terminal on exit
Prerequisites
- Node.js >= 18
- 1Password CLI (
op) installed - 1Password desktop app with CLI integration enabled (Settings > Developer)
Install
# From source
git clone https://github.com/itelo/1vt.git
cd 1vt
pnpm install
pnpm devKeybindings
Navigation
| Key | Action |
|-----|--------|
| j / ↓ | Move down |
| k / ↑ | Move up |
| gg | Jump to first item |
| G | Jump to last item |
| [n]G | Jump to line n |
| [n]j / [n]k | Move n lines |
| Ctrl-d | Half-page down |
| Ctrl-u | Half-page up |
| H / M / L | Screen top / middle / bottom |
| Enter | Select / open |
Search
| Key | Action |
|-----|--------|
| / | Start search |
| Enter | Finish search (keep filter) |
| Esc | Cancel search (clear filter) |
| c | Clear active filter |
Item Detail
| Key | Action |
|-----|--------|
| y | Copy selected field |
| p | Copy password |
| u | Copy username |
| t | Copy TOTP |
| o | Open URL in browser |
General
| Key | Action |
|-----|--------|
| q / Esc | Go back |
| Q | Quit from any screen |
| R | Clear cache and refresh |
| Ctrl-c | Force quit |
Architecture
src/
├── cli.tsx # Entry point
├── app.tsx # Root component + global keybindings
├── screens/ # Auth, vault list, item list, item detail
├── components/ # Fullscreen, ListView, Footer, Header
├── hooks/ # useVimNavigation (motions + counts)
├── stores/ # Zustand (navigation, data cache, UI state)
├── services/ # op CLI wrapper, clipboard, encrypted cache
└── lib/ # Types, constants, formatting- No secrets on disk — only vault names, item titles, categories, and URLs are cached. Passwords, TOTP seeds, and field values are fetched live from
opeach time. - Encrypted cache — cached metadata is AES-256-GCM encrypted. The encryption key is stored in the macOS Keychain, never on the filesystem.
- Async CLI calls — all
opcommands run asynchronously viaexeca, keeping the UI responsive.
License
MIT
