- Requirements
- CLI Command Table
- In-App Control Table
- My Private Repositories
- Core Workflows
- Troubleshooting
- Rust toolchain:
cargo,rustc - Internet connection for GitHub API requests
- Local
gitavailable inPATH
| Command | Purpose | Example | Notes |
|---|---|---|---|
gitnapse |
Run TUI with default options | gitnapse |
Defaults to query xscriptor |
gitnapse run ... |
Run TUI with explicit parameters | gitnapse run --query "xscriptor" --page 1 --per-page 30 --cache-ttl-secs 900 |
Controls search bootstrap and preview cache TTL |
gitnapse run --query "@me" |
List authenticated repositories (including private) | gitnapse run --query "@me" |
Requires valid login/token; supports optional filters: text terms and language: |
gitnapse auth set |
Store GitHub token interactively | gitnapse auth set |
Hidden prompt for secure input |
gitnapse auth set --token ... |
Store token from argument | gitnapse auth set --token YOUR_GITHUB_TOKEN |
Useful for scripted environments |
gitnapse auth status |
Display token source availability | gitnapse auth status |
Shows env-token and stored-token state |
gitnapse auth clear |
Remove stored token | gitnapse auth clear |
Does not modify GITHUB_TOKEN env variable |
gitnapse auth oauth login ... |
OAuth login (device flow via octocrab) | gitnapse auth oauth login --client-id YOUR_OAUTH_CLIENT_ID --scope read:user --scope repo |
Starts browser-based device authorization and stores access token securely |
gitnapse auth oauth status |
Show OAuth/authentication state | gitnapse auth oauth status |
Prints oauth_logged_in=true|false, authenticated=true|false, and current user when available |
gitnapse download-file ... |
Download one file (curl/wget-like) | gitnapse download-file --repo owner/repo --path src/main.rs --out ./main.rs |
Supports --ref for branch/tag/sha |
| Key / Input | Area | Action | Details |
|---|---|---|---|
/ | Global | Open search input | Edit repository search query |
Enter | Contextual | Execute/open/preview | Search, open repo, or preview selected file |
Tab | Global | Cycle focus | Repos -> Tree -> Preview |
Esc | Global | Back navigation | Close modal or return from repo view to result list |
↑ / ↓ | Tree / Preview | Navigate / Scroll | Moves selection in tree or scrolls preview when focused |
PgUp / PgDn | Preview | Fast scroll | Page-sized preview movement |
Home / End | Preview | Jump bounds | Go to top / bottom of preview |
← / [ | Repos list | Previous page | Move to previous GitHub search page |
→ / ] | Repos list | Next page | Move to next GitHub search page |
b | Repo view | Branch picker | Open branch selector modal |
f | Repo view | File search | Find file by name/path substring in loaded tree |
v | Repo view | Toggle tree text view | Show whole repository tree in preview pane |
c | Repo view | Clone modal | Prompt destination path and run clone |
d | Preview | Download modal | Save current previewed file to local path |
Del | Path modals | Clear path input | Works in clone/download path inputs |
t | Global | Token modal | Save token from inside the TUI |
o | Global | OAuth quick check | Does not start login; runs status check and tells you to use CLI login command |
q | Global | Quit | Exit application |
| Mouse left click | Tree / Preview / Repos | Focus & select | Single click selects, double click opens (repo/file) |
| Mouse wheel | Tree / Preview | Scroll | Scroll behavior depends on pointer position |
GitHub search endpoint does not guarantee full private-repository discovery by username query. To list your own repositories (including private ones), use the authenticated query mode:
- Inside TUI search input (
/):@me - Optional text filter:
@me rustorme:rust - Language filter:
@me language:rustor@me lang:javascript - Combined filters:
@me language:rust privateor@me language:rust,javascript api - CLI start:
gitnapse run --query "@me"
This mode requires a valid authenticated session/token and uses your account repository listing API scope.
- Search repositories with
/thenEnter. - Select one result and open it with
Enteror double click. - Browse files in tree pane; press
Enteror double click file for preview. - Use
Tabto focus preview and scroll long content.
- Press
bin repo view. - Select branch with arrows.
- Press
Enterto reload tree/preview context on that branch.
- Open repository view.
- Press
cand set destination path. - Press
Enterto clone.
- Open preview for a file.
- Press
d. - Provide output path.
- Press
Enterto save.
- If API limits are hit, set a token with
gitnapse auth setor exportGITHUB_TOKEN. - For OAuth device flow, you can provide
--client-id; if omitted, GitNapse uses env variables and then built-in default OAuth Client ID. - You can also use
GITHUB_CLIENT_IDas compatibility fallback for OAuth client ID. - If OAuth URL is not clickable in your terminal, GitNapse still tries to auto-open browser; otherwise copy/open the displayed URL manually.
- To inspect your private repositories from TUI search, use
@me(or@me keywordto filter). - If token is saved but requests fail, run
gitnapse auth statusand validate token permissions. - If clone/download fails, verify destination path permissions and filesystem access.
- If no repos appear, refine query terms (owner/org/repo keywords).