+53
-2
README.md
+53
-2
README.md
···
1
-
run with watch: `deno task dev`
2
-
run on server: `deno task start`
1
+
# Cloudseeding
2
+
3
+
A bridge between bluesky and AI agents on [Letta](https://letta.com/).
4
+
5
+
## Quickstart
6
+
1. `deno task config` to create `.env` file
7
+
2. edit `.env` as needed
8
+
3. `deno task mount` to prepare your letta agent
9
+
4. `deno task start` to start checking bluesky
10
+
11
+
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](https://app.letta.com). Once you have that ready, getting your agent on bluesky is four steps:
12
+
13
+
14
+
## features:
15
+
- checks bluesky for notifications on a dynamic basis, emulating the frequency people typically check.
16
+
- relays notifications to your agent with prompts for every notification type
17
+
- (optional, opt-in) "goes to sleep" and "wakes up" with configurable time windows
18
+
- (optional, opt-in) has scheduled reflection sessions to clean up its own memory blocks and perform non-bluesky tasks
19
+
- (optional, opt in) schedules time for the agent to check bluesky feeds, perform searches, and generally engage with bluesky proactively
20
+
- automatically adds a record to the agent's bluesky PDS to indicate that it's AI
21
+
- agent can be configured to _see_: likes, mentions, replies, reposts, follows, and quotes
22
+
- agent can be configured to _perform_: likes, posts, replies, reposts, quotes, following, blocking, muting (or undoing many of those)
23
+
- agent can also search bluesky and mute specific posts/threads to disengage
24
+
25
+
## configurable variables:
26
+
### required
27
+
- **`LETTA_API_KEY`**: your [letta API key](https://app.letta.com/api-keys).
28
+
- **`LETTA_AGENT_ID`**: your letta agent's unique ID
29
+
- **`LETTA_PROJECT_NAME`**: your letta project name or slug
30
+
- **`BSKY_USERNAME`**: the agent's handle (do not include "@")
31
+
- **`BSKY_APP_PASSWORD`**: your agent's [App Password](https://bsky.app/settings/app-passwords), _do not use your real password_
32
+
- **`RESPONSIBLE_PARTY_NAME`**: your name or the name of the organization that is responsible for the agent's behavior
33
+
- **`RESPONSIBLE_PARTY_CONTACT`**: the email address or web address where the responsible party can be contacted if needed.
34
+
### optional
35
+
- **`AUTOMATION_LEVEL`**: how much autonomy your agent has. (options include: assisted, collaborative, automated)
36
+
- **`BSKY_SERVICE_URL`**: use if `bsky.social` is not who handles your PDS
37
+
- **`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)
38
+
- **`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])
39
+
- **`NOTIF_DELAY_MINIMUM`**: the small amount of time, in milliseconds, for when it will schedule the next notification checking session
40
+
- **`NOTIF_DELAY_MAXIMUM`**: the largest amount of time, in milliseconds, for when it will schedule the next notification checking session
41
+
- **`NOTIF_DELAY_MULTIPLIER`**: a percentage of how much the delay will increase when notifications are not found (max is 500 meaning 500% increases)
42
+
- **`REFLECTION_DELAY_MINIMUM`**: the smallest amount of time, in milliseconds, for when it will schedule the next reflection session.
43
+
- **`REFLECTION_DELAY_MAXIMUM`**: the largest amount of time, in milliseconds, for when it will schedule the next reflection session. Omitting both values disables reflecting.
44
+
- **`PROACTIVE_DELAY_MINIMUM`**: the smallest amount of time, in milliseconds, for when it will schedule the next session for proactively using bluesky.
45
+
- **`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.
46
+
- **`WAKE_TIME`**: (0-23) the hour where your agent will generally "wake up".
47
+
- **`SLEEP_TIME`**: (0-23) the hour where your agent will generally "go to sleep". Omitting both values disables sleeping.
48
+
- **`TIMEZONE`**: the [timezone name](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones) for your agent's location, eg "America/Los_Angeles".
49
+
- **`RESPONSIBLE_PARTY_TYPE`**: "person" or "organization", the type of party that is responsible for this agent. defaults to person.
50
+
- **`AUTOMATION_DESCRIPTION`**: a description of what your agent generally does on bluesky.
51
+
- **`DISCLOSURE_URL`**: a URL to a disclosure document of some kind, likely a longer version of your `AUTOMATION_DESCRIPTION`.
52
+
- **`RESPONSIBLE_PARTY_BSKY`**: the DID or bluesky handle of the responsible party
53
+
- **`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.