DeckDeckDeck · Native macOS
Threads and Bluesky, side by side.
You run accounts on both networks, so you know the browser-tab dance. DeckDeckDeck ends it. Every account gets its own columns, the columns live in one Mac window, and one composer posts to both networks at once.
In development · macOS 15 or later
In the columns
Everything a deck should do.
This app is meant to stay open from breakfast to shutdown. These are the parts that earn that spot.
Deck first
The deck is the whole point. Home, activity, search, lists, DMs — each account gets the columns you pick, in the order you drag them. ⌘1 to ⌘9 jumps between them. Threads and Bluesky share the same row.
Live, or quiet
Bluesky posts land the moment they're written — the deck streams straight off Jetstream, saved searches included. Too much? One toggle swaps streaming for a once-a-minute refresh.
Post to both at once
Write once, pick accounts, post. The composer gates who can reply, autocompletes @mentions, takes images and video, and stashes drafts that sync with bsky.app — and still work offline.
A real Mac app
SwiftUI, zero third-party dependencies. It has a menu bar because Mac apps have menu bars. Notifications, Dock badge, Shortcuts, Spotlight, Siri — the parts web wrappers skip.
Full Bluesky citizenship
A real AT Protocol client, not a web view. DMs, lists, saved posts, follower graphs, video that streams properly, and reporting that actually reaches the moderation service.
Moderation, faithfully
Set your content filters once, on bsky.app. They apply here identically — subscribed labelers, your per-labeler overrides, muted threads. If the network says hide, it hides.
Why it matters
Built for people who live in the deck.
- 01
Retire the browser tabs.
Both networks, every account, one window that stays open all day. No Electron — this is native code, not a website in a costume. It launches fast and idles quietly.
- 02
Triage at keyboard speed.
J and K walk the column. O opens the thread, R replies, ⌘R refreshes. Your hands stay on the keyboard, and only the accounts you opted in are allowed to interrupt you.
- 03
Honest about the platforms.
Threads' API can't do everything Bluesky's can. Where a network falls short, the app says so right where you'd expect the feature — no faking, no silent gaps. Your sessions live in the macOS Keychain.
Questions, answered
Before you install.
01What do I need to run it?+
macOS 15 (Sequoia) or newer. That's it — no Electron, no runtime to download.
02Which networks does it support?+
Threads and Bluesky, with as many accounts of each as you have. Columns from both networks sit in the same deck.
03How do accounts sign in?+
Bluesky uses an app password — tick "Allow access to your direct messages" if you want chat. Threads signs in with OAuth. Sessions go in the macOS Keychain and nowhere else.
04Does it respect my Bluesky moderation settings?+
Identically. The app reads the same preferences bsky.app writes: content filters, subscribed labelers, your per-labeler overrides. Drafts and saved posts sync with the official app too.
05Is it accessible?+
It targets WCAG 2.2 AA. VoiceOver labels on every control, Reduce Motion honored everywhere, Dynamic Type, and you can drive the whole app from the keyboard.
06When can I get it?+
It's in active development and unreleased. If you have Xcode 16, you can build it from source today. A public release is coming.