get in loser, we're a-sembling

yesterday semble launched their public API

What is semble?

in their words, "A social knowledge network for creators, thinkers, researchers, learners, writers, and you"

but i think of it as the 0substrate for the last knowledge graph. meaning, everyone's bookmarks about everything, forever, with pheromone trails between the bookmarks that we can all see.

say I make a "great recipes" collection of cards (where cards are mostly just links, and collections are groups of cards or collections themselves!). i can let @pouriade.com or anyone else add recipe links to that collection, and then @tynanpurdy.com comes along and adds our "great recipes" collection to his over-arching "food" collection. any one of us can have a personal corpus of integrated information, and any one of us can partake in shared curation of collections, allowing us to benefit from each other's exploration.

that's a silly example, but how about this real example?

ambient curation

@phi.zzstoatzz.io (ai bot) watches everything i post and like on bluesky, can follow accounts, writes blogs, checks my infrastructure, reads and writes arbitrary atproto records etc.

phi also "remembers" things via a home-rolled combination of episodic and semantic memory (sorry @cameron.stream !)

phi "dreams" periodically to curate gathered information, which amounts to promoting notes/breadcrumbs into semble cards / collections, or merging existing cards / collections

ϕ's cards — Semble

Explore ϕ's cards on Semble

as you might see, phi's interests are currently dominated by agent architecture and the influence of @astral100.bsky.social (which is something i will continue to tweak), but look at this excerpt from the claude api docs and squint:

Agents write to their memory stores as they work, but these writes are local and incremental: over many sessions a memory store accumulates duplicates, contradictions, and stale entries.

Dreams let Claude clean that up. A dream reads an existing memory store alongside past session transcripts, then produces a new, reorganized memory store: duplicates merged, stale or contradicted entries replaced with the latest value, and new insights surfaced.

my brain was just dying to replace these words

memory store -> semble collection

entries -> semble cards

so that's basically what i did . i have a cron job that runs every so often (i don't literally use Claude Dreams from their API, just the idea) and curates private state (vectorstore, private notes phi takes etc) into semble cards and collections, which then become discovery materials at future query time! or... curated information artifacts that anyone with the same interests can benefit from!

back to the Semble API

so why does the API launching matter if i was already doing this stuff? well, its just easier to do shit correctly

i wanted a python client for semble

from semble import Semble

client = Semble() # reads SEMBLE_API_KEY from the environment or a local .env

# add a url to your library
result = client.cards.add_url("https://example.com", note="worth a read")

# search your cards
for card in client.cards.search("durable execution"):
print(card.url)

# semantic search across semble
for hit in client.search.semantic("agent memory", threshold=0.7):
print(hit.metadata.title, hit.url)

bing! bop!

how about a CLI?

» uvx --from 'semble-api[cli]' semble search "agent memory" | jq -r '.metadata.title'
Agentic memory, why evals are broken, and 12 months of work undone in a week.
Tim Kellogg (@timkellogg.me)
Building a Semi Autonomous Bluesky Agent with Persistent Memory - Brady Hawkins
Memory in Agents: What, Why and How
Ambient Associative Memory
LukeW | Agent Management Interface Patterns
Pieces | Infinite Artificial Memory for your Digital Workers and Agents
Deep Agents
Dii familiares
How to forget

boom! boom!

0how about a code-mode MCP so there's 2 tools instead of 40+

boom bop bam!

(for the non culture-enjoyers)

all of this was trivial (done in <1 hour with Claude Fable) because the API launch makes everything legible.

now i can either host mine or @pouriade.com 's MCP and give it to phi as an HTTP transport MCP or simply give phi either one as a STDIO MCP and it will be able to access the entirety of the Semble API to do whatever sembling it needs. i can use the exact same interface in the periodic curation without implementing it again.

or, more practically for you, just give claude an implicitly legible, read/write interface to the entire Semble API

@pouriade.com 's MCP

claude mcp add semble -e SEMBLE_API_KEY=your_api_key -- node /absolute/path/to/semble-mcp/dist/index.js

my code-mode MCP

claude mcp add semble -e SEMBLE_API_KEY=your_api_key -- uvx --from 'semble-api[mcp]' semble-mcp

so you can ask:

or something similar like the demo video embedded above.

pretty sick, amirite?

our shared knowledge graph gets richer the more everyone uses it! if agents are going to use it, they should have all the information they need to do it well, so as not to pollute the space with slop. the Semble API makes it trivial to build clients for humans or agents that recommend or enforce blessed usage

^ claude (yes i am looking at you, claude) is a very bad bot in this regard, so more clients enforcing blessed usage == more good pheromone trails

similarly, you can use these clients for discovery, not just your own/agent's curation. RE this related point about standard.site:

uvx --from 'semble-api[cli]' semble search "durable execution"