{"id":24475023,"url":"https://github.com/kraftland/portable","last_synced_at":"2026-05-16T06:26:43.446Z","repository":{"id":262277159,"uuid":"886478903","full_name":"Kraftland/portable","owner":"Kraftland","description":"Fast, private, efficient sandbox for Linux desktop.","archived":false,"fork":false,"pushed_at":"2026-01-27T15:43:55.000Z","size":1136,"stargazers_count":70,"open_issues_count":5,"forks_count":8,"subscribers_count":1,"default_branch":"master","last_synced_at":"2026-01-27T21:07:16.922Z","etag":null,"topics":["accessibility","dbus","linux","packaging","privacy","sandbox","security","systemd"],"latest_commit_sha":null,"homepage":"","language":"Shell","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/Kraftland.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","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-11-11T03:36:51.000Z","updated_at":"2026-01-27T15:43:58.000Z","dependencies_parsed_at":"2025-11-29T14:00:25.046Z","dependency_job_id":null,"html_url":"https://github.com/Kraftland/portable","commit_stats":null,"previous_names":["kraftland/portable"],"tags_count":162,"template":false,"template_full_name":null,"purl":"pkg:github/Kraftland/portable","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kraftland%2Fportable","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kraftland%2Fportable/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kraftland%2Fportable/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kraftland%2Fportable/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Kraftland","download_url":"https://codeload.github.com/Kraftland/portable/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kraftland%2Fportable/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28944789,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-31T13:02:32.153Z","status":"ssl_error","status_checked_at":"2026-01-31T13:00:07.528Z","response_time":128,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6: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":["accessibility","dbus","linux","packaging","privacy","sandbox","security","systemd"],"created_at":"2025-01-21T09:11:54.908Z","updated_at":"2026-05-16T06:26:43.440Z","avatar_url":"https://github.com/Kraftland.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Abstract\nPortable is a sandbox framework targeted for Desktop usage and offers ease of use for distro packagers, which should work on most recent systems:\n\n- enables unprivileged user namespaces\n- uses systemd \u003e=258\n- has landlock version 6 and above (optional)\n- Follows the [FHS (Filesystem Hierarchy Standard)](https://specifications.freedesktop.org/fhs/latest/)\n\t- Note that `/lib` `/lib64` `/bin` `/sbin` should be symlinks to their respective locations under `/usr`\n\n- Does not have mount points under /usr/bin, and use a supported fs of OverlayFS (NOT BcacheFS)\n\nThis is the rewrite of the original Portable. For the legacy version, see `legacy` branch.\n\nPortable has companion projects for packaging and sandboxing:\n| Project       | Descripton      |\n| ------------- | -------------   |\n| [StashPak](https://github.com/Kimiblock/stashpak) | Build a Portable package for Arch Linux |\n| [Packer](https://github.com/Kimiblock/portable-packer) | Packaging utility for Portable on Arch Linux |\n| [Netsock](https://github.com/Kimiblock/netsock) | Network firewall |\n\n# Why Portable?\n\nSee [Docs](https://github.com/Kraftland/portable/blob/master/doc/Why%20Portable.md)\n\n## Available for\n\n- [Minecraft](https://github.com/Kimiblock/moeOS.config/blob/master/usr/bin/mcLaunch)\n- Arch Linux\n\t- Arch Linux CN Repository\n\t\t- Only selected free/OSS apps\n\t\t- Updates faster\n\t- Portable for Arch\n\t\t- Configure paru to use [portable-arch](https://github.com/Kraftland/portable-arch): https://github.com/Kraftland/portable-arch\n\t\t- Current support status (as of 30 Nov 2025): 29 packages in repo.\n\n# Limitations:\n\n1. **Running untrusted code is never safe, sandboxing does not change this.**\n2. On KDE Plasma window grouping may not work properly unless your desktop file name exactly matches certain arguments.\n\t- This is an [KWin issue](https://bugs.kde.org/show_bug.cgi?id=502309)\n3. Due to some desktop portal implementations being insecure (without requiring user consent), feature(s) may only be available on GNOME:\n\t- Location Portal\n4. Portable acts like Flatpak, to trick XDG Desktop Portal.\n\t- The correct way for this situation is to specify another sandboxing engine in XDP, which I have a PoC [here](https://github.com/Kimiblock/xdg-desktop-portal/commit/199c0934035789986b98738b01b15edf0443d675)\n\t\t- I barely understand C at all! Please help if you will.\n\t- The other possibly \"correct way\" is to wait until [busd#34](https://github.com/dbus2/busd/issues/34), and XDP's implementation.\n\t\t- Is it dead? idk.\n\nDiscuss Development at [#portable-dev:matrix.org](https://matrix.to/#/#portable-dev:matrix.org)\n\n\u003ch1 align=\"center\"\u003e\n  \u003cimg src=\"https://raw.githubusercontent.com/Kraftland/portable/refs/heads/master/share/example.webp\" alt=\"The Portable Project\" width=\"1024\" /\u003e\n  \u003cbr\u003e\n  Demo\n  \u003cbr\u003e\n\u003c/h1\u003e\n\n---\n\n# Pools\n\nPools is a user friendly sandbox generator. To create and enter a user sandbox, simply execute portable-pools with your sandbox name.\n\nExample: Create a test sandbox:\n\n```bash\nportable-pools test\n\n╰─\u003ePortable Sandbox·top.kimiblock.test·🧐⤔\n```\n\nUsage:\n\n```\nportable-pools [Options] \u003cSandbox Name\u003e\n\nOptions:\n\t--quit: Terminates the sandbox\n```\n\n---\n\n# How to package?\n\nSee [Docs](https://github.com/Kraftland/portable/tree/master/doc)\n\n# FAQ / Troubleshooting\n1. Portable fails with something like _invalid argument_\n\t- BcacheFS is not supported, or you have mountpoints under `/usr/bin` and `/usr/lib`\n\n## Starting portable\n\nStart portable with environment variable `PORTABLE_CONF`, which can be 1) the appID of the sandbox, 2) an absolute path (if exists), 3) a file name interpreted as `$(pwd)/${PORTABLE_CONF}`. It searches for each of them respectively.\n\n- Debugging output can be enabled using a environment variable `PORTABLE_LOGGING=debug`\n\n### Debugging\n\n#### Entering sandbox\n\nTo manually execute programs instead of following the `launchTarget` config, start portable with argument `--actions debug-shell`. This will open a bash prompt and gives you full control of the sandbox environment.\n\n# Code of Conduct\n\nPortable and any of its social environment follows the [Kraftland Code of Conduct](https://blog.kimiblock.top/notice/#Code-of-Conduct). Please be sure not to violate such rule set.\n\n# Version Scheme\nPortable follows a major.minor.patch version scheme. We thrives to provide a stable experiences with no breaking changes, however, if said change is necessary, will land in a major release.\n\nThe patch release is exclusive for bug fixes. Whereas minor releases contain new features. If a feature or a set of features needs time to test or is important enough, we conduct a major release.\n\nPortable has and always will be only supporting the latest release. Generally users can upgrade without manual intervention, but between major releases it's advised to run `systemctl --user stop portable.slice` to stop the portable framework.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkraftland%2Fportable","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkraftland%2Fportable","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkraftland%2Fportable/lists"}