{"id":47684378,"url":"https://github.com/mxcl/substrate","last_synced_at":"2026-04-06T18:00:35.593Z","repository":{"id":347085513,"uuid":"1192828738","full_name":"mxcl/substrate","owner":"mxcl","description":"Execution, performance and security focused multi-source package manager","archived":false,"fork":false,"pushed_at":"2026-03-30T02:36:43.000Z","size":191,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-04-03T02:09:57.600Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mxcl.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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":"mxcl","patreon":"mxcl"}},"created_at":"2026-03-26T15:48:23.000Z","updated_at":"2026-03-30T02:36:46.000Z","dependencies_parsed_at":null,"dependency_job_id":"778f2902-952c-434f-a1c0-a88c6fcc9e47","html_url":"https://github.com/mxcl/substrate","commit_stats":null,"previous_names":["mxcl/pkg","mxcl/substrate"],"tags_count":12,"template":false,"template_full_name":null,"purl":"pkg:github/mxcl/substrate","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mxcl%2Fsubstrate","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mxcl%2Fsubstrate/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mxcl%2Fsubstrate/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mxcl%2Fsubstrate/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mxcl","download_url":"https://codeload.github.com/mxcl/substrate/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mxcl%2Fsubstrate/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31483380,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-06T17:22:55.647Z","status":"ssl_error","status_checked_at":"2026-04-06T17:22:54.741Z","response_time":112,"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":[],"created_at":"2026-04-02T14:33:24.531Z","updated_at":"2026-04-06T18:00:35.580Z","avatar_url":"https://github.com/mxcl.png","language":"Rust","funding_links":["https://github.com/sponsors/mxcl","https://patreon.com/mxcl"],"categories":[],"sub_categories":[],"readme":"# Substrate\n\n[![Coverage Status](https://coveralls.io/repos/github/mxcl/substrate/badge.svg?branch=main)](https://coveralls.io/github/mxcl/substrate?branch=main)\n\nExecution, performance and security oriented multi-source package manager for\nmacOS.\n\n## Install\n\nSubstrate is a single rust binary with no dependencies.\n\n```sh\ngh release download --repo mxcl/substrate --pattern 'substrate*.tar.gz'\nsudo tar xzf substrate*.tar.gz -C /usr/local/bin\n```\n\nHere’s a one-liner via [`yoink`](https://github.com/mxcl/yoink):\n\n```sh\nsh \u003c(curl -fsSL https://yoink.sh) --stream mxcl/substrate | sudo tar -xzC /usr/local/bin\n```\n\n## Usage Overview\n\n```sh\n$ sudo subs install node  # alias: i\n/usr/local/bin/node\n## ^^ installs homebrew packages\n\n$ sudo subs i npm:openclaw\n/usr/local/bin/openclaw\n## ^^ installs npm packages\n\n$ sudo subs i npm:@tobilu/qmd\n◇ installing brew:sqlite dependency…\n/usr/local/bin/qmd\n## ^^ knows when npm packages need homebrew dependencies\n\n$ sudo subs i pip:psycopg2\n◇ installing brew:libpg dependency…\n/usr/local/bin/psycopg2\n## ^^ same for pypi. virtual environment and everything\n\n$ sudo subs i bun\n/usr/local/bin/bun\n## ^^ bun is not in homebrew, but the vendor provides a package and we\n##    know how to check there when brew doesn't have it.\n```\n\nPackages are installed as root with all dependencies side-by-side in\n`/opt/PKGNAME`. Self-contained, isolated and reliable. Also it’s fast.\n\nWe also can run anything:\n\n```sh\n$ subs run zopflipng in.png out.png  # alias: x\n## ^^ run anything ephemerally; downloads fresh every time to an unpredictable location\n\n$ subs run npx cowsay hello\n _______\n\u003c hello \u003e\n -------\n        \\   ^__^\n         \\  (oo)\\_______\n            (__)\\       )\\/\\\n                ||----w |\n                ||     ||\n```\n\n## Overview\n\n- Securely installs packages as root.\n- Sources from multiple package managers and vendor provided packages.\n- Can mix package managers when eg. npm packages need brew or vendor provided\n  dependencies.\n- Never touches /opt/homebrew.\n- Dependencies are installed alongside; everything goes in the same\n  self-contained prefix at `/opt/PKGNAME`.\n- Installs as little as possible to /usr/local (ie. nothing from deps, only\n  what you asked for, no jank).\n- `subs run PKG` can run anything ephemerally (downloads fresh every time)\n\n### Designed for the Era of Agents\n\nI know what you’re thinking: this douchebag made Homebrew sudo-less and now\nhe’s making a new package manager that’s not only sudo but also has a name\nthat sounds like it should be a JavaScript library.\n\nWhen I made Homebrew sudo-less, computers were pretty much single user and the\nusers were pretty much human. That’s not the case anymore. We are running\nagents all over the place.\n\n\u003e Don’t let OpenClaw modify itself.\n\nThis is also why `subs run` is ephemeral and *always* downloads the latest\nversion. The download destination is unpredictable. The window for\nexpliotation is small but not zero. We want agents to be able to run anything\nbut we don’t want them to to potentially modify binaries as they are\ndownloading for who knows what nefarious reason. Then once an agent (or you)\nhas used this user-writable software it vanishes.\n\n## Is This Ready For Me?\n\nLook: I’m using it. But I’m also the one who made it.\n\nI'm going to be honest with you. Substrate does some *mad tricks* to make\nHomebrew bottles relocatable. There *will definitely be some issues*.\n\nOTOH maybe that excites you? You’re the type who wants to get involved in\nthat?\n\n## Caveats\n\n- There is no `subs services` command. Use `brew`.\n- Some Homebrew formulae are not supported. If you come across them, report\n  this as a bug.\n- We do not and will likely never support casks (use `brew`!)\n\n## Technical Details\n\n- For Homebrew packages we rewrite `/opt/homebrew/` in the binaries and any\n  text files.\n  - Indeed this may prove stupid and/or flakey\n  - Indeed we do not recommend you depend on `subs` in any substantial way\n- We are overzealously rejecting any Homebrew packages with pre or post\n  install steps at this time.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmxcl%2Fsubstrate","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmxcl%2Fsubstrate","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmxcl%2Fsubstrate/lists"}