{"id":33185701,"url":"https://github.com/hkdb/app","last_synced_at":"2026-01-28T10:16:29.329Z","repository":{"id":214920145,"uuid":"737683730","full_name":"hkdb/app","owner":"hkdb","description":"A cross-platform package management assistant with super powers!","archived":false,"fork":false,"pushed_at":"2025-10-25T02:33:30.000Z","size":1340,"stargazers_count":161,"open_issues_count":3,"forks_count":7,"subscribers_count":5,"default_branch":"main","last_synced_at":"2025-11-22T04:02:50.910Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://hkdb.github.io/app/","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/hkdb.png","metadata":{"files":{"readme":"README.md","changelog":null,"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-01-01T04:20:43.000Z","updated_at":"2025-11-05T10:07:34.000Z","dependencies_parsed_at":"2024-02-09T15:43:57.569Z","dependency_job_id":"ba8f599d-2ad8-45c0-943b-6154f4025b9b","html_url":"https://github.com/hkdb/app","commit_stats":null,"previous_names":["hkdb/app"],"tags_count":31,"template":false,"template_full_name":null,"purl":"pkg:github/hkdb/app","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hkdb%2Fapp","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hkdb%2Fapp/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hkdb%2Fapp/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hkdb%2Fapp/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/hkdb","download_url":"https://codeload.github.com/hkdb/app/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hkdb%2Fapp/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28844011,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-28T07:39:25.367Z","status":"ssl_error","status_checked_at":"2026-01-28T07:39:24.487Z","response_time":57,"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-11-16T05:00:20.099Z","updated_at":"2026-01-28T10:16:29.323Z","avatar_url":"https://github.com/hkdb.png","language":"Go","funding_links":["https://www.buymeacoffee.com/3dfosi"],"categories":["\u003ca name=\"package-manager\"\u003e\u003c/a\u003ePackage managers"],"sub_categories":[],"readme":"# app - A Package Management Assistant with Super Powers \nmaintained by: @hkdb\n\n![ScreenShot](docs/assets/ss6.png)\n\n\n### SUMMARY\n\nA Unified Package Management Experience for users who either want a reproduceable workstation build or simply handle a lot of machines with ease.\n\nApp is a cross-platform package management wrapper written in Go that remembers all the additional packages a user installs on a machine beyond the base installation so that all the same packages can be automatically reinstalled on another machine with one command. It also provides the same command line interface across different distros/OS's and package managers so you don't have to remember the various syntax across different OS's and package managers. Last but not least, it allows users to upgrade all software packages installed on a system with a user defined set of package managers (ex. apt, flatpak, and AppImage) via a single command.\n\nSupported OS:\n- Linux \n- Mac (Homebrew)\n- FreeBSD\n- Windows [coming soon]\n\nSupported Package Managers:\n- apt\n- dnf\n- pacman\n- yay\n- pkg\n- zypper\n- Flatpak\n- Snap\n- Homebrew\n- AppImage\n- go\n- pip\n- pipx\n- cargo\n- And more coming soon! (See `SUPPORT \u0026 ROADMAP` section)\n\nThis fun project came to life because I have multiple machines and am constantly re-installing them. I also review and or get new laptops fairly often.\n\n\u003cb\u003eTHIS IS STILL ALPHA SOFTWARE\u003c/b\u003e\n\nSkip all the mumbo jumbo if you just want to see how to [INSTALL](docs/INSTALL.md) and [UPGRADE](docs/UPGRADE.md) app.\n\n### BACKGROUND (Probably TL;DR for most)\n\n[\u003e\u003e\u003e Why app was created...](docs/BACKGROUND.md)\n\n\n### HOW IT WORKS\n\nInstead of using your package manager, you use the app command to install/remove packages so that it records everything inside `~/.config/app`. So when you move that directory to a new machine of the same based distro or OS, you can just install all the packages you have installed on the old machine with one command. In fact, if you move your `~/.config` directory on a Linux machine to the next, it should retain most of your app settings that reside in `~/.config` as well but be aware of config structual changes between varying versions of the same software. \n\nSee [APP CONFIG DIRECTORY STRUCTURE](docs/STRUCTURE.md) to learn more about what's inside `~/.config/app`.\n\nSee the [available options (flags)](docs/USAGE.md) of app.\n\nSee [USAGE EXAMPLES](docs/EXAMPLES.md) to see a more complete dive into how to use app.\n\n\n### IN ACTION\n\n[![asciicast](https://asciinema.org/a/YmpvOaXS2dviXXOIPM7EppyKf.svg)](https://asciinema.org/a/YmpvOaXS2dviXXOIPM7EppyKf)\n\n\n### INSTALL\n\nRun the below command in the terminal:\n\n```\ncurl -sL https://hkdb.github.io/app/getapp.sh | bash\n```\n\nYou can also install app by compiling yourself:\n\n1. Make sure all the package managers you want app to manage and are installed and configured properly\n2. Install `git` manually if it's not already installed\n3. cd into a directory of choice where you want to keep the app repo. If you are an end user and can't decide, I suggest `~/.config` (`mkdir ~/.config` if it doesn't already exist)\n4. git clone https://github.com/hkdb/app.git`\n5. `cd app`\n6. Optionally `git checkout \u003cversion\u003e`\n7. `./install.sh` # Note, for FreeBSD, bash must first be installed.\n\n\n### UPDATE/UPGRADE\n\nRun the below command in the terminal:\n\n```\napp -m app update\n```\n\nYou can also update app by compiling it yourself:\n\nTracking versioned release:\n\n1. cd back into the repo whereever you put it. `~/.config/app` if you took my recommendation \n2. `git pull`\n3. `git checkout \u003cversion tag\u003e`\n3. `./update.sh` # FreeBSD requires bash to be installed\n\nTracking main branch:\n\n1. cd back into the repo whreever you put it. `~/.config/app` if you took my recommendation \n2. `git pull`\n3. `./update.sh` # FreeBSD requires bash to be installed\n\n\n### SUPPORT \u0026 ROADMAP\n\n- GNU/Linux (apt, dnf, pacman, flatpak, snap, brew, appimage)\n  - Debian derivatives\n    - Debian, Ubuntu, Pop, MX, Kali, Raspbian, LinuxMint   \n  - Redhat derivatives\n    - Fedora, RHEL, Rocky, CentOS, Oracle, ClearOS, AmazonAMI\n  - Arch derivatives\n    - Arch, Manjaro, Garuda, Endeavour, CachyOS\n  - Suse derivatives\n    - OpenSUSE Leap\n    - SLES\n- macOS (brew)\n- Go\n- Python (pip, pipx)\n- Rust (cargo)\n- FreeBSD (pkg)\n\nCurrently in the roadmap:\n\n- Windows (scoop)\n- Windows (chocolatey)\n\n`Pre-requisites`:\n\nCurl and Unzip must be installed\n\nThere's an install script that comes with this repo which is the preferred way to install app. However, I leave having each of your package managers proper setup/configuration to the end user before running app. For example, if you don't have the right packages installed to have add-apt-repository work properly on Debian or flatpak can't be used without sudo, then app will inevitably fail.\n\nSee the below notes on package manager setup:\n- [flatpak](docs/FLATPAK.md)\n- [go](docs/GO.md)\n- [pip](docs/PIP.md)\n- [pipx](docs/PIPX.md)\n- [cargo](docs/CARGO.md)\n\nIf there are enabled package managers that you absolutely hate and want out of the auto restore/install all loop, you can disable them manually (ie. `app -m snap disable`) and app will remember this whereever you bring your `~/.config/app` directory. You can also re-enable them anytime by just running `app -m \u003cpackage manager\u003e enable`\n\n`Other distros`:\n\nSome distros are easily supported by just simply identifying them under each of the 3 base distros respectively so if there's a distro that it doesn't support already, feel free to submit an issue including the output of `cat /etc/*-release` to request for it to be added and I will try to find time to get it added on.\n\nAlso, I primarily use Pop, Ubuntu, Debian, Fedora, Arch, Garuda, CachyOS so other distros are a bit less tested. If you notice any issues on the other \"supported\" distros, please let me know by submitting an issue here.\n\nThe native package manager of immutable distros and distros like nixos will most likely never make it to this list since for example, nixos' declarative package management pretty much addresses the same problem but just in a different way and perhaps maybe even better...\n\n`Caveat`: Arch Derivatives\n\nadd-repo and rm-repo actions for Arch based distros only take bash scripts as arguments ~~and only for pacman (not yay)~~. There are various reasons why. Among them all, perhaps the more important ones are:\n\n- The concept of AUR repos are largestly different than the traditional distros and Arch has AUR helpers like yay/paru that simplfies everything already so there's really no point for this feature to be in app. However, I did make this action a scriptable input in case there are certain things you want to automate prior to doing a restore all. I don't recommend using this feature unless you really know what you are doing though.\n- Users in Arch often don't have to add that many AURs. So it's not necessarily worth the time to automate this.\n- ~~yay is already a wrapper that does a great job with pretty much all that you need out-of-the-box, beyond tracking the packages users install with it, along with the above reasons, there's really no point in having add-repo and rm-repo for yay.~~\n\napp currently does not handle local packages for Arch based distros~~as most of the time, users in Arch that deal with local packages are compiling their own packages from source which is sort of out of scope for what app is trying to solve. Unless someone tells me I am wrong, there aren't really pre-compiled packages out there that you can't really get from a combination of pacman, Arch AUR, and Chaotic. If someone tells me that they have a use case that says otherwise, it's most likely involving only 1 or 2 packages or some very specific dev project related subset which again, makes this feature fall under \"not worth the time to automate\" and \"out of scope\"~~.\n\n`Caveat`: Snap\n\nAs far as I know, there's no way to easily add third party repos especially since the whole backend is closed source.\n\n`Caveat`: AppImage\n\nIf your AppImage app updates itself, you may need to manually edit your .desktop file in `$HOME/.local/share/applications/` to point to the correct AppImage file in `$HOME/.config/app/packages/local/appimage/` since the new file has a new version on the file name.\n\n`go/pip/pipx/cargo`:\n\nThe go, pip, pipx, and cargo support is not meant to be a replacement for development purposes but rather for users that use software that are distributed via go, pip, and cargo. \n\n\n### SUPPORT US!\n\nIf this repo was useful to you, feel free to buy us some coffee! :)\n\n[![\"Buy Me A Coffee\"](https://www.buymeacoffee.com/assets/img/custom_images/yellow_img.png)](https://www.buymeacoffee.com/3dfosi)\n\n\n### VERSIONS\n\n[CHANGELOG.md](CHANGELOG.md)\n\n\n### DISCLAIMER\n\nTHIS IS STILL ALPHA SOFTWARE\n\nThis repo is sponsored by 3DF OSI and is maintained by volunteers. 3DF Limited, 3DF OSI, and its volunteers in no way make any guarantees. Please use at your own risk!\n\nTo Learn more, please visit:\n\nhttps://osi.3df.io\n\nhttps://3df.io\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhkdb%2Fapp","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhkdb%2Fapp","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhkdb%2Fapp/lists"}