Skip to content

comfuture/bsky-cli

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

6 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Bluesky Terminal Client

A fancy terminal client for Bluesky built with TypeScript and Ink (React for CLI).

Features

  • πŸš€ Interactive timeline browsing with smooth scrolling
  • ✍️ Compose and post updates
  • ❀️ Like and interact with posts
  • ⌨️ Advanced keyboard navigation (vim-style + page navigation)
  • πŸ“œ Scrollable timeline that adapts to terminal size
  • 🎨 Beautiful terminal UI with colors
  • πŸ” Secure credential storage (auto-login on next run)
  • 🌐 Cross-platform support (Windows, macOS, Linux)

Installation

npm install
npm run build

Usage

Development Mode

npm run dev

Production Mode

npm start

Environment Variables

Create a .env file based on .env.example:

BSKY_HANDLE=your.handle.bsky.social
BSKY_PASSWORD=your-app-password
BSKY_SERVICE=https://bsky.social

Keyboard Shortcuts

Timeline View

  • ↑/↓ or j/k - Navigate posts one by one
  • PageUp/PageDown - Navigate by page
  • g - Jump to top (first post)
  • G - Jump to bottom (last post)
  • l - Like/unlike selected post
  • c - Compose new post
  • p - View profile (coming soon)
  • n - View notifications (coming soon)
  • r - Refresh timeline
  • L - Logout (clears saved credentials)
  • q - Quit

Compose View

  • Ctrl+D - Send post
  • Esc - Cancel composition

Architecture

  • Framework: Ink (React for CLI)
  • Language: TypeScript
  • Bluesky SDK: @atproto/api
  • UI Components: ink-text-input, ink-spinner, ink-select-input
  • Styling: chalk for colors
  • Date formatting: date-fns

Project Structure

src/
β”œβ”€β”€ components/     # React/Ink UI components
β”œβ”€β”€ services/       # Bluesky API service layer
β”œβ”€β”€ hooks/          # Custom React hooks
β”œβ”€β”€ utils/          # Utility functions
└── index.tsx       # Entry point

Credential Storage

The client securely saves your authentication tokens after the first successful login:

  • Windows: %LOCALAPPDATA%\bsky-cli\credentials.json
  • macOS: ~/Library/Application Support/bsky-cli/credentials.json
  • Linux: ~/.config/bsky-cli/credentials.json

Credentials are stored with restricted permissions (owner read/write only) and will be automatically used on subsequent launches. Use the L key to logout and clear saved credentials.

Future Enhancements

  • Thread viewing and replies
  • User profiles and search
  • Notifications with filtering
  • Custom feeds support
  • Real-time updates via WebSocket
  • Media preview (ASCII art)
  • Configuration preferences

About

Minimal Bluesky terminal client

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published