{"id":45619463,"url":"https://github.com/vporton/icp-package-manager","last_synced_at":"2026-02-23T18:29:39.000Z","repository":{"id":246894188,"uuid":"824201780","full_name":"vporton/icp-package-manager","owner":"vporton","description":"Package manager for ICP blockchain","archived":false,"fork":false,"pushed_at":"2025-10-23T03:17:48.000Z","size":20189,"stargazers_count":1,"open_issues_count":16,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-10-23T05:28:25.128Z","etag":null,"topics":["app-store","appstore","crypto-wallet","dfinity","internet-computer","internet-computer-protocol","package-manager","saas-dev","saas-devops-services","saas-platform","saas-platform-architecture"],"latest_commit_sha":null,"homepage":"https://docs.package-manager.com","language":"Motoko","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/vporton.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE.txt","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":"AGENTS.md","dco":null,"cla":null},"funding":{"github":"vporton","patreon":null,"open_collective":null,"ko_fi":null,"tidelift":null,"community_bridge":null,"liberapay":null,"issuehunt":null,"lfx_crowdfunding":null,"polar":null,"buy_me_a_coffee":null,"thanks_dev":null,"custom":null}},"created_at":"2024-07-04T15:13:34.000Z","updated_at":"2025-09-21T16:23:08.000Z","dependencies_parsed_at":"2024-07-05T19:51:42.183Z","dependency_job_id":"1ec44021-98fe-4eec-bee3-7549ad11cad8","html_url":"https://github.com/vporton/icp-package-manager","commit_stats":null,"previous_names":["vporton/icp-summer"],"tags_count":4,"template":false,"template_full_name":null,"purl":"pkg:github/vporton/icp-package-manager","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vporton%2Ficp-package-manager","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vporton%2Ficp-package-manager/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vporton%2Ficp-package-manager/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vporton%2Ficp-package-manager/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/vporton","download_url":"https://codeload.github.com/vporton/icp-package-manager/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vporton%2Ficp-package-manager/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29750528,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-23T07:44:07.782Z","status":"ssl_error","status_checked_at":"2026-02-23T07:44:07.432Z","response_time":90,"last_error":"SSL_read: 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":["app-store","appstore","crypto-wallet","dfinity","internet-computer","internet-computer-protocol","package-manager","saas-dev","saas-devops-services","saas-platform","saas-platform-architecture"],"created_at":"2026-02-23T18:29:38.865Z","updated_at":"2026-02-23T18:29:38.979Z","avatar_url":"https://github.com/vporton.png","language":"Motoko","funding_links":["https://github.com/sponsors/vporton"],"categories":[],"sub_categories":[],"readme":"# ICP Package Manager\n\nFor testing use `stable` branch! In some branches you need to run\n```sh\ngit submodule update --init --recursive\n```\n\nFor latest features, see `autoVersions` branch.\n\n[PLANS](PLANS.md) lists current works.\n\nICP Package Manager is an analogue of Linux package managers, but for ICP. It allows to install the code of provided packages (in the future they will be provided by DAOs akin Linux distros) into a user's \"own\" subnet, giving the user sovereignity over his software and greater execution speed thanks to interoperating software installed in the same subnet.\n\n[**IC Pack**](https://docs.package-manager.com) is an apps package manager (like Google Play), but for remote apps. It redefines SaaS.\n\nInternet users (and future AI agents) lost control over their apps in cloud era due to SaaS. An app may be up-priced, hacked, blocked, undesirably updated, gone bankrupt. Apps installed with my package manager cannot be removed or updated without user's consent - While the user pays for hardware, the app works.\n\nAnother reason, why this is good to developers, is that it frees the developer from the need to do any DevOps: The developer just creates a repository and an installation link.\n\nIC Pack will also provide a standard for \"events\" and \"permissions\" between apps.\n\n## Wallet\n\nI have also shipped the first useful app for IC Pack - Payments Wallet. Payments Wallet is distinguished by configurable threshold of payments requiring extra user's confirmation, to protect the user from erroneous accidental payments. Payments Wallet will also provide in-app payments for IC Pack. The wallet has Invest tab, allowing users to invest into IC Pack. This wallet is superior over other ICP wallets by installing it into a user's canister, hindering the wallet provider (e.g. a dev or a DAO) from cheating (e.g. stealing user's funds) by substituting wallet's canisters content. For the wallet the following features are not yet finished: Bitcoin, Ethereum, and Solana payments, displaying a QR code. In-app payments are not standardized, yet.\n\nIn a future version, I will give the user option for an app to do in-app payments up to a certain amount without asking user.\n\nIn the future, the wallet will support **Yellow Network** for easy currency conversion.\n\n## More\n\nHere is feature comparison of IC Pack with other ways to install apps:\n\n[Feature comparison with other ways to install apps.](https://docs.package-manager.com/features-comparison/)\n\nUnlike Google Play we support installing apps from multiple repositories. (It is anticipated that every developer creates their own repository.) There is provided a bootstrapper of the package manager that helps to install the package manager and partially installed package manager to finish its own installation. There is a simple API for installing package manager together with a third-party app, so app authors will advertise our package manager together with their apps.\n\nBy a sophisticated way of programming, the canisters of the package manager are well-protected against non-returning-function DoS attack. By a sophisticated way of programming, during bootstrapping partly installed package manager installs itself.\n\nWe are going to make money charging 10% of paid apps prices (paid apps and paid app updates have been implemented), 5% of hardware costs and 3% of in-app payments.\n\nEconomic breakdown: An average SaaS company (our potential customer) has revenue $15M/year (we expect to take like 5% of such a customer's revenue) and there are 17K SaaS companies in the US only.\nFor more information on this project [see here](https://dev.package-manager.com) and [here](https://docs.package-manager.com).\n\nSee [`TODO.md`](TODO.md) about yet unimplemented features.\n\n[Read here](https://chatgpt.com/s/cd_684b24efcc20819190b4b7ddf9df132d) about this codebase.\n\n## Howto guides to running it\n\nI strongly recommend to use [patched](https://github.com/dfinity/sdk/pull/4083) DFX for compiling this faster.\n\nIf you didn't run it yet, run `dfx extension install nns`.\n\n`make deploy-work` for deploying the UI.\n\n`make deploy-test \u0026\u0026 npm test` for automatic tests.\n\nTo build a particular canister and its dependencies, issue `make build@CANISTER`; to deploy a canister and its dependencies, `make deploy@CANISTER`; to deploy without dependencies, `make deploy-self@CANISTER`. To generate interface, `make generate@CANISTER`.\n\nYou can run the included crypto wallet (a draft project, for now use it just for testing) with commands:\n```sh\nmake deploy@wallet_backend generate@wallet_backend\n(cd src/wallet_frontend/ \u0026\u0026 npx vite build)\n```\n\nInstalling the wallet as a package is not yet supported, because I have certain troubles with cryptography,\nthat will be used to confirm that nobody can steal your user wallet.\n\n### General instructions\n\nTo get started, you might want to explore the project directory structure and the default configuration file. Working with this project in your development environment will not affect any production deployment or identity tokens.\n\nTo learn more before you start working with ICP Package Manager, see the following documentation available online:\n\n- [Quick Start](https://internetcomputer.org/docs/current/developer-docs/setup/deploy-locally)\n- [SDK Developer Tools](https://internetcomputer.org/docs/current/developer-docs/setup/install)\n- [Motoko Programming Language Guide](https://internetcomputer.org/docs/current/motoko/main/motoko)\n- [Motoko Language Quick Reference](https://internetcomputer.org/docs/current/motoko/main/language-manual)\n\nIf you want to start working on your project right away, you might want to try the following commands:\n\n```bash\ncd icp-package-manager/\ndfx help\ndfx canister --help\n```\n\n### Note on frontend environment variables\n\nIf you are hosting frontend code somewhere without using DFX, you may need to make one of the following adjustments to ensure your project does not fetch the root key in production:\n\n- set`DFX_NETWORK` to `ic` if you are using Webpack\n- use your own preferred method to replace `process.env.DFX_NETWORK` in the autogenerated declarations\n  - Setting `canisters -\u003e {asset_canister_id} -\u003e declarations -\u003e env_override to a string` in `dfx.json` will replace `process.env.DFX_NETWORK` with the string in the autogenerated declarations\n- Write your own `createActor` constructor\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvporton%2Ficp-package-manager","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvporton%2Ficp-package-manager","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvporton%2Ficp-package-manager/lists"}