# Show HN: A LinkedIn / X CLI for your agents

> Source: <https://usesocial.dev>
> Published: 2026-07-07 23:47:47+00:00

**Accounts** — social account connect linkedin · social account reconnect linkedin <account> · social account disconnect linkedin <account> · social account billing · social account. Connect, re-auth, inspect billing, and list the accounts on this network.

**Accounts** — social account connect x · social account reconnect x <account> · social account disconnect x <account> · social account billing · social account. Connect, re-auth, inspect billing, and list the accounts on this network.

**Composable with the tools you already use.** Every command speaks JSON. Pipe through

`jq`

, `fzf`

, your agent's planner — anything that reads stdin.**Shared command patterns across both networks.**

`--limit`

bounds pages, LinkedIn list reads use `--offset`

, and offset responses can expose `.meta.totalCount`

. Cursor-based reads use `--cursor`

and `.meta.cursor`

; cacheable reads also take `-H "Cache-Control: no-cache"`

for fresh upstream reads.**Repeated exploration can get cheaper.** Allowlisted GET reads can hit cache when your agent asks the same question again, so those repeat hits cost

`$0`

.**Designed for agents first.** Deterministic exit codes, structured errors, and a

`SKILL.md`

you drop straight into Claude, Codex, or any other agent.Agents tend to ask the same read questions while exploring. social has two read layers: live proxy reads, where selected repeats can hit cache, and the local mirror, where synced data can be queried for free with SQL.

`sync`

pulls your own data into the local mirror and can spend usage. `sql`

queries that mirror read-only, returns the standard envelope, and omits `meta.cost`

.**15 minutes**. Change it with

`social account config cache ttl {total_in_seconds}`

.`-H "Cache-Control: no-cache"`

on cacheable read commands when freshness matters. It skips the cached read and refreshes the stored response after a successful upstream call.`no-store`

bypasses cache read and write; `max-age=<seconds>`

overrides the TTL for one request.`ETag`

and `Last-Modified`

. The request cache surface is still `Cache-Control`

; use `no-cache`

for a fresh upstream read.`meta.cache.tables`

, including last sync time and age.**mode 0600**. Stored in your OS keyring when one is available; this file is the fallback.

**social account login**:

**read,write**(default) or

**read**. Carried in the token and revocable with

**social account logout**— there is no ambient write access.

`Cache-Control: no-cache`

, `no-store`

, or `max-age=<seconds>`

when the command lists `--header`

.`read,write`

. Clear Write in the prompt for a session that can't post, invite, or follow.`$0`

. Audit it any time with `social account billing`

, `social account usage`

, and `social account logs`

— nothing happens on your accounts you can't see.[LinkedIn Account Safety](/security/linkedin).

Built by [@CyrusNewDay](https://x.com/cyrusnewday) because it's a tool he needed.
