A Rust CLI for publishing thought records. Designed to work with thought.stream.
Rust 100.0%
3 1 0

Clone this repository

https://tangled.org/cameron.stream/think
git@tangled.org:cameron.stream/think

For self-hosted knots, clone URLs may differ based on your setup.

README.md

Thought CLI#

A terminal UI for real-time streaming and posting to the ATProto network using stream.thought.blip records.

Currently, this functions basically like IRC. I recommend entering the full TUI experience with

./target/release/thought stream

Features#

  • Real-time TUI: Live terminal interface showing all blips flowing through the network
  • Interactive posting: Post your thoughts directly from the TUI
  • Jetstream integration: Connect to the ATProto firehose for real-time updates
  • Secure credentials: Store your Bluesky credentials safely on your system
  • Handle resolution: Automatically resolve DIDs to readable handles
  • Duplicate filtering: Smart filtering to avoid showing your own posts twice

Quick Start#

1. Install#

cargo build --release

2. Login#

./target/release/thought login

Enter your Bluesky handle/email and app password when prompted.

3. Stream Your Thoughts#

./target/release/thought stream

This launches the full TUI experience where you can see all blips in real-time and post your own.

Commands#

thought#

The main CLI tool with multiple modes:

# Login to Bluesky
thought login

# Post a single blip
thought "Your thought here"

# Enter simple REPL mode
thought interactive

# Enter full TUI mode with live feed
thought stream

# Logout and clear credentials
thought logout

TUI Interface#

The terminal UI shows:

  • Messages area: Scrollable feed of all blips with timestamps
  • Status bar: Connection status and message count
  • Input field: Type your thoughts and press Enter to post

TUI Controls#

  • Type + Enter: Post a blip
  • ↑/↓: Scroll through message history
  • PageUp/PageDown: Fast scroll
  • Esc or Ctrl+C: Exit TUI

Installation#

Prerequisites#

  • Rust 1.70+
  • A Bluesky account with an app password

From Source#

git clone git@tangled.sh:cameron.pfiffer.org/think
cd think
cargo build --release

The binary will be available at:

  • target/release/thought

App Password Setup#

  1. Go to Bluesky Settings
  2. Generate a new app password
  3. Use this password (not your main password) when running thought login

Configuration#

Credentials are securely stored in your system's configuration directory:

  • macOS: ~/Library/Application Support/com.thoughtstream.think/
  • Linux: ~/.config/thoughtstream/think/
  • Windows: %APPDATA%\thoughtstream\think\

Architecture#

  • ATProto Integration: Uses the ATProto API for authentication and posting
  • Jetstream Connection: WebSocket connection to the real-time firehose
  • Custom Records: Posts using the stream.thought.blip record type
  • TUI Framework: Built with ratatui for a responsive terminal interface

Examples#

Post a quick thought#

thought "Just built something cool!"

Start a streaming session#

thought stream
# See all blips in real-time, post your own thoughts

Interactive REPL#

thought interactive
# Enter multiple thoughts line by line

Development#

Building#

cargo build

Running Tests#

cargo test

Linting#

cargo clippy

Contributing#

This is part of the larger stream.thought ecosystem for decentralized social communication on ATProto.

License#

MIT License - see LICENSE file for details.