PitchHut logo
Empower your machine with customizable AI conversations.
Pitch

Symbio transforms interactions with your machine, allowing intuitive conversations via a local CLI. Users can easily save notes, run commands, and fine-tune AI models on-the-fly. It’s a flexible tool that personalizes computing, making complex tasks straightforward and accessible.

Description

Symbio is an innovative project designed to empower users through seamless interaction with their machines. This flexible system adapts to commands, continually learning and evolving based on user input.

Core Features

  • Local CLI Chat: Engage with Symbio directly through a local command-line interface, making communication straightforward and efficient.
  • Markdown Notes: Capture facts and notes effortlessly by saving them as markdown files in the notes/ directory for easy organization and access.
  • File Management: Read, write, search, and modify files within the project directory, enhancing data manipulation capabilities.
  • Sandboxed Commands: Execute commands securely in a controlled environment, allowing for temporary shell command execution and Python code snippets.
  • Email Interaction: Check and manage emails using IMAP/SMTP, enabling comprehensive communication features.
  • Dynamic Learning: Transform notes into actionable training data to fine-tune a LoRA adapter on the fly, improving system responsiveness.
  • Structured Data Storage: Every interaction is recorded in JSONL and SQLite format, ensuring that conversations are preserved for future reference.

Quick Start Example

To get started with Symbio, follow this example command sequence:

# Create a virtual environment and install dependencies
python -m venv venv
source venv/bin/activate
pip install -r requirements.txt

# Start chatting
python main.py

Upon the first run, users will be prompted to input their names, which are saved in the config.json file for personalized interaction.

Configuration Options

The configuration file allows users to customize various aspects of the interaction:

KeyDefaultDescription
model_namemlx-community/Qwen2.5-3B-Instruct-4bitDefines the base MLX model
assistant_nameSymbioName for the assistant
user_name(initial input)User's name
agent.max_turns5Maximum tool rounds per user turn
agent.temperature0.1Sets the deterministic sampling temperature
lora.dropout0.1Helps in reducing overfitting
lora.scale5.0Adjusts the scale for the LoRA adapter
lora.iters50Sets the iterations for LoRA training
learn.boost_factor3Configures the correction sample copies in training data

Slash Commands

Initiate various functions swiftly through user-friendly slash commands:

CommandDescription
/quitExit chat
/saveSave ongoing conversation to training data
/trainExecute LoRA fine-tuning and reload the adapter
/learnLearn from the last correction (auto-learn is enabled by default)
/note [title]Create a new markdown note

Learning from Corrections

Symbio automatically tracks and learns from user corrections, saving them as markdown notes in the notes/mistakes/ directory. This feature enhances the system's learning capabilities while allowing users to retain control over training processes.

Architecture Structure

The project is structured as a Python package, facilitating easy access to the main components:

.
├── main.py
├── symbio/
│   ├── __init__.py
│   ├── constants.py
│   ├── utils.py
│   ├── config.py
│   ├── store.py
│   ├── sandbox.py
│   ├── computer.py
│   ├── tools.py
│   ├── llm.py
│   ├── learn.py
│   ├── chat.py
│   └── agent.py
└── notes/

This modular architecture ensures easy adaptation and integration of new features, fostering an environment for ongoing development and user engagement.

Roadmap for Future Enhancements

Volunteers interested in contributing can focus on essential areas, such as:

  1. CUDA Port: Expand compatibility beyond Apple Silicon.
  2. Backend Expansion: Introduce llama.cpp support for better model handling.
  3. Optimization: Refine LoRA performance and memory management.
  4. Refactoring: Improve code structure and maintainability.

Explore the CONTRIBUTING.md for more information on how to get involved.

0 comments

No comments yet.

Sign in to be the first to comment.