A shell for everyone, built by everyone.
VSH is a next-generation command-line shell that maintains full power while making the terminal accessible to beginners and more productive for everyone.
Traditional shells are incredible tools, but they're needlessly cryptic:
find . -type f -name "*.txt" -exec grep -l "pattern" {} \;← What does this even do?- Commands like
cp,mv,rmaren't intuitive - One misplaced quote breaks everything
- Error messages are hostile
- The learning curve keeps brilliant people away from the command line
VSH offers cognitive flexibility - the same command works in multiple syntaxes:
# Power user (terse)
cp file.txt backup/
# Beginner (verbose)
copy file.txt to backup/
# Explicit (named parameters)
copy source=file.txt destination=backup/
# All three work! Pick what makes sense to YOUR brain.VSH learns your preferences and adapts:
- Auto-completion matches your style
- Suggestions improve over time
- Errors become more helpful as it learns what confuses you
Every command supports terse, verbose, and named-parameter syntax. Use what feels natural.
$ copy nonexistent.txt backup/
✗ Error: Source file does not exist
The file 'nonexistent.txt' could not be found.
Suggestion: Did you mean one of these?
→ copy document.txt to backup/
→ copy notes.txt to backup/
[?] Need help? Type 'help copy'Run your existing .sh scripts without changes. VSH automatically detects and handles them.
Write .vsh scripts that read like pseudocode:
#!/usr/bin/env vsh
backup_dir = "~/backups"
if not directory-exists $backup_dir then
create-directory $backup_dir
end
for file in *.txt do
copy $file to $backup_dir
echo "Backed up: $file"
endCurrent: Specification Phase
Next: Community Building & MVP Development
Timeline: First release target - Q3 2026
We're building this in the open from day one. Join us!
VSH isn't built by one person - it's built by everyone who uses it.
Why?
- A shell for all skill levels needs input from all skill levels
- Diverse perspectives = better design
- Sustainable beyond any single maintainer
- Your voice matters
How to Contribute:
- 🌟 Star this repo
- 💬 Join our Discord (coming soon)
- 📖 Read CONTRIBUTING.md
- 🐛 Report bugs and suggest features
- 💻 Write code
- 📝 Improve documentation
- 🎓 Help other users
No experience required. We mentor new contributors!
- VSH_SPECIFICATION.md - Complete technical specification
- CONTRIBUTING.md - How to contribute (beginner-friendly!)
- GOVERNANCE.md - How decisions are made
- CODE_OF_CONDUCT.md - Our community standards
vsh/
├── README.md # You are here
├── VSH_SPECIFICATION.md # Complete spec
├── CONTRIBUTING.md # Contribution guide
├── GOVERNANCE.md # Decision-making process
├── CODE_OF_CONDUCT.md # Community standards
├── Cargo.toml # Rust project (coming soon)
├── src/ # Source code (coming soon)
├── tests/ # Test suite (coming soon)
├── docs/ # Documentation (coming soon)
│ ├── rfcs/ # RFCs for major decisions
│ └── commands/ # Command reference
└── examples/ # Example .vsh scripts (coming soon)
- Cognitive Flexibility - Support how different brains think
- Progressive Disclosure - Simple for beginners, powerful for experts
- Helpful by Default - Errors teach, don't frustrate
- Community-Driven - Built by everyone, for everyone
- No Compromises - Full shell power, zero degradation
- Core parser for 5-10 commands
- Multi-syntax support (terse, verbose, named)
- Basic error handling
- Configuration file support
- User profiling system
- Adaptive auto-completion
- Smart error suggestions
- Learning algorithm
- Full .vsh scripting support
- Variables and control flow
- Functions
- Bash compatibility mode
- Performance optimization
- Comprehensive help system
- Plugin architecture
- Production-ready release
- Package manager
- Standard library
- Editor integration
- Migration tools
See full roadmap in VSH_SPECIFICATION.md
# Install (future)
cargo install vsh
# Or build from source
git clone https://github.com/vsh-shell/vsh.git
cd vsh
cargo build --release
cargo install --path .
# Run
vsh# Copy files
copy file.txt to backup/
cp file.txt backup/
copy source=file.txt destination=backup/
# Move files
move old.txt to new.txt
mv old.txt new.txt
move from=old.txt to=new.txt
# Remove files
remove file.txt
rm file.txt
delete file=file.txt# Traditional
find . -name "*.txt"
# Verbose
find files named "*.txt"
# Named parameters
find path=. name="*.txt" type=file# All equivalent
cat file.txt | grep pattern | sort
cat file.txt -> grep pattern -> sort
cat file.txt then grep pattern then sort#!/usr/bin/env vsh
# Variables
name = "World"
# Conditionals
if file-exists "data.txt" then
echo "Processing data..."
process-data "data.txt"
else
echo "No data file found"
end
# Loops
for file in *.txt do
echo "Processing: $file"
copy $file to backup/
end
# Functions
function greet name
echo "Hello, $name!"
end
greet $nameNo, it's built from scratch in Rust, but it can run bash scripts.
Yes! VSH detects .sh files and runs them in compatibility mode.
Not at all! It's the same power as bash/zsh, just more accessible.
Absolutely! Terse syntax works exactly like traditional shells.
You should! VSH doesn't replace learning; it makes it easier.
- Fish: Great UX, but different syntax breaks muscle memory
- Nushell: Innovative structured data, but steep learning curve
- VSH: Traditional + modern, multiple syntaxes, learns your style
First usable release: Q3 2026. Production-ready: Q1 2027.
Read CONTRIBUTING.md and join the community!
Founder: Victor Soto
Core Team: TBD (First election: June 2026)
Contributors: See CONTRIBUTORS.md
MIT License
Copyright © 2026 VSH Contributors
See LICENSE for details.
- Website: (coming soon)
- GitHub: https://github.com/notvcto/vsh
- Discord: (coming soon)
- Twitter: (coming soon)
- Email: (coming soon)
VSH is inspired by the incredible work of:
- Fish Shell team
- Nushell team
- PowerShell team
- Bash, Zsh, and all the shells that came before
- Every developer who's ever been frustrated by
find . -type f -name "*.txt" -exec grep -l "pattern" {} \;
Have questions? Ideas? Want to help?
- 💡 Ideas: GitHub Discussions
- 🐛 Bugs: GitHub Issues
- 💬 Chat: Discord (coming soon)
- 📧 Email: (coming soon)