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.