Product: Sentinel - A GLINR Product by Glincker Last Updated: October 2025
Sentinel is an open-source desktop application that combines process management with real-time system monitoring. Think of it as a more powerful, developer-focused alternative to PM2, Foreman, or systemd for local development.
Key Features:
- Start/stop/restart development servers with one click
- Monitor CPU, RAM, and disk usage in real-time
- Configure processes via YAML/JSON
- Beautiful desktop GUI + powerful CLI
- Cross-platform (macOS, Linux, Windows)
Sentinel is designed for:
- Full-stack developers managing multiple services (frontend, backend, database)
- DevOps engineers testing infrastructure locally
- Students learning microservices architecture
- Teams standardizing local development environments
- Anyone tired of juggling terminal tabs!
Yes! Sentinel is 100% free and open-source (MIT License).
Free Forever:
- Unlimited processes
- All core features
- Desktop app + CLI
- Local-only (no account required)
Pro Features (Future):
- Cloud config sync
- Team collaboration
- Advanced analytics
- Priority support
Pricing: Free tier will always exist. Pro starts at $9/month (when launched).
| Feature | Sentinel | PM2 |
|---|---|---|
| GUI | ✅ Beautiful desktop app | ❌ CLI only |
| Language | Rust (fast, safe) | JavaScript (Node.js required) |
| Cross-platform | ✅ Mac, Linux, Windows | ✅ Mac, Linux, Windows |
| System monitoring | ✅ Built-in | |
| Docker support | 🚧 Phase 3 | ❌ Limited |
| Config format | YAML/JSON | JSON/JS |
| Startup time | < 2s | ~3-5s |
| Memory usage | ~35MB idle | ~80MB idle |
| License | MIT (FOSS) | MIT (FOSS) |
TL;DR: Sentinel is faster, has a GUI, and is built for modern development workflows.
macOS (Homebrew):
brew install glincker/tap/sentinel
sentinel --versionLinux (AppImage):
wget https://github.com/glincker/sentinel/releases/latest/download/sentinel.AppImage
chmod +x sentinel.AppImage
./sentinel.AppImageWindows (Installer):
Download .exe from Releases
From Source:
git clone https://github.com/glincker/sentinel.git
cd sentinel
cargo build --releaseDefault Config Location:
- macOS/Linux:
~/.config/sentinel/config.yaml - Windows:
%APPDATA%\sentinel\config.yaml
Custom Location:
sentinel start ./my-config.yaml# Interactive template selector
sentinel init
# Or specify a template
sentinel init --template simple # Single process
sentinel init --template full-stack # Frontend + Backend + DB
sentinel init --template microservicesThen edit the generated sentinel.yaml and run:
sentinel startVia GUI:
- Open Sentinel app
- Click "Start All" or click on a process card
- View logs in Process Detail
Via CLI:
# Start all processes
sentinel start
# Add a new process
sentinel add my-app "npm run dev" --directory ./my-appCurrent (v0.1.0-alpha): You can add Docker commands as processes:
processes:
- name: postgres
command: docker
args:
- run
- --rm
- -p
- "5432:5432"
- postgres:15Future (Phase 3): Native Docker integration with:
- Container monitoring
- Docker Compose support
- Image management
CLI:
# Show last 50 lines
sentinel logs my-app
# Show last 100 lines
sentinel logs my-app --lines 100
# Follow logs (coming soon)
sentinel logs my-app --followGUI: Click on a process card → View logs in Process Detail view
Yes! Two ways:
1. Per-Process:
processes:
- name: backend
command: npm
args: [run, dev]
env:
PORT: "3001"
NODE_ENV: development2. Global (all processes):
global_env:
NODE_ENV: development
LOG_LEVEL: debug
processes:
- name: backend
command: npm
# ...Use depends_on to ensure processes start in order:
processes:
- name: database
command: docker
# ...
- name: backend
command: npm
depends_on:
- database # Starts after databaseSentinel detects circular dependencies and rejects invalid configs.
Solution 1: Check config file exists:
ls ~/.config/sentinel/config.yamlSolution 2: Validate YAML syntax:
# Create a new valid config
sentinel init --forceSolution 3: Check file permissions:
chmod 644 ~/.config/sentinel/config.yamlCommon causes:
- Command not found - Check
commandpath is correct - Port already in use - Another process is using the port
- Missing dependencies - Install required packages
- Wrong working directory - Check
cwdis correct
Debug:
# View logs
sentinel logs my-app
# Run command manually
cd /path/to/app
npm run dev # Or whatever your command isLinux/Mac:
# Make sure Sentinel binary is executable
chmod +x sentinel
# If managing system services, use sudo
sudo sentinel startWindows: Run Command Prompt as Administrator
Normal behavior:
- Startup: ~20% CPU for 1-2 seconds
- Idle: ~2% CPU, ~35MB RAM
- 10 processes: ~5% CPU, ~50MB RAM
If usage is high:
- Check process count:
sentinel status - Stop unused processes:
sentinel stop - Update to latest version
- Report a bug: https://github.com/glincker/sentinel/issues
macOS:
# If "damaged app" error, allow in Security & Privacy
xattr -d com.apple.quarantine /Applications/Sentinel.appLinux:
# Install required dependencies
sudo apt-get install libwebkit2gtk-4.1-devWindows: Install WebView2 Runtime: https://go.microsoft.com/fwlink/p/?LinkId=2124703
- YAML (recommended) -
.yamlor.yml - JSON -
.json
Example YAML:
processes:
- name: frontend
command: npm
args: [run, dev]
cwd: ./frontendSame in JSON:
{
"processes": [
{
"name": "frontend",
"command": "npm",
"args": ["run", "dev"],
"cwd": "./frontend"
}
]
}Not yet. Workaround: Use environment variables in your command:
processes:
- name: api
command: sh
args:
- -c
- "PORT=${API_PORT:-3000} npm start"Future: Native variable substitution planned for Phase 2.
Tested:
- ✅ 100 processes - Stable, < 1GB RAM
- ✅ 10 processes - Typical use case
Limits:
- Hard limit: 1,000 processes (safety check)
- Recommended: < 50 processes per config
Stress test:
cargo test test_100_processes_stress -- --ignoredExpected startup: < 2 seconds
If slower:
- Large config - 100+ processes take longer
- Slow disk - Config loading from HDD vs SSD
- Antivirus - Windows Defender may scan binary
Optimize:
- Use SSD
- Reduce process count
- Add Sentinel to antivirus exclusions
No significant impact:
- CPU: ~2% idle (polling every 2 seconds)
- Memory: ~35MB (desktop app) + ~10MB per process overhead
- Disk: Config file only (~1KB per process)
Comparison:
- Docker Desktop: ~200MB idle
- VS Code: ~150MB idle
- Chrome: ~300MB idle
- Sentinel: ~35MB idle ✅
Yes. We take security seriously:
Security Features:
- ✅ Input validation - All user input sanitized
- ✅ No shell injection - Direct process spawning (no
sh -c) - ✅ Path validation - Prevent directory traversal
- ✅ Memory safety - Written in Rust (no buffer overflows)
- ✅ Dependency scanning -
cargo auditin CI/CD - ✅ Security tests - 15 dedicated security tests
Audit:
- Last security audit: October 2025
- Test coverage: 94.7% (includes security tests)
- No known vulnerabilities
Report a vulnerability: security@glincker.com (GPG key on our website)
No. Sentinel is 100% local and offline.
We do NOT collect:
- ❌ Usage statistics
- ❌ Crash reports
- ❌ Analytics
- ❌ Personally identifiable information
Future (opt-in only): When Pro features launch, cloud sync will be opt-in and:
- End-to-end encrypted
- Audited by third-party
- GDPR compliant
- Deletable on request
Not recommended (yet).
Sentinel is designed for local development, not production servers.
Use instead:
- Linux: systemd, Docker, Kubernetes
- Cloud: AWS ECS, GCP Cloud Run, Azure Container Instances
Future: Production mode planned for Phase 5 with:
- Daemon mode (background service)
- Logging to syslog
- Auto-restart on system boot
- Resource limits (ulimit)
Ways to help:
- ⭐ Star the repo - Helps with visibility
- 🐛 Report bugs - Use issue templates
- 💡 Suggest features - GitHub Discussions
- 📝 Improve docs - Fix typos, add examples
- 🔧 Submit PRs - See CONTRIBUTING.md
- 💬 Help others - Answer questions in Discussions
Good first issues: https://github.com/glincker/sentinel/labels/good-first-issue
- Check if already reported: Issues
- Create a new issue: Bug Report
- Include:
- Sentinel version (
sentinel --version) - OS and version
- Steps to reproduce
- Expected vs actual behavior
- Config file (if relevant)
- Sentinel version (
Critical bugs: Email security@glincker.com
Community:
- Discord: https://discord.gg/sentinel (fastest)
- GitHub Discussions: https://github.com/glincker/sentinel/discussions
- Twitter: @GlinckerHQ
Official:
- Documentation: https://docs.glincker.com/sentinel
- Email: sentinel@glincker.com
- Pro support: pro@glincker.com (paid plans only)
| Feature | Sentinel | PM2 |
|---|---|---|
| GUI | ✅ Desktop app | ❌ |
| CLI | ✅ | ✅ |
| Language | Rust | Node.js |
| Startup | < 2s | ~5s |
| Memory | ~35MB | ~80MB |
| System monitor | ✅ Built-in | |
| Config | YAML/JSON | JSON/JS |
| Best for | Local dev | Production |
| Feature | Sentinel | Foreman |
|---|---|---|
| GUI | ✅ | ❌ |
| Language | Rust | Ruby |
| Config | YAML/JSON | Procfile |
| System monitor | ✅ | ❌ |
| Auto-restart | ✅ | ❌ |
| Cross-platform | ✅ |
| Feature | Sentinel | Docker Compose |
|---|---|---|
| GUI | ✅ | ❌ |
| Containers | 🚧 Phase 3 | ✅ |
| Native processes | ✅ | ❌ |
| System monitor | ✅ | ❌ |
| Startup | < 2s | ~10s |
| Best for | Mixed workflows | Containers only |
Use both! Sentinel + Docker Compose = 🚀
sentinel (noun): A soldier or guard whose job is to stand and keep watch.
Sentinel watches over your development processes, keeping them running smoothly and alerting you to issues.
Mascot: 🛡️ A guardian shield (coming soon!)
Sentinel is built by Glincker, a division of GLINR.
Team:
Careers: We're hiring! https://glincker.com/careers
Yes! See ROADMAP.md for:
- Upcoming features
- Release timeline
- Long-term vision
Next up (Phase 2):
- Real-time log viewer
- CPU/memory graphs
- System tray icon
- Auto-restart implementation
Social:
- Twitter: @GlinckerHQ
- Discord: https://discord.gg/sentinel
- Blog: https://glincker.com/blog
GitHub:
- Watch releases: https://github.com/glincker/sentinel
- Subscribe to Discussions
Email: Newsletter: https://glincker.com/newsletter
Ask the community:
- Discord: https://discord.gg/sentinel
- GitHub Discussions: https://github.com/glincker/sentinel/discussions
Contact us:
- General: sentinel@glincker.com
- Security: security@glincker.com
- Press: press@glincker.com
Built with ❤️ by Glincker (A GLINR Product)