High-velocity, zero-friction environment scaffolding.
Project description
Setting up a new project often requires the same manual steps: configuring linters, writing .gitignore and .dockerignore files, setting up virtual environments, and linking IDEs. Protostar automates this boilerplate so you can skip the setup and get straight to writing code.
📖 Official Documentation
Ready to dive deeper? The README only scratches the surface.
Head over to the Official Documentation for:
- Command Reference: Full flags and capabilities for
initandgenerate. - Domain Presets: Matrices for Scientific, Astrophysics, ML, DSP, and Embedded workflows.
- Configuration & Shell Autocomplete: Setting up global defaults, CLI autocompletion, and advanced AST overrides.
- Architecture Mechanics: Deep dives into the Orchestrator, Executor, and Manifest lifecycle.
💡 Design Philosophy
Protostar is built to save you time and stay out of your way. It adheres to a strict separation of concerns to avoid generating bloated artifacts you'll inevitably just delete manually:
-
initvs.generate: Theprotostar initcommand is designed to be run exactly once at the inception of a repository to lay the foundational architecture. Theprotostar generatecommand provides discrete, repeatable scaffolding for files you create regularly (like C++ classes or LaTeX reports). -
Manifest-First, Side-Effects-Last: Many bootstrapping scripts run a sequence of shell commands and fail unpredictably midway through. Protostar separates state definition from execution. Modules declare their requirements into a centralized
EnvironmentManifest. Disk I/O and subprocesses only execute in a single, deterministic phase at the very end. -
Fail Loud, Fail Early: Pre-flight checks ensure all system dependencies (like
uv,git,cargo, ordirenv) are present before any state is mutated. If a check fails, the environment remains completely untouched. -
Non-Destructive by Default: Protostar never blindly overwrites your existing work. It dynamically appends to
.gitignorefiles, intelligently merges IDE JSON configurations, uses deterministic AST modification to deep-merge TOML configurations, and safely aborts if generated files already exist. -
Actionable Telemetry: When things break, Protostar bubbles up the exact
stderrso you know immediately if a network request or dependency resolution failed. For unexpected internal crashes, it automatically generates a URL-encoded GitHub issue containing your system environment vector to eliminate debugging entropy.
⚡️ Performance & Latency Isolation
Protostar is built to be lightweight, so Python's startup overhead never slows down your local development.
We measure initialization latency using two benchmarking approaches:
- Fast-Path Execution: Measures the latency of non-interactive commands (e.g.,
protostar help init). - TUI-Path Execution: Measures the overhead of triggering the interactive
questionarywizards.
Our CI pipeline enforces a strict performance budget using hyperfine, gating any PR that introduces significant regressions in either path. We maintain historical tracking to ensure long-term architectural stability rather than chasing absolute CI metrics (which are subject to heavy VM variance).
- View CI Trends: Performance Dashboard
📦 Installation
macOS (Homebrew)
brew install jacksonfergusondev/tap/protostar
Universal (uv)
For isolated CLI tool installation on any OS, uv is highly recommended:
uv tool install protostar
Universal (pip)
pip install protostar
Note: If you install Protostar into an existing Python environment with
pip, it will bring inquestionaryandprompt_toolkitfor the interactive wizard. For guaranteed isolation and to avoid dependency conflicts, preferuv toolor Homebrew.
🚀 Quick Start
Protostar is designed to be run right after you mkdir a new project.
The Interactive Wizard
If you run protostar without any arguments, it launches an interactive Terminal User Interface (TUI). This wizard allows you to visually select your languages, tools, and presets without needing to memorize CLI flags.
mkdir orbital-mechanics-sim
cd orbital-mechanics-sim
protostar
Headless Scaffolding
For rapid, repeatable initialization, bypass the TUI entirely by providing your desired environment matrix as CLI flags.
protostar init --python --astro --docker --direnv -m --mypy --pytest --pre-commit
Result: Scaffolds a Python environment alongside astrophysics dependencies, generates data/catalogs and data/fits directories, writes optimized .gitignore and .dockerignore files, configures a .envrc file, injects a pragmatic .markdownlint.yaml ruleset, and sets up your testing and static analysis tools with dynamic pre-commit hooks.
🤝 Collaboration
This tool uses a highly decoupled, plugin-style architecture. The CLI parser dynamically evaluates module registries at runtime.
- To add support for a new language: Subclass
BootstrapModule. - To add a new dependency pipeline: Subclass
PresetModule.
We maintain strict engineering standards to ensure reliability, including 100% type-hinting, isolated pytest environments (mocked subprocesses and tmp_path disk isolation), and automated ruff formatting.
Please see the Documentation for full details on our development setup, architectural rules, and pull request guidelines.
📧 Contact
📄 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.7.8.tar.gz.
File metadata
- Download URL: protostar-0.7.8.tar.gz
- Upload date:
- Size: 124.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
26856964cc2628d023f0106a3667f60d6b54178070920661a452b2561dce5a00
|
|
| MD5 |
3ab203b1ba0d268d690fb6c808e683f7
|
|
| BLAKE2b-256 |
92cae164c3358b5eedc9739278dfa699e7070a2820fe17234490f2f82447eb67
|
Provenance
The following attestation bundles were made for protostar-0.7.8.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.7.8.tar.gz -
Subject digest:
26856964cc2628d023f0106a3667f60d6b54178070920661a452b2561dce5a00 - Sigstore transparency entry: 1431285563
- Sigstore integration time:
-
Permalink:
JacksonFergusonDev/protostar@bd688cb543d7c72216b6ff7e3da491ef974637fe -
Branch / Tag:
refs/tags/v0.7.8 - Owner: https://github.com/JacksonFergusonDev
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@bd688cb543d7c72216b6ff7e3da491ef974637fe -
Trigger Event:
push
-
Statement type:
File details
Details for the file protostar-0.7.8-py3-none-any.whl.
File metadata
- Download URL: protostar-0.7.8-py3-none-any.whl
- Upload date:
- Size: 50.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
12794e4210543c4cdc24734f4196aed6fc41dcacf6570669e73188a1e8ce17ae
|
|
| MD5 |
34f9b6883669f295184552c68a779594
|
|
| BLAKE2b-256 |
5f3cf289a4e0555ff0c27d5f1255ed486e5174ba46460940c54f0e26f2a01b6c
|
Provenance
The following attestation bundles were made for protostar-0.7.8-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.7.8-py3-none-any.whl -
Subject digest:
12794e4210543c4cdc24734f4196aed6fc41dcacf6570669e73188a1e8ce17ae - Sigstore transparency entry: 1431285679
- Sigstore integration time:
-
Permalink:
JacksonFergusonDev/protostar@bd688cb543d7c72216b6ff7e3da491ef974637fe -
Branch / Tag:
refs/tags/v0.7.8 - Owner: https://github.com/JacksonFergusonDev
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@bd688cb543d7c72216b6ff7e3da491ef974637fe -
Trigger Event:
push
-
Statement type: