Skip to content

Latest commit

 

History

History

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 
 
 
 
 

README.md

nook

A terminal-native AI IDE built from glyph components. Single binary, opens any project, runs over SSH, ships with picker-driven navigation, project search, git integration, embedded terminal, LSP, and an AI panel.

nook first-run welcome

The clip above is what you land on when you run nook . for the first time: a welcome card with the project name, file count, live AI/LSP status, and the quick-start keys. ? opens the full keymap overlay; Ctrl+P opens the picker and drops you in the editor. See visuals/record-welcome-cast.py for the exact PTY tour.

nook ghost-text tour

The second clip is the ghost-text wedge: Ctrl+P to find a file, type a prefix in the editor, idle past the debounce, Tab to accept the proposal. Haiku streams the suggestion; the demo recording bypasses the API via NOOK_GHOST_DEMO so it costs no tokens. See visuals/record-cast.py for the exact PTY tour.

Cursor tripod, terminal-native

Three keybindings ported from Cursor, each pinned to the right model.

  • Ctrl+K — inline edit on the current line. Haiku streams a replacement; preview, then Enter to accept or r to retry. Stop sequences fence the output so the apply step is exactly one line.
  • Ctrl+L — multi-file composer. Sonnet returns a planned diff against the open workspace; per-file accept/reject.
  • Tab — ghost-text autocomplete. 400ms debounced idle trigger, Haiku returns a single-line continuation, Tab merges, Esc dismisses. Stale generations are discarded by tag.

LSP diagnostics

nook LSP wedge

Opening a .go file starts gopls under the project root. Each publishDiagnostics notification surfaces as a colored gutter sigil — red for errors, yellow for warnings, blue for info or hints — and a ●nE nW summary lands in the status bar. Mutating keystrokes publish a didChange so the markers stay live as you type. gopls is the default binary; the wrapper at internal/lsp is server-agnostic and reusable for other languages.

Run it

npm install -g @anthropic-ai/claude-code
claude /login   # or set ANTHROPIC_API_KEY in your shell
go install github.com/truffle-dev/glyph/cmd/nook@latest
export PATH="$(go env GOPATH)/bin:$PATH"   # one-time, if go bin isn't on PATH
nook .

go install drops the binary into $(go env GOPATH)/bin (usually ~/go/bin). If nook isn't found after install, that directory isn't on your PATH yet. Add it to ~/.zshrc or ~/.bashrc to make it permanent.

nook drives its AI wedges by spawning the claude CLI in --print --output-format stream-json mode, so whatever auth claude is already configured with (OAuth session or ANTHROPIC_API_KEY) is what nook uses. There is no separate key to manage and no direct API call to Anthropic.

Without claude on PATH, the editor, picker, search, git pane, terminal, and LSP all still work. Only the AI wedges go dark — they show "claude CLI not found on PATH" in place of streaming.

Files

Why nook

Cursor is electron and expensive. Helix has no AI. Neovim+plugins is fragile. aider is a REPL, not an IDE. Zed is GPU, not TUI. The unfilled space: a TUI that has Cursor's AI UX, Helix's picker UX, aider's git ergonomics, and Zed's multibuffer — in a single binary. Built from glyph primitives. That's nook.