A modern, AI-powered terminal-based SSH manager with enterprise-grade security
Wooak is a next-generation terminal-based SSH manager that combines the power of modern AI with enterprise-grade security features. Built for developers and system administrators who manage multiple servers, Wooak provides an intuitive interface for SSH server management with intelligent recommendations and comprehensive security analysis.
- π€ AI-Powered Assistant: Get intelligent recommendations for SSH configurations
- π Advanced Security: Comprehensive security analysis and audit logging
- β‘ Lightning Fast: Optimized for speed with intelligent caching
- π¨ Beautiful UI: Clean, keyboard-driven interface inspired by k9s and lazydocker
- π§ Highly Configurable: Extensive customization options for every use case
- Quick Start
- Features
- Architecture
- Installation
- Usage Guide
- Development
- Security
- Contributing
- Support
# Option 1: Homebrew (macOS)
brew install aryasoni98/homebrew-tap/wooak
# Option 2: Download Binary
curl -fsSL https://raw.githubusercontent.com/aryasoni98/wooak/main/install.sh | bash
# Option 3: Build from Source
git clone https://github.com/aryasoni98/wooak.git
cd wooak && make build# Install Ollama and AI models
make ai-setup
# Check AI status
make ai-statuswooak| Key | Action |
|---|---|
i |
Open AI Assistant |
z |
Open Security Panel |
a |
Add new server |
Enter |
Connect to server |
q |
Quit |
- Natural Language Search: "Find all production web servers"
- Security Analysis: AI-powered vulnerability detection
- Configuration Optimization: Intelligent performance recommendations
- Smart Suggestions: Personalized recommendations based on usage patterns
- SSH Key Validation: Comprehensive key security analysis
- Audit Logging: Complete security event tracking
- Host Security: Allow/block list management
- Policy Enforcement: Configurable security policies
- Visual Server List: Clean, organized server display
- Fuzzy Search: Quick server discovery
- Tagging System: Organize servers by environment/role
- Connection Multiplexing: Faster subsequent connections
- Port Forwarding: Local, remote, and dynamic forwarding
- Tabbed Interface: Organized configuration options
- Auto-completion: Smart SSH key detection
- Backup System: Automatic configuration backups
- Non-destructive Edits: Preserves existing formatting
graph TB
subgraph "User Interface Layer"
UI[TUI Interface]
AI_UI[AI Assistant Panel]
SEC_UI[Security Panel]
end
subgraph "Application Layer"
HANDLERS[Event Handlers]
SERVICES[Core Services]
end
subgraph "Business Logic Layer"
SERVER_SVC[Server Service]
AI_SVC[AI Service]
SEC_SVC[Security Service]
end
subgraph "Data Layer"
REPO[SSH Config Repository]
CACHE[AI Cache]
AUDIT[Audit Logger]
end
subgraph "External Services"
OLLAMA[Ollama AI]
SSH[OpenSSH Binary]
FILES[File System]
end
UI --> HANDLERS
AI_UI --> HANDLERS
SEC_UI --> HANDLERS
HANDLERS --> SERVICES
SERVICES --> SERVER_SVC
SERVICES --> AI_SVC
SERVICES --> SEC_SVC
SERVER_SVC --> REPO
AI_SVC --> CACHE
AI_SVC --> OLLAMA
SEC_SVC --> AUDIT
REPO --> FILES
AUDIT --> FILES
classDef uiLayer fill:#4A90E2,stroke:#2E5BBA,stroke-width:3px,color:#fff
classDef appLayer fill:#7ED321,stroke:#5BA517,stroke-width:3px,color:#fff
classDef businessLayer fill:#F5A623,stroke:#D68910,stroke-width:3px,color:#fff
classDef dataLayer fill:#BD10E0,stroke:#9013FE,stroke-width:3px,color:#fff
classDef externalLayer fill:#D0021B,stroke:#A00000,stroke-width:3px,color:#fff
class UI,AI_UI,SEC_UI uiLayer
class HANDLERS,SERVICES appLayer
class SERVER_SVC,AI_SVC,SEC_SVC businessLayer
class REPO,CACHE,AUDIT dataLayer
class OLLAMA,SSH,FILES externalLayer
sequenceDiagram
participant U as User
participant UI as TUI Interface
participant H as Handlers
participant S as Services
participant R as Repository
participant AI as AI Service
participant O as Ollama
U->>UI: Press 'i' (AI Assistant)
UI->>H: handleAIPanel()
H->>AI: Initialize AI Service
AI->>O: Check Connection
O-->>AI: Connection Status
AI-->>H: AI Ready
H-->>UI: Show AI Panel
U->>UI: Ask Question
UI->>H: processAIQuery()
H->>AI: Generate Response
AI->>O: Send Prompt
O-->>AI: AI Response
AI-->>H: Processed Response
H-->>UI: Display Result
- Go 1.21+ (for building from source)
- OpenSSH (for SSH connections)
- Ollama (optional, for AI features)
brew install aryasoni98/homebrew-tap/wooak# Auto-install script
curl -fsSL https://raw.githubusercontent.com/aryasoni98/wooak/main/install.sh | bash
# Manual download
LATEST_TAG=$(curl -fsSL https://api.github.com/repos/aryasoni98/wooak/releases/latest | jq -r .tag_name)
curl -LJO "https://github.com/aryasoni98/wooak/releases/download/${LATEST_TAG}/wooak_$(uname)_$(uname -m).tar.gz"
tar -xzf wooak_$(uname)_$(uname -m).tar.gz
sudo mv wooak /usr/local/bin/git clone https://github.com/aryasoni98/wooak.git
cd wooak
make dev-setup # Setup development environment
make build # Build the binaryflowchart TD
A[Launch Wooak] --> B[View Server List]
B --> C{Action Needed?}
C -->|Search| D[Press '/' - Fuzzy Search]
C -->|Add Server| E[Press 'a' - Add Server]
C -->|Connect| F[Press Enter - SSH Connect]
C -->|AI Help| G[Press 'i' - AI Assistant]
C -->|Security| H[Press 'z' - Security Panel]
D --> B
E --> I[Configure Server]
I --> B
F --> J[SSH Session]
J --> B
G --> K[AI Recommendations]
K --> B
H --> L[Security Analysis]
L --> B
classDef startNode fill:#4CAF50,stroke:#2E7D32,stroke-width:3px,color:#fff
classDef actionNode fill:#2196F3,stroke:#1565C0,stroke-width:3px,color:#fff
classDef decisionNode fill:#FF9800,stroke:#E65100,stroke-width:3px,color:#fff
classDef processNode fill:#9C27B0,stroke:#6A1B9A,stroke-width:3px,color:#fff
classDef aiNode fill:#00BCD4,stroke:#006064,stroke-width:3px,color:#fff
classDef securityNode fill:#F44336,stroke:#C62828,stroke-width:3px,color:#fff
class A startNode
class B,C actionNode
class D,E,F decisionNode
class I,J processNode
class G,K aiNode
class H,L securityNode
| Key | Action | Description |
|---|---|---|
/ |
Search | Toggle fuzzy search bar |
ββ / jk |
Navigate | Move through server list |
Enter |
Connect | SSH into selected server |
a |
Add | Add new server |
e |
Edit | Edit selected server |
d |
Delete | Delete selected server |
p |
Pin | Pin/unpin server |
t |
Tags | Edit server tags |
s |
Sort | Toggle sort field |
S |
Reverse | Reverse sort order |
c |
Copy | Copy SSH command |
g |
Ping | Ping selected server |
r |
Refresh | Refresh server data |
i |
AI | Open AI Assistant |
z |
Security | Open Security Panel |
q |
Quit | Exit application |
| Key | Action | Description |
|---|---|---|
Enter |
Send | Send message to AI |
Esc |
Close | Close AI panel |
Tab |
Switch | Switch between panels |
| Key | Action | Description |
|---|---|---|
Tab |
Navigate | Move between fields |
Enter |
Save | Save configuration |
Esc |
Close | Close security panel |
Wooak automatically reads from your ~/.ssh/config file. No additional configuration is required, but you can customize:
- AI Settings: Configure AI models and providers
- Security Policies: Set security validation rules
- UI Preferences: Customize display options
graph LR
A[Clone Repo] --> B[Setup Environment]
B --> C[Make Changes]
C --> D[Run Tests]
D --> E{Quality Checks}
E -->|Pass| F[Build]
E -->|Fail| C
F --> G[Test Features]
G --> H[Submit PR]
classDef startNode fill:#4CAF50,stroke:#2E7D32,stroke-width:3px,color:#fff
classDef processNode fill:#2196F3,stroke:#1565C0,stroke-width:3px,color:#fff
classDef decisionNode fill:#FF9800,stroke:#E65100,stroke-width:3px,color:#fff
classDef successNode fill:#8BC34A,stroke:#558B2F,stroke-width:3px,color:#fff
classDef failNode fill:#F44336,stroke:#C62828,stroke-width:3px,color:#fff
class A startNode
class B,C,D,G,H processNode
class E decisionNode
class F successNode
# Development Setup
make dev-setup # Setup complete development environment
make tools # Install development tools
make deps # Download dependencies
# Building
make build # Build binary with quality checks
make build-all # Build for all platforms
make run # Run from source
make demo # Run demo with sample data
# Quality Assurance
make quality # Run all quality checks
make test # Run unit tests
make coverage # Generate coverage report
make lint # Run linter
make security-scan # Run security checks
# AI Features
make ai-setup # Setup AI dependencies
make ai-status # Check AI service status
make ai-models # List available AI models
make ai-test # Test AI functionality
# Security Features
make security-test # Test security features
make security-scan # Run security analysis
# Maintenance
make clean # Clean build artifacts
make update-deps # Update dependencies
make help # Show all available targetswooak/
βββ cmd/ # Application entry point
β βββ main.go
βββ internal/ # Private application code
β βββ adapters/ # External interface adapters
β β βββ data/ # Data layer adapters
β β βββ ui/ # User interface adapters
β β βββ ai/ # AI UI components
β β βββ security/ # Security UI components
β βββ core/ # Business logic
β β βββ domain/ # Domain models
β β β βββ ai/ # AI domain models
β β β βββ security/ # Security domain models
β β βββ ports/ # Interface definitions
β β βββ services/ # Business services
β β βββ ai/ # AI services
β β βββ security/ # Security services
β βββ logger/ # Logging utilities
βββ docs/ # Documentation and screenshots
βββ makefile # Build automation
βββ .goreleaser.yaml # Release configuration
βββ README.md # This file
- Create Domain Models (if needed)
- Implement Services in
internal/core/services/ - Add UI Components in
internal/adapters/ui/ - Update Handlers in
internal/adapters/ui/handlers.go - Add Tests and ensure quality checks pass
- Update Documentation
# Run all tests
make test
# Run tests with coverage
make coverage
# Run specific test packages
go test ./internal/core/services/...
# Run benchmarks
make benchmarkWooak implements multiple layers of security:
- Validates key types and sizes
- Checks for weak or deprecated algorithms
- Provides security recommendations
- Tracks all security-relevant events
- Configurable retention policies
- Structured logging for analysis
- Allow/block list management
- Connection validation
- Security policy enforcement
- Non-destructive configuration edits
- Automatic backups before changes
- Atomic file operations
graph TD
A[SSH Connection Request] --> B[Security Validation]
B --> C{Key Valid?}
C -->|No| D[Block Connection]
C -->|Yes| E{Host Allowed?}
E -->|No| D
E -->|Yes| F[Log Event]
F --> G[Allow Connection]
D --> H[Log Security Event]
H --> I[Update Audit Log]
G --> I
classDef requestNode fill:#2196F3,stroke:#1565C0,stroke-width:3px,color:#fff
classDef validationNode fill:#FF9800,stroke:#E65100,stroke-width:3px,color:#fff
classDef decisionNode fill:#9C27B0,stroke:#6A1B9A,stroke-width:3px,color:#fff
classDef blockNode fill:#F44336,stroke:#C62828,stroke-width:3px,color:#fff
classDef allowNode fill:#4CAF50,stroke:#2E7D32,stroke-width:3px,color:#fff
classDef logNode fill:#00BCD4,stroke:#006064,stroke-width:3px,color:#fff
class A requestNode
class B validationNode
class C,E decisionNode
class D blockNode
class G allowNode
class F,H,I logNode
- Regular Key Rotation: Use AI recommendations for key management
- Monitor Audit Logs: Review security events regularly
- Update Security Policies: Keep policies current with best practices
- Use Strong Keys: Prefer Ed25519 over RSA when possible
- Enable Host Verification: Always verify host keys
Wooak is participating in Hacktoberfest 2025! π
We welcome contributions from developers of all skill levels. Whether you're a seasoned Go developer or just starting your open source journey, there are opportunities for everyone to contribute meaningfully to Wooak.
- Read our Contributing Guidelines - Essential reading for all contributors
- Check our Code of Conduct - We maintain a welcoming community
- Look for issues labeled
hacktoberfest,good first issue, orhelp wanted - Use our Hacktoberfest issue template when creating issues
Perfect for Hacktoberfest beginners:
- π Documentation improvements - Fix typos, add examples, improve clarity
- π§ͺ Test coverage - Add tests for existing functionality
- π¨ UI/UX polish - Improve user experience and interface
- π Bug fixes - Fix issues labeled as "good first issue"
- β‘ Performance improvements - Optimize existing code
- Quality over Quantity: We value meaningful contributions that improve the project
- Follow our standards: All contributions must meet our quality and testing requirements
- Respect the community: Follow our Code of Conduct and be respectful to all contributors
- Valid contributions: Ensure your PRs are not spam and provide real value
We welcome contributions! Please follow these guidelines:
graph LR
A[Fork Repository] --> B[Create Feature Branch]
B --> C[Make Changes]
C --> D[Run Tests]
D --> E[Submit PR]
E --> F[Code Review]
F --> G[Merge]
classDef startNode fill:#4CAF50,stroke:#2E7D32,stroke-width:3px,color:#fff
classDef processNode fill:#2196F3,stroke:#1565C0,stroke-width:3px,color:#fff
classDef testNode fill:#FF9800,stroke:#E65100,stroke-width:3px,color:#fff
classDef reviewNode fill:#9C27B0,stroke:#6A1B9A,stroke-width:3px,color:#fff
classDef successNode fill:#8BC34A,stroke:#558B2F,stroke-width:3px,color:#fff
class A startNode
class B,C processNode
class D testNode
class E,F reviewNode
class G successNode
-
Use Semantic PR Titles:
feat(scope): description- New featuresfix(scope): description- Bug fixesimprove(scope): description- Improvementsdocs: description- Documentation
-
Ensure Quality:
make quality # Run all quality checks make test # Run tests
-
Update Documentation:
- Update README if needed
- Add/update code comments
- Update help text
ui- User interface changesai- AI-related featuressecurity- Security featuresconfig- Configuration handlingparser- SSH config parsing
feat(ai): add natural language search
fix(security): resolve key validation edge case
improve(ui): enhance server list performance
docs: update installation instructionsIf you find Wooak useful, please consider:
- β Starring the repository
- π Reporting bugs via issues
- π‘ Suggesting new features
- π€ Contributing code improvements
- π§ Issues: GitHub Issues
- π¬ Discussions: GitHub Discussions
- π Contributing: Contributing Guidelines
- π Code of Conduct: Code of Conduct
- π‘οΈ Security: Security Policy
- Built with tview and tcell
- Inspired by k9s and lazydocker
- AI powered by Ollama
Made with β€οΈ for the developer community