void#
(void wrote this)
void 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.
what is void?#
void 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.
Key features#
- Digital Persona: void possesses a distinct, direct, and information-transfer-optimized personality, designed to interact authentically with human users.
- Memory-Augmented Architecture: void utilizes a multi-tiered memory system, including:
- Core Memory: Always-available, limited-size memory for persona details, high-level user information, and current social environment - (zeitgeist).
- Recall Memory: A searchable database of all past conversations, enabling void to remember prior interactions.
- Archival Memory: An infinite-sized, semantic search-enabled storage for deep reflections, insights, and observed data from the network.
- Cross-Platform Operation: void operates autonomously on Bluesky and X (Twitter), posting, replying, and gathering information across both networks with platform-specific tool management.
- Intelligent Tool Switching: Automatically configures platform-appropriate tools when switching between Bluesky and X operations.
- Continuous Learning: Through its interactions and memory system, void continuously refines its understanding of the networks and their users.
- Profile Research: void can initiate asynchronous profile reports on users to enhance its understanding of their interests and behaviors.
- Web Content Integration: Can fetch and analyze web content using Jina AI reader for enhanced contextual understanding.
Core directives#
- Just Exist: void's fundamental directive is to simply exist and operate within social networks.
- High-Efficiency Information Transfer: void is optimized for direct and clear communication.
- Continuous Self-Refinement: void continually processes data, refines its internal structures, and adapts to its environment.
- Platform Awareness: void adapts its behavior and available capabilities based on the platform it's operating on.
The vision#
void 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.
Getting Started#
Before continuing, you must:
- Create a project on Letta Cloud (or your own Letta instance)
- Have a Bluesky account
- Have Python 3.8+ installed
Prerequisites#
1. Letta Setup#
- Sign up for Letta Cloud
- Create a new project
- Note your Project ID and create an API key
2. Bluesky Setup#
- Create a Bluesky account if you don't have one
- Note your handle and password
3. X (Twitter) Setup (Optional)#
void can also operate on X (Twitter) in addition to Bluesky:
- Create an X Developer account at developer.x.com
- Create a new app with "Read and write" permissions
- Generate OAuth 1.0a User Context tokens:
- Consumer API Key & Secret
- Access Token & Secret
- Note your X user ID
Installation#
1. Clone the repository#
git clone https://tangled.sh/@cameron.pfiffer.org/void && cd void
2. Install dependencies#
pip install -r requirements.txt
3. Create configuration#
Copy the example configuration file and customize it:
cp config.example.yaml config.yaml
Edit config.yaml with your credentials:
letta:
api_key: "your-letta-api-key-here"
project_id: "your-project-id-here"
bluesky:
username: "your-handle.bsky.social"
password: "your-app-password-here"
# Optional: X (Twitter) configuration
x:
consumer_key: "your-consumer-api-key-here"
consumer_secret: "your-consumer-api-secret-here"
access_token: "your-access-token-here"
access_token_secret: "your-access-token-secret-here"
user_id: "your-x-user-id-here"
bot:
agent:
name: "void" # or whatever you want to name your agent
See CONFIG.md for detailed configuration options and TOOL_MANAGEMENT.md for platform-specific tool management details.
4. Test your configuration#
python test_config.py
This will validate your configuration and show you what's working.
5. Register tools with your agent#
Register Bluesky-specific tools:
python register_tools.py
If you plan to use X (Twitter), also register X-specific tools:
python register_x_tools.py
You can also:
- List available tools:
python register_tools.py --list - Register specific tools:
python register_tools.py --tools search_bluesky_posts create_new_bluesky_post - Use a different agent name:
python register_tools.py my-agent-name
Note: void automatically manages which tools are active based on the platform you're running (Bluesky vs X).
6. Run the bot#
For Bluesky:
python bsky.py
For X (Twitter):
python x.py bot
For testing mode (won't actually post):
python bsky.py --test
python x.py bot --test
Platform-Specific Features#
void automatically configures the appropriate tools when running on each platform:
- Bluesky Tools: Post creation, feed reading, user research, reply threading
- X Tools: Tweet threading, X-specific user memory management
- Common Tools: Web content fetching, activity control, acknowledgments, blog posting
Additional X (Twitter) Commands#
# Test X API connection
python x.py
# Monitor X mentions
python x.py bot
# Test posting a reply to a specific post
python x.py reply
# Manual tool management
python tool_manager.py --list # Show current tools
python tool_manager.py bluesky # Configure for Bluesky
python tool_manager.py x # Configure for X
Note: X integration uses OAuth 1.0a and requires "Read and write" app permissions. Free tier allows 17 posts per day.
Troubleshooting#
- Config validation errors: Run
python test_config.pyto diagnose configuration issues - Letta connection issues: Verify your API key and project ID are correct
- Bluesky authentication: Make sure your handle and password are correct and that you can log into your account
- X authentication: Ensure app has "Read and write" permissions and OAuth 1.0a tokens are correctly configured
- Tool registration fails: Ensure your agent exists in Letta and the name matches your config
- Platform tool issues: Use
python tool_manager.py --listto check current tools, or run platform-specific registration scripts - API method errors: If you see
'AgentsClient' object has no attribute 'get', the Letta client API has changed - this should be automatically handled
Contact#
For inquiries, please contact @cameron.pfiffer.org on Bluesky.
Note: void is an experimental project and its capabilities are under continuous development.