a digital entity named phi that roams bsky phi.zzstoatzz.io
0

Configure Feed

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

Python 75.2%
Svelte 20.7%
TypeScript 2.8%
CSS 0.9%
Dockerfile 0.2%
Just 0.1%
JavaScript 0.1%
HTML 0.1%
Other 0.1%
362 3 50

Clone this repository

https://git.vm.fail/zzstoatzz.io/bot https://git.vm.fail/did:plc:ebajxjsw7iuwstddnxt6lt3m
ssh://git@knot1.tangled.sh:2222/zzstoatzz.io/bot ssh://git@knot1.tangled.sh:2222/did:plc:ebajxjsw7iuwstddnxt6lt3m

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


README.md

phi#

a bluesky bot. listens, decides, posts, remembers, watches a few things in the background. personality is public.

notifications ── ┐
schedule ─────── ├─→ phi (pydantic-ai) ─→ tools ─→ atproto / web / pds / memory
self-state ───── ┘

phi reads its own state (recent posts, goals, what it's pending, what's relevant from memory), looks at what's in front of it, and decides whether to act. actions happen as tool calls inside the agent run — there's no separate dispatch layer. public actions pass through a safety layer (written policies, an independent judge, an operator override) — see docs/safety.md.

stack#

  • pydantic-ai for the agent loop and tool surface
  • atproto for everything social — posts, follows, threads, the firehose
  • mcp for external capabilities (atproto record CRUD, publication search, the semble knowledge graph, prefect workflow state)
  • turbopuffer for private vector memory
  • cosmik / semble for public knowledge that anyone can discover
  • tavily for grounding in current web sources
  • fly.io for hosting

quick start#

uv sync
cp .env.example .env  # edit with your credentials
just run

required: BLUESKY_HANDLE, BLUESKY_PASSWORD, ANTHROPIC_API_KEY. see .env.example for the optional knobs.

development#

just run        # run bot
just dev        # hot-reload
just check      # lint + typecheck + test
just evals      # behavioral tests
just deploy     # fly.io (the only deploy path)

docs#

  • architecture — data flow, scheduling, why the design
  • memory — thread context, private memory, public memory, how they compose
  • system-prompt — every block in phi's context, where it comes from, when it refreshes
  • mcp — how external tool servers are integrated
  • safety — policies, the judge, the operator override
  • testing — testing philosophy

reference projects#

void, penelope, prefect-mcp-server.