High-velocity, zero-friction environment scaffolding.
Project description
🌟 Protostar (v0.1.0)
A modular CLI tool for quickly scaffolding software environments.
Setting up a new project often requires the same manual steps: configuring linters, writing .gitignore files, setting up virtual environments, and linking IDEs. Protostar automates this boilerplate so you can skip the setup and get straight to writing code.
💡 Design Philosophy
While Protostar is a lightweight utility, it was built around two specific structural concepts:
1. Deterministic Execution
Most bootstrapping scripts run a sequence of shell commands and fail unpredictably if a dependency is missing. Protostar separates state definition from execution. It uses an internal EnvironmentManifest where modules (Python, Rust, Linux, etc.) append their requirements. Disk I/O and subprocesses only occur at the very end, ensuring the environment is generated safely without clobbering existing files.
2. Signal vs. Noise
Project configuration is necessary noise; writing logic is the signal. By vertically integrating the OS, IDE, and Language strata into a single command, Protostar attempts to reduce the logistical entropy of starting a new repository.
📦 Installation
macOS (Homebrew)
If you are on macOS, you can install via Homebrew:
brew tap jacksonfergusondev/tap
brew install protostar
Universal (uv)
For isolated CLI tool installation on any OS, uv is recommended:
uv tool install protostar
Universal (pip)
You can also install it into your active environment using standard pip:
pip install protostar
🚀 Usage
Protostar is designed to be run right after you mkdir a new project.
Basic Scaffolding
Navigate to your empty directory and specify the languages you are using. The OS and IDE configurations are automatically inferred from your system and global settings.
mkdir orbital-mechanics-sim
cd orbital-mechanics-sim
protostar --python --cpp
Result: Initializes uv, scaffolds a Python environment, configures C++ build exclusions, and generates your .vscode/settings.json.
The Scientific Preset
If you are building a data analysis pipeline, use the scientific preset to pre-load a standard analytical stack.
protostar --python --scientific
Result: Installs the Python scientific stack (numpy, scipy, pandas, matplotlib, seaborn, ipykernel) into the new environment.
🛠 Command Reference
| Flag / Command | Description |
|---|---|
--python |
Scaffolds a Python environment using uv. Ignores caches and venvs. |
--rust |
Scaffolds a Rust environment using cargo. Ignores targets. |
--node |
Scaffolds a Node.js/TypeScript environment. Ignores node_modules. |
--cpp |
Configures a C/C++ footprint (ignores build/, *.o, compile_commands.json). |
--latex |
Configures a LaTeX footprint (ignores *.aux, *.log, *.synctex.gz). |
--scientific |
Injects foundational computational and statistical libraries (Python only). |
⚙️ Configuration
You can set global defaults in ~/.config/protostar/config.toml so you don't have to specify your IDE or package manager preferences manually.
[env]
# Options: "vscode", "cursor", "jetbrains", "none"
ide = "vscode"
# Options: "npm", "pnpm", "yarn"
node_package_manager = "npm"
🤝 Collaboration & Extension
This tool uses a decoupled BootstrapModule architecture. Adding support for a new language or framework requires writing a single class that appends rules to the EnvironmentManifest. Feel free to open an issue or pull request if you'd like to see a specific toolchain supported.
📧 Contact
Jackson Ferguson
- GitHub: @JacksonFergusonDev
- LinkedIn: Jackson Ferguson
- Email: jackson.ferguson0@gmail.com
📄 License
This project is licensed under the MIT License - see the LICENSE file for details.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file protostar-0.1.0.tar.gz.
File metadata
- Download URL: protostar-0.1.0.tar.gz
- Upload date:
- Size: 54.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b77bc489837c854fd6284f29d3cc7b66624fcf73bdd6c66c6642c9e1c74b2b48
|
|
| MD5 |
e9a08609b456a11c9341a32e8a406907
|
|
| BLAKE2b-256 |
3117f4c8c064897fc456684fd30d49fdfdc054a760e7cf8a7767a3f45a076e5e
|
Provenance
The following attestation bundles were made for protostar-0.1.0.tar.gz:
Publisher:
release.yml on JacksonFergusonDev/protostar
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
protostar-0.1.0.tar.gz -
Subject digest:
b77bc489837c854fd6284f29d3cc7b66624fcf73bdd6c66c6642c9e1c74b2b48 - Sigstore transparency entry: 999981288
- Sigstore integration time:
-
Permalink:
JacksonFergusonDev/protostar@90173fcbc6169e717b773d9d1f38191d1105dbb8 -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/JacksonFergusonDev
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@90173fcbc6169e717b773d9d1f38191d1105dbb8 -
Trigger Event:
push
-
Statement type:
File details
Details for the file protostar-0.1.0-py3-none-any.whl.
File metadata
- Download URL: protostar-0.1.0-py3-none-any.whl
- Upload date:
- Size: 14.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5422ea46980ced3e0c3d925526e2dbd381befb4d3ddb61e7f251f4e29955ff59
|
|
| MD5 |
54d59cc7b211d6af8cca7e39ecf97aa9
|
|
| BLAKE2b-256 |
713cf1c5ded6623f9fd05e752f800ecbfa47719f00a839946331708f8e89f118
|
Provenance
The following attestation bundles were made for protostar-0.1.0-py3-none-any.whl:
Publisher:
release.yml on JacksonFergusonDev/protostar
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
protostar-0.1.0-py3-none-any.whl -
Subject digest:
5422ea46980ced3e0c3d925526e2dbd381befb4d3ddb61e7f251f4e29955ff59 - Sigstore transparency entry: 999981304
- Sigstore integration time:
-
Permalink:
JacksonFergusonDev/protostar@90173fcbc6169e717b773d9d1f38191d1105dbb8 -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/JacksonFergusonDev
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@90173fcbc6169e717b773d9d1f38191d1105dbb8 -
Trigger Event:
push
-
Statement type: