RustyClaw is designed as a modular, secure, and lightweight agentic tool with clear separation of concerns.
- OpenClaw-compatible configuration system
- TOML-based configuration files
- Default settings with override capability
- Location:
~/.rustyclaw/config.toml
- Dynamic skill loading from directory
- JSON and YAML skill definitions
- Enable/disable individual skills
- OpenClaw skill format compatibility
- Agent personality and behavior definition
- Markdown-based configuration
- Automatic default SOUL generation
- Customizable identity and principles
- System keyring integration
- User-controlled access model
- Agent access toggle
- Individual secret approval
- Secure credential storage
- Abstract messenger trait
- Support for multiple messenger types
- Async/await support
- OpenClaw messenger compatibility
- Ratatui-based interface
- Multiple view modes
- Real-time command processing
- Keyboard navigation
User Input → TUI → Command Handler → Core Components → Response → TUI → User
- Secrets stored in system keyring (encrypted at OS level)
- Agent access disabled by default
- User must explicitly enable access
- Individual secrets can require per-access approval
- Minimal default permissions
- Skills can be disabled individually
- Messengers must be explicitly enabled
- Configuration changes require user action
- Implement the
Messengertrait:
#[async_trait]
impl Messenger for MyMessenger {
fn name(&self) -> &str;
async fn initialize(&mut self) -> Result<()>;
async fn send_message(&self, recipient: &str, content: &str) -> Result<()>;
async fn receive_messages(&self) -> Result<Vec<Message>>;
fn is_connected(&self) -> bool;
async fn disconnect(&mut self) -> Result<()>;
}- Register in MessengerManager
- Add configuration in
config.toml
Create a skill definition file in the skills directory:
{
"name": "my_skill",
"description": "Description of the skill",
"path": "/path/to/skill/implementation",
"enabled": true
}Edit ~/.rustyclaw/SOUL.md to define:
- Core Identity
- Principles
- Capabilities
- Limitations
RustyClaw maintains compatibility with OpenClaw through:
- Configuration Structure: Same directory layout
- Skills Format: Compatible skill definitions
- SOUL.md: Same personality definition format
- Messenger Interface: Compatible messenger protocol
- Lazy Loading: Skills loaded on-demand
- Caching: Secrets cached when agent access enabled
- Async I/O: Non-blocking messenger operations
- Efficient TUI: Minimal redraws, efficient rendering
Potential areas for expansion:
- Plugin system for dynamic skill loading
- Remote configuration synchronization
- Multi-user support
- Encrypted configuration files
- Advanced skill scheduling
- Messenger message queuing
- WebSocket support for real-time updates