{"id":15010288,"url":"https://github.com/fosskers/faur","last_synced_at":"2026-03-05T03:31:16.249Z","repository":{"id":252473303,"uuid":"836952910","full_name":"fosskers/faur","owner":"fosskers","description":"A simpler alternative to the AUR RPC. ","archived":false,"fork":false,"pushed_at":"2025-05-17T10:32:47.000Z","size":8603,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-10-14T15:56:17.965Z","etag":null,"topics":["archlinux","aura","clojure"],"latest_commit_sha":null,"homepage":"https://stats.uptimerobot.com/xacx44XVJx","language":"Clojure","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/fosskers.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":"2024-08-01T22:49:43.000Z","updated_at":"2025-05-17T10:32:50.000Z","dependencies_parsed_at":"2025-12-09T01:04:44.506Z","dependency_job_id":null,"html_url":"https://github.com/fosskers/faur","commit_stats":null,"previous_names":["fosskers/faur"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/fosskers/faur","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fosskers%2Ffaur","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fosskers%2Ffaur/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fosskers%2Ffaur/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fosskers%2Ffaur/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/fosskers","download_url":"https://codeload.github.com/fosskers/faur/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fosskers%2Ffaur/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30108587,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-05T01:39:18.192Z","status":"online","status_checked_at":"2026-03-05T02:00:06.710Z","response_time":93,"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":["archlinux","aura","clojure"],"created_at":"2024-09-24T19:33:23.796Z","updated_at":"2026-03-05T03:31:16.201Z","avatar_url":"https://github.com/fosskers.png","language":"Clojure","funding_links":[],"categories":[],"sub_categories":[],"readme":"# faur\n\nA `faur` instance is a mirror of all package data on the AUR. `faur` is...\n\n- **Simple**\n  - There is only a single endpoint (i.e. no difference between `info` and `search`).\n  - JSON format is identical to the AUR RPC (but failure is always an empty list).\n- **Fast**\n  - All data is held in memory with custom indices for near-instant lookups.\n  - No rate limits.\n- **Featureful**\n  - Searching by \"provides\".\n  - Searching by multiple terms at once (has \"AND\" semantics).\n- **Small**\n  - ~300 lines of Clojure.\n  - No external database or other infrastructure required.\n\nFor instance, visit:\n\n- \u003chttps://faur.fosskers.ca/packages?names=aura\u0026by=prov\u003e\n- \u003chttps://faur.fosskers.ca/packages?names=nintendo,switch\u0026by=desc\u003e\n\n### API\n\nThere is only a single endpoint: `packages`.\n\n| Endpoint                          | Function                                                                         | Big-O Efficiency |\n|-----------------------------------|----------------------------------------------------------------------------------|------------------|\n| `packages?names=\u003cTOKENS\u003e`         | Look up `m`-many packages by name                                                | `O(mlogn)`       |\n| `packages?names=\u003cTOKEN\u003e\u0026by=prov`  | Find packages that satisfy `TOKEN`                                               | `O(logn)`        |\n| `packages?names=\u003cTOKENS\u003e\u0026by=desc` | Find packages that contain all `TOKENS` in their names / descriptions / keywords | `O(mlogn)`       |\n\nWhere multiple `TOKENS` are accepted, these are separated by commas, as in:\n\n```\npackages?names=spotify,teams,zoom\n```\n\n**Caveat:** `by=desc` is term-based, not regex based. This is for performance\nreasons. So, `packages?names=aura\u0026by=desc` will match on `aura-bin` but not on\n`auralcap`.\n\n### Running a `faur` Instance\n\nRunning a personal `faur` instance is simple. First, you'll need package data.\nFrom the top-level of the project repo:\n\n```sh\nwget https://aur.archlinux.org/packages-meta-ext-v1.json.gz\ngzip -d packages-meta-ext-v1.json.gz\n```\n\nThen simply:\n\n```sh\nclojure -M -m faur\n```\n\nThis will run a local `faur` server on http://0.0.0.0:8080 . To run in TLS mode,\npass `--key` and `--cert` as well and HTTPS requests will be accepted on port\n443. For example, here is how the official faur instance itself is invoked:\n\n``` sh\nclojure -M -m faur --key /etc/letsencrypt/live/faur.fosskers.ca/privkey.pem --cert /etc/letsencrypt/live/faur.fosskers.ca/fullchain.pem \n```\n\n### Live Remote REPL\n\nFor live debugging, an [nREPL][0] server is embedded and ran on\n`localhost:7888`. If running `faur` on a remote server, you can access this\nnREPL remotely by first doing an SSH port-forward on your local machine:\n\n``` sh\nssh -NL 7888:localhost:7888 root@\u003cIP-OF-REMOTE-SERVER\u003e -v\n```\n\nand then performing a `cider-connect-clj` (or similar), selecting\n`localhost:7888` as the target. Once connected, you're free to inspect the\nvarious Atoms or redefine functions.\n\n[0]: https://nrepl.org/nrepl/index.html\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffosskers%2Ffaur","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffosskers%2Ffaur","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffosskers%2Ffaur/lists"}