Contributing
spaiSH is an experimental personal project. Contributions are welcome but reviewed carefully — this software executes commands on users’ systems, so correctness and safety take priority over features.
Before You Contribute
Section titled “Before You Contribute”- Read Architecture to understand the system design
- Check the Roadmap — contributions aligned with active phases are prioritized
- Open an issue before starting significant work — avoid building something that won’t be merged
Development Setup
Section titled “Development Setup”Requirements
Section titled “Requirements”- Go 1.22+
- Linux (the daemon uses Linux-specific APIs)
- Ollama (optional, for testing local model routing)
git clone https://github.com/srajanpathak/spaishcd spaishgo build ./cmd/spai ./cmd/spaidRun locally
Section titled “Run locally”# Start the daemon in foreground (dev mode)./spaid --dev
# In another terminal, test the client./spai "list files in current directory"go test ./...No third-party brand references in distributed code. Do not hardcode any AI provider name, Linux distribution name, or commercial product name in source code, config templates, install scripts, or documentation shipped with the project. Use generic terms: “AI provider”, “language model”, “API endpoint”, “Linux distribution”. See Legal.
Safety first. The permission tier engine must never be weakened. If you’re touching internal/permissions/, every change needs tests proving the classification behaviour.
No telemetry. Do not add any analytics, crash reporting, or usage tracking. spaiSH does not phone home.
Keep the daemon lean. spaid is a system daemon. Dependencies should be minimal. Every new dependency needs a clear justification.
Code Style
Section titled “Code Style”Standard Go conventions. Run before submitting:
gofmt -w .go vet ./...Submitting
Section titled “Submitting”- Fork the repo
- Create a branch:
git checkout -b your-feature - Make changes with tests
- Open a pull request with a clear description of what and why
All contributions are subject to the MIT License.