{"id":28033084,"url":"https://github.com/terror/axil","last_synced_at":"2026-04-02T17:46:30.610Z","repository":{"id":286497780,"uuid":"961564949","full_name":"terror/axil","owner":"terror","description":"A terminal user interface for tree-sitter","archived":false,"fork":false,"pushed_at":"2026-03-29T03:36:39.000Z","size":197,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2026-03-29T03:47:46.243Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"cc0-1.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/terror.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING","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}},"created_at":"2025-04-06T19:15:13.000Z","updated_at":"2026-03-29T03:36:12.000Z","dependencies_parsed_at":"2025-04-06T21:20:04.778Z","dependency_job_id":"e285d5d4-4b27-47eb-ae53-9585e2b37abf","html_url":"https://github.com/terror/axil","commit_stats":null,"previous_names":["terror/axil"],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/terror/axil","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/terror%2Faxil","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/terror%2Faxil/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/terror%2Faxil/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/terror%2Faxil/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/terror","download_url":"https://codeload.github.com/terror/axil/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/terror%2Faxil/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31312592,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-02T12:59:32.332Z","status":"ssl_error","status_checked_at":"2026-04-02T12:54:48.875Z","response_time":89,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":[],"created_at":"2025-05-11T09:12:17.846Z","updated_at":"2026-04-02T17:46:30.603Z","avatar_url":"https://github.com/terror.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"## axil\n\n[![release](https://img.shields.io/github/release/terror/axil.svg?label=release\u0026style=flat\u0026labelColor=1d1d1d\u0026color=424242\u0026logo=github\u0026logoColor=white)](https://github.com/terror/axil/releases/latest)\n[![build](https://img.shields.io/github/actions/workflow/status/terror/axil/ci.yaml?branch=master\u0026style=flat\u0026labelColor=1d1d1d\u0026color=424242\u0026logo=GitHub%20Actions\u0026logoColor=white\u0026label=build)](https://github.com/terror/axil/actions/workflows/ci.yaml)\n[![codecov](https://img.shields.io/codecov/c/gh/terror/axil?style=flat\u0026labelColor=1d1d1d\u0026color=424242\u0026logo=Codecov\u0026logoColor=white)](https://codecov.io/gh/terror/axil)\n[![downloads](https://img.shields.io/github/downloads/terror/axil/total.svg?style=flat\u0026labelColor=1d1d1d\u0026color=424242\u0026logo=github\u0026logoColor=white)](https://github.com/terror/axil/releases)\n\n`axil` is a terminal user interface for\n[tree-sitter](https://tree-sitter.github.io/tree-sitter/), the parser generator\ntool and incremental parsing library.\n\n\u003cimg width=\"1667\" alt=\"demo\" src=\"screenshot.png\" /\u003e\n\n`axil` lets you explore and query syntax trees interactively, including:\n\n- Browse the full syntax tree in an interactive TUI with vim-style navigation\n  (`h`/`j`/`k`/`l`), collapsible nodes, and half-page scrolling.\n\n- Search for node types with `/`, jumping between matches with `n`/`N`.\n\n- Run tree-sitter queries live with `?`, seeing matched nodes highlighted in\n  real time.\n\n- Yank the source text of any node to the clipboard with `y`.\n\n- Mouse support for click-to-navigate and scroll wheel.\n\n- Print the syntax tree to stdout for non-interactive use, with optional\n  `--query` highlighting.\n\n- Supports 15+ languages out of the box: Bash, C, C++, CSS, Go, HTML, and more.\n\nIf you need help with `axil` please feel free to open an issue. Feature requests\nand bug reports are always welcome!\n\n## Installation\n\n`axil` should run on any system, including Linux, MacOS, and the BSDs.\n\nThe easiest way to install it is by using\n[cargo](https://doc.rust-lang.org/cargo/index.html), the Rust package manager:\n\n```bash\ncargo install axil\n```\n\nOtherwise, see below for the complete package list:\n\n#### Cross-platform\n\n\u003ctable\u003e\n  \u003cthead\u003e\n    \u003ctr\u003e\n      \u003cth\u003ePackage Manager\u003c/th\u003e\n      \u003cth\u003ePackage\u003c/th\u003e\n      \u003cth\u003eCommand\u003c/th\u003e\n    \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n    \u003ctr\u003e\n      \u003ctd\u003e\u003ca href=https://www.rust-lang.org\u003eCargo\u003c/a\u003e\u003c/td\u003e\n      \u003ctd\u003e\u003ca href=https://crates.io/crates/axil\u003eaxil\u003c/a\u003e\u003c/td\u003e\n      \u003ctd\u003e\u003ccode\u003ecargo install axil\u003c/code\u003e\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd\u003e\u003ca href=https://brew.sh\u003eHomebrew\u003c/a\u003e\u003c/td\u003e\n      \u003ctd\u003e\u003ca href=https://github.com/terror/homebrew-tap\u003eterror/tap/axil\u003c/a\u003e\u003c/td\u003e\n      \u003ctd\u003e\u003ccode\u003ebrew install terror/tap/axil\u003c/code\u003e\u003c/td\u003e\n    \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\n### Pre-built binaries\n\nPre-built binaries for Linux, MacOS, and Windows can be found on\n[the releases page](https://github.com/terror/axil/releases).\n\n## Usage\n\nRunning `axil` with a file path prints the syntax tree to stdout:\n\n```console\n$ axil example.json\ndocument [0:0..3:0]\n  object [0:0..2:1]\n    { [0:0..0:1] \"{\"\n    pair [1:2..1:16]\n      string [1:2..1:7]\n        \" [1:2..1:3] \"\\\"\"\n        string_content [1:3..1:6] \"foo\"\n        \" [1:6..1:7] \"\\\"\"\n      : [1:7..1:8] \":\"\n      string [1:9..1:16]\n        \" [1:9..1:10] \"\\\"\"\n        string_content [1:10..1:15] \"hello\"\n        \" [1:15..1:16] \"\\\"\"\n    } [2:0..2:1] \"}\"\n```\n\nThe language is automatically detected from the file extension. When reading\nfrom stdin, pass `--language` explicitly:\n\n```console\n$ echo '{\"foo\": \"hello\"}' | axil --language json\n```\n\n### Interactive Mode\n\nThe `--interactive` flag opens the syntax tree in a full-screen TUI where you\ncan browse and explore the tree. Navigation is vim-style: `h`/`j`/`k`/`l` to\nmove around, `Enter` to collapse and expand nodes, and `Space` to select a node\nand view its details in an info panel.\n\n```console\n$ axil main.rs --interactive\n```\n\nYou can search for node types by pressing `/` and typing a pattern. Jump between\nmatches with `n` and `N`. Press `y` on any node to yank its source text to the\nclipboard.\n\n### Tree-sitter Queries\n\nThe `--query` flag runs a\n[tree-sitter query](https://tree-sitter.github.io/tree-sitter/using-parsers/queries/index.html)\nagainst the syntax tree and highlights matching nodes. In print mode, only nodes\nmatching the query are shown:\n\n```console\n$ axil main.rs --query '(function_item name: (identifier) @name)'\n```\n\nIn interactive mode, press `:` to enter a query live. Matched nodes are\nhighlighted in real time as you type, and you can jump between them with `n` and\n`N`.\n\n### Watch Mode\n\nThe `--watch` flag automatically reloads the syntax tree when the source file\nchanges on disk. This is useful when editing a file in another window and\nwatching the tree update in real time:\n\n```console\n$ axil main.rs --interactive --watch\n```\n\n### Keybindings\n\n| Key       | Action                       |\n| --------- | ---------------------------- |\n| `j` / `k` | Move down / up               |\n| `h` / `l` | Move to parent / first child |\n| `g` / `G` | Jump to top / bottom         |\n| `Ctrl-u`  | Scroll up half page          |\n| `Ctrl-d`  | Scroll down half page        |\n| `Enter`   | Toggle collapse              |\n| `Space`   | Toggle select                |\n| `/`       | Search node types            |\n| `n` / `N` | Next / previous search match |\n| `:`       | Enter tree-sitter query      |\n| `y`       | Yank node text to clipboard  |\n| `Esc`     | Clear search                 |\n| `?`       | Toggle help                  |\n| `q`       | Quit                         |\n\n## Prior Art\n\nCheck out [tree-sitter](https://tree-sitter.github.io/tree-sitter/), the parser\ngenerator tool and incremental parsing library.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fterror%2Faxil","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fterror%2Faxil","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fterror%2Faxil/lists"}