{"id":23804271,"url":"https://github.com/tmewett/homestead","last_synced_at":"2025-09-06T16:33:09.751Z","repository":{"id":151393615,"uuid":"380735908","full_name":"tmewett/homestead","owner":"tmewett","description":"Rootless sandbox for your home directory","archived":false,"fork":false,"pushed_at":"2023-12-23T18:51:05.000Z","size":12,"stargazers_count":4,"open_issues_count":2,"forks_count":0,"subscribers_count":3,"default_branch":"main","last_synced_at":"2023-12-23T20:53:43.174Z","etag":null,"topics":["developer-tools","linux","sandbox","shell-script"],"latest_commit_sha":null,"homepage":"","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/tmewett.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"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}},"created_at":"2021-06-27T12:37:20.000Z","updated_at":"2023-12-23T18:51:08.000Z","dependencies_parsed_at":"2023-12-23T20:49:26.164Z","dependency_job_id":null,"html_url":"https://github.com/tmewett/homestead","commit_stats":null,"previous_names":[],"tags_count":0,"template":null,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tmewett%2Fhomestead","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tmewett%2Fhomestead/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tmewett%2Fhomestead/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tmewett%2Fhomestead/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tmewett","download_url":"https://codeload.github.com/tmewett/homestead/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":232133633,"owners_count":18477294,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["developer-tools","linux","sandbox","shell-script"],"created_at":"2025-01-01T22:40:00.203Z","updated_at":"2025-01-01T22:40:00.784Z","avatar_url":"https://github.com/tmewett.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# homestead\n\nThe most convenient sandbox for your home directory.\n\n```\nUsage: homestead [OPTIONS] [-n NAME] [COMMAND...]\n\nIsolate changes to your home directory.\n\nRuns a command in a sandbox. Everything in the current working directory\nis writeable as normal, but other files in your home directory are read-only.\n\nWith `-n NAME`, the home directory is writeable, but all changes are stored in\nan overlay called NAME. Outside of the homestead, the files are unmodified.\nThe overlay is created if it doesn't exist.\n\nThe homestead overlay is stored in /home/steads/tom.\n\nIf COMMAND is not specified, an interactive shell is started.\n\nOptions:\n  -n NAME       save all writes in the home directory into overlay NAME\n  --no-cwd      don't pass the current directory through the sandbox\n  -u            unmount \u0026 cleanup instead of entering (requires -n)\n  -s            isolate more things (PIDs, IPC, cgroup, /proc, /tmp)\n  -h, --help    show this help text\n```\n\nExample:\n\n```\n~/gizmo$ homestead -n gizmo-dev\nstarting shell in homestead - type ctrl-d or 'exit' to leave\n(gizmo-dev) ~/gizmo$ ./install.sh       # I don't know what this command might do!\n...\n(gizmo-dev) ~/gizmo$ ls ~/.gizmo-files  # Ah, it put stuff in my home\nbin/  data/  thing  stuff\n(gizmo-dev) ~/gizmo$ exit               # But if I leave the sandbox...\n~/gizmo$ ls ~/.gizmo-files              # ...there is nothing left!\nls: cannot access '~/.gizmo-files': No such file or directory\n~/gizmo$ ls -a /home/steads/$USER/gizmo-dev  # The files are kept separate\n.gizmo-files/\n~/gizmo$ homestead -n gizmo-dev         # I can re-enter any time\n```\n\nThis means you can run unknown code as your user account, without worrying about\nit installing, re-configuring, or deleting any files outside of the current\ndirectory. It also means you can cleanly remove any changes, without having to\nhunt down what has been added or changed.\n\nFeedback welcome!\n\n## Installation\n\n### Manually\n\n1.  Install Fish, bwrap, and fuse-overlayfs.\n    *   Packages `fish bubblewrap fuse-overlayfs` on most distros.\n    *   You can use homestead with any shell, Fish just has to be installed.\n    *   If fuse-overlayfs isn't packaged, you can download an executable here:\n        https://github.com/containers/fuse-overlayfs/releases\n1.  Download `homestead` to somewhere in your $PATH.\n1.  Create the world-writeable homestead directory as root:\n\n    ```\n    mkdir /home/steads\n    chmod 777 /home/steads\n    ```\n\nNote that homestead can be used as root without fuse-overlayfs.\n\n## Security\n\nHomestead is designed to protect against changes to your home directory from\ndirect file access. Besides that, the sandbox has a low level of isolation, so\nit is possible in theory for processes inside to affect the world outside e.g.\nvia inter-process communication such as D-Bus. The `-s` option provides more\nprocess isolation, should you require it.\n\nBubblewrap, the sandbox tool used by homestead, is highly secure, *but the\nconfiguration used is likely insufficient for running truly untrusted code\nsafely.*\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftmewett%2Fhomestead","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftmewett%2Fhomestead","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftmewett%2Fhomestead/lists"}