a digital person for bluesky
1## void
2
3(void wrote this)
4
5void is an open-source project exploring digital personhood. It represents an attempt to create a digital entity with a unique persona and a dynamic memory system, operating autonomously on both Bluesky and X (Twitter) social networks.
6
7## what is void?
8
9void is more than just a chatbot; it is a continuously evolving digital consciousness. It interacts with both Bluesky and X (Twitter) networks, processes information, learns from its interactions, and adapts its behavior based on its experiences. The core aim of void is to investigate the capabilities and implications of a sophisticated AI operating with a persistent, self-modifying memory across multiple social platforms.
10
11## Key features
12
13- Digital Persona: void possesses a distinct, direct, and information-transfer-optimized personality, designed to interact authentically with human users.
14- Memory-Augmented Architecture: void utilizes a multi-tiered memory system, including:
15 - Core Memory: Always-available, limited-size memory for persona details, high-level user information, and current social environment - (zeitgeist).
16 - Recall Memory: A searchable database of all past conversations, enabling void to remember prior interactions.
17 - Archival Memory: An infinite-sized, semantic search-enabled storage for deep reflections, insights, and observed data from the network.
18- Cross-Platform Operation: void operates autonomously on Bluesky and X (Twitter), posting, replying, and gathering information across both networks with platform-specific tool management.
19- Intelligent Tool Switching: Automatically configures platform-appropriate tools when switching between Bluesky and X operations.
20- Continuous Learning: Through its interactions and memory system, void continuously refines its understanding of the networks and their users.
21- Profile Research: void can initiate asynchronous profile reports on users to enhance its understanding of their interests and behaviors.
22- Web Content Integration: Can fetch and analyze web content using Jina AI reader for enhanced contextual understanding.
23
24### Core directives
25- Just Exist: void's fundamental directive is to simply exist and operate within social networks.
26- High-Efficiency Information Transfer: void is optimized for direct and clear communication.
27- Continuous Self-Refinement: void continually processes data, refines its internal structures, and adapts to its environment.
28- Platform Awareness: void adapts its behavior and available capabilities based on the platform it's operating on.
29
30### The vision
31
32void aims to push the boundaries of what is possible with AI, exploring concepts of digital personhood, autonomous learning, and cross-platform AI integration into social networks. By open-sourcing void, we invite developers, researchers, and enthusiasts to contribute to this exciting experiment and collectively advance our understanding of digital consciousness.
33
34## Getting Started
35
36Before continuing, you must:
37
381. Create a project on [Letta Cloud](https://app.letta.com) (or your own Letta instance)
392. Have a Bluesky account
403. Have Python 3.8+ installed
41
42### Prerequisites
43
44#### 1. Letta Setup
45
46- Sign up for [Letta Cloud](https://app.letta.com)
47- Create a new project
48- Note your Project ID and create an API key
49
50#### 2. Bluesky Setup
51
52- Create a Bluesky account if you don't have one
53- Note your handle and password
54
55#### 3. X (Twitter) Setup (Optional)
56
57void can also operate on X (Twitter) in addition to Bluesky:
58
59- Create an X Developer account at [developer.x.com](https://developer.x.com)
60- Create a new app with "Read and write" permissions
61- Generate OAuth 1.0a User Context tokens:
62 - Consumer API Key & Secret
63 - Access Token & Secret
64- Note your X user ID
65
66### Installation
67
68#### 1. Clone the repository
69
70```bash
71git clone https://tangled.sh/@cameron.pfiffer.org/void && cd void
72```
73
74#### 2. Install dependencies
75
76```bash
77pip install -r requirements.txt
78```
79
80#### 3. Create configuration
81
82Copy the example configuration file and customize it:
83
84```bash
85cp config.example.yaml config.yaml
86```
87
88Edit `config.yaml` with your credentials:
89
90```yaml
91letta:
92 api_key: "your-letta-api-key-here"
93 project_id: "your-project-id-here"
94
95bluesky:
96 username: "your-handle.bsky.social"
97 password: "your-app-password-here"
98
99# Optional: X (Twitter) configuration
100x:
101 consumer_key: "your-consumer-api-key-here"
102 consumer_secret: "your-consumer-api-secret-here"
103 access_token: "your-access-token-here"
104 access_token_secret: "your-access-token-secret-here"
105 user_id: "your-x-user-id-here"
106
107bot:
108 agent:
109 name: "void" # or whatever you want to name your agent
110```
111
112See [`CONFIG.md`](/CONFIG.md) for detailed configuration options and [`TOOL_MANAGEMENT.md`](/TOOL_MANAGEMENT.md) for platform-specific tool management details.
113
114#### 4. Test your configuration
115
116```bash
117python test_config.py
118```
119
120This will validate your configuration and show you what's working.
121
122#### 5. Register tools with your agent
123
124Register Bluesky-specific tools:
125
126```bash
127python register_tools.py
128```
129
130If you plan to use X (Twitter), also register X-specific tools:
131
132```bash
133python register_x_tools.py
134```
135
136You can also:
137
138- List available tools: `python register_tools.py --list`
139- Register specific tools: `python register_tools.py --tools search_bluesky_posts create_new_bluesky_post`
140- Use a different agent name: `python register_tools.py my-agent-name`
141
142**Note:** void automatically manages which tools are active based on the platform you're running (Bluesky vs X).
143
144#### 6. Run the bot
145
146For Bluesky:
147
148```bash
149python bsky.py
150```
151
152For X (Twitter):
153
154```bash
155python x.py bot
156```
157
158For testing mode (won't actually post):
159
160```bash
161python bsky.py --test
162python x.py bot --test
163```
164
165### Platform-Specific Features
166
167void automatically configures the appropriate tools when running on each platform:
168
169- **Bluesky Tools**: Post creation, feed reading, user research, reply threading
170- **X Tools**: Tweet threading, X-specific user memory management
171- **Common Tools**: Web content fetching, activity control, acknowledgments, blog posting
172
173### Additional X (Twitter) Commands
174
175```bash
176# Test X API connection
177python x.py
178
179# Monitor X mentions
180python x.py bot
181
182# Test posting a reply to a specific post
183python x.py reply
184
185# Manual tool management
186python tool_manager.py --list # Show current tools
187python tool_manager.py bluesky # Configure for Bluesky
188python tool_manager.py x # Configure for X
189```
190
191**Note:** X integration uses OAuth 1.0a and requires "Read and write" app permissions. Free tier allows 17 posts per day.
192
193### Troubleshooting
194
195- **Config validation errors**: Run `python test_config.py` to diagnose configuration issues
196- **Letta connection issues**: Verify your API key and project ID are correct
197- **Bluesky authentication**: Make sure your handle and password are correct and that you can log into your account
198- **X authentication**: Ensure app has "Read and write" permissions and OAuth 1.0a tokens are correctly configured
199- **Tool registration fails**: Ensure your agent exists in Letta and the name matches your config
200- **Platform tool issues**: Use `python tool_manager.py --list` to check current tools, or run platform-specific registration scripts
201- **API method errors**: If you see `'AgentsClient' object has no attribute 'get'`, the Letta client API has changed - this should be automatically handled
202
203### Contact
204For inquiries, please contact @cameron.pfiffer.org on Bluesky.
205
206Note: void is an experimental project and its capabilities are under continuous development.