Encrypted, ephemeral, private memos on atproto
3
fork

Configure Feed

Select the types of activity you want to include in your feed.

1# @cistern/consumer 2 3Consumer client for retrieving, decrypting, and deleting Cistern memos. 4 5## Usage 6 7### Generate Keypair 8 9```typescript 10import { createConsumer, serializeKey } from "@cistern/consumer"; 11 12const consumer = await createConsumer({ 13 handle: "user.bsky.social", 14 appPassword: "xxxx-xxxx-xxxx-xxxx", 15}); 16 17const keypair = await consumer.generateKeyPair(); 18 19console.log(`Public key URI: ${keypair.publicKey}`); 20console.log(`Private key: ${serializeKey(keypair.privateKey)}`); 21``` 22 23### Use Existing Keypair 24 25```typescript 26import { createConsumer } from "@cistern/consumer"; 27 28const consumer = await createConsumer({ 29 handle: "user.bsky.social", 30 appPassword: "xxxx-xxxx-xxxx-xxxx", 31 keypair: { 32 publicKey: "at://did:plc:abc123/app.cistern.pubkey/3jzfcijpj2z", 33 privateKey: "base64-encoded-private-key", 34 }, 35}); 36``` 37 38### List Memos (Polling) 39 40```typescript 41for await (const memo of consumer.listMemos()) { 42 console.log(`[${memo.tid}] ${memo.text}`); 43 await consumer.deleteMemo(memo.tid); 44} 45``` 46 47### Subscribe to Memos (Real-time) 48 49```typescript 50for await (const memo of consumer.subscribeToMemos()) { 51 console.log(`[${memo.tid}] ${memo.text}`); 52 await consumer.deleteMemo(memo.tid); 53} 54```