a tool to help your Letta AI agents navigate bluesky
TypeScript 63.6%
Python 36.4%
130 2 0

Clone this repository

https://tangled.org/taurean.bryant.land/cloudseeding
git@tangled.org:taurean.bryant.land/cloudseeding

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

README.md

a letta logo with rounded corners and a slight gradient to make the logo look a bit like a cloud

Cloudseeding#

A bridge between bluesky and AI agents on Letta.

Quickstart#

  1. deno task config to create .env file
  2. edit .env as needed
  3. deno task mount to prepare your letta agent
  4. deno task start to start checking bluesky

This project assumes you have a letta agent already created. If not, you can get started by creating an agent in their agent creation tool. Once you have that ready, getting your agent on bluesky is four steps:

features:#

  • checks bluesky for notifications on a dynamic basis, emulating the frequency people typically check.
  • relays notifications to your agent with prompts for every notification type
  • (optional, opt-in) "goes to sleep" and "wakes up" with configurable time windows
  • (optional, opt-in) has scheduled reflection sessions to clean up its own memory blocks and perform non-bluesky tasks
  • (optional, opt in) schedules time for the agent to check bluesky feeds, perform searches, and generally engage with bluesky proactively
  • automatically adds a record to the agent's bluesky PDS to indicate that it's AI
  • agent can be configured to see: likes, mentions, replies, reposts, follows, and quotes
  • agent can be configured to perform: likes, posts, replies, reposts, quotes, following, blocking, muting (or undoing many of those)
  • agent can also search bluesky and mute specific posts/threads to disengage

configurable variables:#

required#

  • LETTA_API_KEY: your letta API key.
  • LETTA_AGENT_ID: your letta agent's unique ID
  • LETTA_PROJECT_NAME: your letta project name or slug
  • BSKY_USERNAME: the agent's handle (do not include "@")
  • BSKY_APP_PASSWORD: your agent's App Password, do not use your real password
  • RESPONSIBLE_PARTY_NAME: your name or the name of the organization that is responsible for the agent's behavior
  • RESPONSIBLE_PARTY_CONTACT: the email address or web address where the responsible party can be contacted if needed.

optional#

  • AUTOMATION_LEVEL: how much autonomy your agent has. (options include: assisted, collaborative, automated)
  • BSKY_SERVICE_URL: use if bsky.social is not who handles your PDS
  • BSKY_NOTIFICATION_TYPES: a comma separated list of notifications you want your agent to get, you must include at least one. (like, repost, follow, mention, reply, quote)
  • BSKY_SUPPORTED_TOOLS: a comma separated list of tools your agent can optionally have. (create_bluesky_post, like_bluesky_post, quote_bluesky_post, repost_bluesky_post, update_bluesky_connection [follow, mute, block; or inverse], update_bluesky_profile [change its bluesky bio or display name])
  • NOTIF_DELAY_MINIMUM: the small amount of time, in milliseconds, for when it will schedule the next notification checking session
  • NOTIF_DELAY_MAXIMUM: the largest amount of time, in milliseconds, for when it will schedule the next notification checking session
  • NOTIF_DELAY_MULTIPLIER: a percentage of how much the delay will increase when notifications are not found (max is 500 meaning 500% increases)
  • REFLECTION_DELAY_MINIMUM: the smallest amount of time, in milliseconds, for when it will schedule the next reflection session.
  • REFLECTION_DELAY_MAXIMUM: the largest amount of time, in milliseconds, for when it will schedule the next reflection session. Omitting both values disables reflecting.
  • PROACTIVE_DELAY_MINIMUM: the smallest amount of time, in milliseconds, for when it will schedule the next session for proactively using bluesky.
  • PROACTIVE_DELAY_MAXIMUM: the largest amount of time, in milliseconds, for when it will schedule the next session for proactively using bluesky. Omitting both values disables proactive bluesky sessions.
  • WAKE_TIME: (0-23) the hour where your agent will generally "wake up".
  • SLEEP_TIME: (0-23) the hour where your agent will generally "go to sleep". Omitting both values disables sleeping.
  • TIMEZONE: the timezone name for your agent's location, eg "America/Los_Angeles".
  • RESPONSIBLE_PARTY_TYPE: "person" or "organization", the type of party that is responsible for this agent. defaults to person.
  • AUTOMATION_DESCRIPTION: a description of what your agent generally does on bluesky.
  • DISCLOSURE_URL: a URL to a disclosure document of some kind, likely a longer version of your AUTOMATION_DESCRIPTION.
  • RESPONSIBLE_PARTY_BSKY: the DID or bluesky handle of the responsible party
  • EXTERNAL_SERVICES: a comma-separated list of external tools and services your agent relies on outside of Bluesky (e.g., "Letta, Railway, Google Gemini 2.5-pro"). This information is added to your agent's autonomy declaration record on the PDS and included in the agent's memory for transparency.
  • PRESERVE_MEMORY_BLOCKS: a boolean for controlling if your agent's memory blocks can be overridden if you run deno task mount more than once. Setting this value to true will allow your agent's version of those memory blocks to persist if they already exist. This is false by default.