β οΈ CAUTION β οΈ
This repository is fully generated with Claude Code Spec Drriven Development.
βΉοΈ About
gosl is a terminal-based Slack client with a rich text user interface for interacting with Slack workspaces directly from the command line.
β¨ Features
- ποΈ Channel Navigation - Browse and switch between public channels, private channels, and direct messages
- π¬ Real-time Messaging - View, send, and receive Slack messages with live updates via WebSocket
- π§΅ Thread Conversations - Read and participate in threaded discussions
- β¨οΈ Keyboard-driven UI - Fully interactive TUI with Vim-style keyboard shortcuts
- πΎ Message Caching - Intelligent LRU caching system for improved performance and reduced API calls
- πͺΆ Lightweight - Fast, efficient resource usage without a heavy desktop app
π― Use Cases
- π¨βπ» Terminal-focused developers - Stay in your terminal environment
- π Lightweight Slack access - Quick interactions without opening a desktop app
- π Remote/SSH environments - Access Slack from headless or remote systems
- β‘ Keyboard-driven workflows - Navigate Slack efficiently with keyboard shortcuts
π» Usage
β¨οΈ Keyboard Shortcuts
Global
q / Ctrl+C - Quit
? - Show help
Channel List
β / k - Move up
β / j - Move down
Enter - Select channel
/ - Search channels
Esc - Exit search
Message View
β / k - Previous message
β / j - Next message
g - Jump to top
G - Jump to bottom
Ctrl+U / PgUp - Page up
Ctrl+D / PgDn - Page down
Enter - Open thread (if exists)
i / c - Compose message
Esc - Back to channel list
Thread View
β / k - Previous message
β / j - Next message
i / r - Reply to thread
Esc - Back to message view
Ctrl+Enter / Alt+Enter / Ctrl+J - Send message
Enter - New line
Esc - Cancel
π Environments
π Configuration file path
Default : $XDG_CONFIG_HOME/gosl/config.toml or $HOME/.config/gosl/config.toml
# Run with custom config path
gosl --config /path/to/your/config.toml
π Log file path
Default : $XDG_DATA_HOME/gosl/logs/gosl.log or $HOME/.local/share/gosl/logs/gosl.log
Log path is determined by XDG Base Directory specification.
π§ Installation
π Using go
go install github.com/yanosea/gosl/cmd/gosl@latest
πΊ Using homebrew
brew tap yanosea/tap
brew install yanosea/tap/gosl
π¦ Download from release
Go to the Releases and download the latest binary for your platform.
π Build from source
git clone https://github.com/yanosea/gosl.git
cd gosl
# Build for current platform
go build -o gosl ./cmd/gosl
# Or build for specific platform
make build.linux # Linux AMD64
make build.darwin # macOS (Intel & Apple Silicon)
make build.windows # Windows AMD64
Cross-platform binaries will be output to ./bin/
βοΈ Setup
1οΈβ£ Create a Slack App
- Go to Slack API
- Create a new app (from scratch)
- Add Bot Token Scopes:
channels:history
channels:read
chat:write
groups:history
groups:read
im:history
im:read
users:read
- Enable Socket Mode
- Generate an App-Level Token with
connections:write scope
- Install the app to your workspace
Run gosl for the first time to generate a configuration template:
gosl
This creates ~/.config/gosl/config.toml. Edit it and add your tokens:
slack_token = "xoxb-your-bot-token"
app_token = "xapp-your-app-token"
message_limit = 100
3οΈβ£ Run
gosl
Optional flags:
--config <path> - Custom config file path
--version - Print version information
β¨ Update
π Using go
Reinstall gosl!
go install github.com/yanosea/gosl/cmd/gosl@latest
πΊ Using homebrew
brew update
brew upgrade gosl
π¦ Download from release
Download the latest binary from the Releases page and replace the old binary in your $PATH.
π§Ή Uninstallation
π§ Uninstall gosl
π Using go
rm $GOPATH/bin/gosl
# maybe you have to execute with sudo
rm -fr $GOPATH/pkg/mod/github.com/yanosea/gosl*
πΊ Using homebrew
brew uninstall gosl
brew untap yanosea/tap/gosl
π¦ Download from release
Remove the binary you downloaded and placed in your $PATH.
ποΈ Remove data files
If you've set custom paths, please replace $HOME/.config/gosl and $HOME/.local/share/gosl with paths you've set.
These below commands are in the case of default. Of course you can remove whole the directory.
πΎ Remove configuration file
rm $HOME/.config/gosl/config.toml
πΎ Remove log files
rm -rf $HOME/.local/share/gosl/logs
π οΈ Development
π§ͺ Run Tests
# All tests with coverage
make test
# Specific package
go test ./internal/domain/...
# Unit tests only
go test -short ./...
π Update Mocks
make update.mocks
π Update Credits
make update.credits
π§Ή Clean
make clean
π License
πMIT
ποΈ Author
πΉ yanosea
π€ Contributing
Feel free to point me in the right directionπ
π Credits
Built with amazing open-source libraries. See CREDITS for full list.