{"id":44869755,"url":"https://github.com/subinium/agf","last_synced_at":"2026-05-29T03:01:35.346Z","repository":{"id":338968443,"uuid":"1159909844","full_name":"subinium/agf","owner":"subinium","description":"AI Agent Session Finder — TUI to find, resume and manage sessions across Claude Code, Codex, Gemini, Kiro, OpenCode, Cursor, pi, Hermes","archived":false,"fork":false,"pushed_at":"2026-05-23T01:10:12.000Z","size":2018,"stargazers_count":127,"open_issues_count":2,"forks_count":13,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-05-23T03:32:40.971Z","etag":null,"topics":["agentic-workflow","ai-agents","ai-coding","claude-code","cli","codex","developer-tools","fuzzy-search","gemini-cli","ratatui","rust","rust-cli","session-manager","terminal","tui"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/subinium.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-02-17T10:08:53.000Z","updated_at":"2026-05-23T01:10:05.000Z","dependencies_parsed_at":null,"dependency_job_id":"a26a6b76-0852-423f-9bf8-ef4c0de4f254","html_url":"https://github.com/subinium/agf","commit_stats":null,"previous_names":["subinium/agf"],"tags_count":36,"template":false,"template_full_name":null,"purl":"pkg:github/subinium/agf","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/subinium%2Fagf","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/subinium%2Fagf/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/subinium%2Fagf/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/subinium%2Fagf/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/subinium","download_url":"https://codeload.github.com/subinium/agf/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/subinium%2Fagf/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33634611,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-05-29T02:00:06.066Z","response_time":107,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["agentic-workflow","ai-agents","ai-coding","claude-code","cli","codex","developer-tools","fuzzy-search","gemini-cli","ratatui","rust","rust-cli","session-manager","terminal","tui"],"created_at":"2026-02-17T12:26:01.793Z","updated_at":"2026-05-29T03:01:35.339Z","avatar_url":"https://github.com/subinium.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# agf\n\n[![CI](https://github.com/subinium/agf/actions/workflows/ci.yml/badge.svg)](https://github.com/subinium/agf/actions)\n[![Release](https://img.shields.io/github/v/release/subinium/agf?include_prereleases\u0026sort=semver)](https://github.com/subinium/agf/releases)\n[![crates.io](https://img.shields.io/crates/v/agf.svg)](https://crates.io/crates/agf)\n[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE)\n\n\u003e Find the AI coding session you meant to resume.\n\n`agf` is a local-first fuzzy finder for AI coding-agent sessions.\nSearch local sessions across **Claude Code**, **Codex**, **Gemini CLI**, **Cursor CLI**, **OpenCode**, **Kiro**, **pi**, and **Hermes** — then resume the right one in a keystroke.\n\n![agf demo](./assets/demo.gif)\n\n## Install\n\n```bash\ncargo install agf\nagf setup\nagf\n```\n\nRequires a Rust toolchain (`rustup` recommended). Prebuilt binaries for macOS, Linux, and Windows are also available on the [Releases page](https://github.com/subinium/agf/releases).\n\n### Quick Resume (no TUI)\n\n```bash\nagf resume project-name   # fuzzy-matches and resumes the best match directly\n```\n\n## Why agf?\n\nAI coding agents are great at keeping context — until you lose the terminal.\n\nYou switch projects, close a tab, forget the session ID, or resume the wrong agent.\nThen you either dig through history files or start over.\n\n`agf` gives you one searchable list of local agent sessions and resumes the right one.\n\n## Supported agents\n\n`agf` reads the session files each agent already stores locally. No account, no cloud sync, no extra agent process.\n\n| Agent | Resume command | Local session source |\n|:---|:---|:---|\n| [Claude Code](https://github.com/anthropics/claude-code) | `claude --resume \u003cid\u003e` | `~/.claude/history.jsonl` + `~/.claude/projects/` |\n| [Codex](https://github.com/openai/codex) | `codex resume \u003cid\u003e` | `~/.codex/sessions/**/*.jsonl` |\n| [Gemini CLI](https://github.com/google-gemini/gemini-cli) | `gemini --resume \u003cid\u003e` | `~/.gemini/tmp/\u003cproject\u003e/chats/session-*.json` |\n| [Cursor CLI](https://cursor.com/docs/cli/overview) | `cursor-agent --resume \u003cid\u003e` | `~/.cursor/projects/*/agent-transcripts/\u003cid\u003e/\u003cid\u003e.jsonl` (Composer 2+)\u003cbr\u003e`~/.cursor/projects/*/agent-transcripts/\u003cid\u003e.txt` (legacy) |\n| [OpenCode](https://github.com/opencode-ai/opencode) | `opencode -s \u003cid\u003e` | `~/.local/share/opencode/opencode.db` |\n| [Kiro](https://kiro.dev) | `kiro-cli chat --resume` *(no per-session resume — always opens the latest session for the cwd)* | `~/Library/Application Support/kiro-cli/data.sqlite3` |\n| [pi](https://github.com/badlogic/pi-mono) | `pi --session \u003cid\u003e` | `~/.pi/agent/sessions/\u003ccwd\u003e/*.jsonl` |\n| [Hermes](https://github.com/NousResearch/hermes-agent) | `hermes --resume \u003cid\u003e` *(cwd-independent — resumes in your current shell directory)* | `~/.hermes/state.db` |\n\n\u003cdetails\u003e\n\u003csummary\u003eFull session storage paths\u003c/summary\u003e\n\n| Agent | Format | Default Path |\n|:---|:---|:---|\n| Claude Code | JSONL | `~/.claude/history.jsonl` (sessions)\u003cbr\u003e`~/.claude/projects/*/` (worktree detection) |\n| Codex | JSONL | `~/.codex/sessions/YYYY/MM/DD/rollout-*.jsonl` |\n| OpenCode | SQLite | `~/.local/share/opencode/opencode.db` |\n| pi | JSONL | `~/.pi/agent/sessions/--\u003cencoded-cwd\u003e--/\u003cts\u003e_\u003cid\u003e.jsonl` |\n| Kiro | SQLite | macOS: `~/Library/Application Support/kiro-cli/data.sqlite3`\u003cbr\u003eLinux: `~/.local/share/kiro-cli/data.sqlite3` |\n| Cursor CLI | SQLite + JSONL/TXT | `~/.cursor/chats/\u003cworkspace\u003e/\u003cid\u003e/store.db` (metadata; required for `.jsonl` to be resumable)\u003cbr\u003e`~/.cursor/projects/*/agent-transcripts/\u003cid\u003e/\u003cid\u003e.jsonl` (Composer 2+ transcript)\u003cbr\u003e`~/.cursor/projects/*/agent-transcripts/\u003cid\u003e.txt` (legacy transcript) |\n| Gemini | JSON | `~/.gemini/tmp/\u003cproject\u003e/chats/session-\u003cdate\u003e-\u003cid\u003e.json`\u003cbr\u003e`\u003cproject\u003e` is a named dir or SHA-256 hash of the project path\u003cbr\u003eProject paths resolved via `~/.gemini/projects.json` |\n| Hermes | SQLite | `~/.hermes/state.db` (sessions + messages)\u003cbr\u003eJSON dumps in `~/.hermes/sessions/session_\u003cid\u003e.json`\u003cbr\u003eHermes is cwd-independent — resume runs in your current shell directory |\n\n\u003c/details\u003e\n\n## Features\n\n- **Cross-agent search** — see all supported agents in one list\n- **Fuzzy search** — find sessions by project name, path, branch, or summary\n- **One-key resume** — resume the selected session with the right agent command\n- **Quick resume** — `agf resume \u003cquery\u003e` skips the TUI entirely\n- **Bulk delete** — `Ctrl+D` to multi-select and clean up stale sessions\n- **Project awareness** — git branches and Claude Code `--worktree` sessions surface in the UI\n\nAlso supports Unicode/CJK search, mouse navigation, agent filters, permission/approval-mode picker, agent auto-detection, and shell wrappers for zsh, bash, fish, and PowerShell.\n\n## Basic controls\n\n| Key | Action |\n|:---|:---|\n| Type anything | Fuzzy search |\n| `↑` `↓` / `Ctrl+K` `Ctrl+J` | Navigate |\n| `Enter` | Open action menu |\n| `Tab` / `Shift+Tab` | Cycle agent filter |\n| `→` / `Ctrl+L` | Preview session |\n| `Ctrl+D` | Bulk delete |\n| `?` | Help / settings |\n| `Esc` | Quit |\n\n\u003cdetails\u003e\n\u003csummary\u003eFull keybindings\u003c/summary\u003e\n\n### Browse\n\n| Key | Action |\n|:---|:---|\n| Type anything | Fuzzy search |\n| `↑` `↓` / `Ctrl+K` `Ctrl+J` | Navigate |\n| `[` `]` | Cycle session summary |\n| `Enter` | Open action menu |\n| `→` / `Ctrl+L` | Preview session details |\n| `Tab` / `Shift+Tab` | Cycle agent filter |\n| `Ctrl+S` | Cycle sort (time / name / agent) |\n| `Ctrl+D` | Enter bulk delete mode |\n| `?` | Help / settings |\n| `Esc` | Quit |\n\n### Bulk Delete (`Ctrl+D`)\n\n| Key | Action |\n|:---|:---|\n| `Space` | Toggle selection + move down |\n| `↑` `↓` / `Ctrl+K` `Ctrl+J` | Navigate |\n| `Enter` | Confirm deletion (when items selected) |\n| `Esc` | Cancel and return to browse |\n\n### New Session (Agent Select)\n\n| Key | Action |\n|:---|:---|\n| `1`-`9` | Quick select agent |\n| `Tab` | Open permission/approval mode picker |\n| `Enter` | Launch with default mode |\n| `Esc` | Back |\n\n\u003c/details\u003e\n\n## Configuration\n\nOptional. Create `~/.config/agf/config.toml`:\n\n```toml\nsort_by = \"time\"            # \"time\" | \"name\" | \"agent\"\nmax_sessions = 200\nsearch_scope = \"name_path\"  # \"name_path\" (default) | \"all\" (include summaries)\nsummary_search_count = 5    # number of summaries included when search_scope = \"all\"\n```\n\nYou can also edit `search_scope` and `summary_search_count` interactively by pressing `?` in the TUI.\n\n## Shell integration\n\n`agf setup` auto-detects your shell and installs the wrapper. Supported shells:\n\n- **zsh / bash** — appends to `~/.zshrc` or `~/.bashrc`\n- **fish** — writes to `~/.config/fish/config.fish`\n- **PowerShell** (Windows or cross-platform `pwsh`) — writes to `$PROFILE.CurrentUserAllHosts` (`Documents\\PowerShell\\profile.ps1` on Windows, `~/.config/powershell/profile.ps1` elsewhere)\n\nIf auto-detection misses your shell, run the matching `agf init` form manually:\n\n```bash\neval \"$(agf init zsh)\"                               # zsh\neval \"$(agf init bash)\"                              # bash\nagf init fish | source                               # fish\nagf init powershell | Out-String | Invoke-Expression # PowerShell\n```\n\nAfter upgrading, run `agf setup` again (or restart your shell) to apply the latest wrapper.\nSee [CHANGELOG.md](CHANGELOG.md) for release notes.\n\n## Requirements\n\n- macOS, Linux, or Windows (PowerShell 5.1+ / PowerShell 7+)\n- One or more of: `claude`, `codex`, `opencode`, `pi`, `kiro-cli`, `cursor-agent`, `gemini`\n\n## Install from source\n\n```bash\ngit clone https://github.com/subinium/agf.git\ncd agf\ncargo install --path .\nagf setup\n```\n\n## Limitations\n\n`agf` works best with agents that store resumable sessions locally.\n\n**Amp** is not supported yet because its sessions are stored remotely, which makes it hard to reliably resolve local project paths from session metadata. We are monitoring upstream changes and will add support when feasible.\n\n## Built with\n\n`agf` is written in Rust and built with [SuperLightTUI (SLT)](https://github.com/subinium/SuperLightTUI) — an immediate-mode terminal UI library for Rust.\n\n## Contributing\n\nIssues and PRs are welcome.\n\n[![Contributors](https://contrib.rocks/image?repo=subinium/agf)](https://github.com/subinium/agf/graphs/contributors)\n\n## License\n\n[MIT](LICENSE)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsubinium%2Fagf","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsubinium%2Fagf","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsubinium%2Fagf/lists"}