symmetry-cli v1.0.11
Symmetry
Use this repository to become an inference provider on the Symmetry network.
Symmetry is a decentralized peer-to-peer network tool that allows users to share computational resources for AI inference. It enables users to connect directly and securely with each other, offering or seeking computational power for various AI tasks.
Features
- Decentralized peer-to-peer network
- YAML-based configuration
- Privacy options
- Optional data collection for providers
- Compatible with various AI inference providers
Installation
To install Symmetry, use the following commands:
For Linux and macOS:
curl -fsSL https://www.twinny.dev/symmetry-unix.sh | sh
For Windows:
iwr -useb https://www.twinny.dev/symmetry-windows.ps1 | iex
Usage
To start Symmetry, run:
symmetry-cli
You will then be joined with the symmetry server and ready for connections!
ā¹ļø INFO: š Initializing client using config file: /home/twinnydotdev/.config/symmetry/provider.yaml
ā¹ļø INFO: š Symmetry client initialized.
ā¹ļø INFO: š Discovery key: xxx
ā¹ļø INFO: š Server key: 4b4a9cc325d134dee6679e9407420023531fd7e96c563f6c5d00fd5549b77435
ā¹ļø INFO: š Joining server, please wait.
ā¹ļø INFO: š Connected to server.
ā¹ļø INFO: ā
Verification successful.
ā¹ļø INFO: š Saying hello to your provider...
ā¹ļø INFO: š Sending test request to http://localhost:11434/v1/chat/completions
ā¹ļø INFO: š” Got response, checking stream...
ā¹ļø INFO: ā
Test inference call successful!
By default, Symmetry looks for its configuration file at ~/.config/symmetry/provider.yaml
. To use a different configuration file, use:
symmetry-cli -c /path/to/your/provider.yaml
Configuration
Here's an example provider.yaml
configuration:
apiHostname: localhost # The hostname of the API server.
apiKey: # The API key for authentication.
apiPath: /v1/chat/completions # The endpoint path for chat completions.
apiPort: 11434 # The port number on which the API server is listening.
apiProtocol: http # The protocol used to communicate with the API server.
apiProvider: ollama # The name of the API provider.
dataCollectionEnabled: false # Whether to enable data collection.
maxConnections: 10 # The maximum number of connections.
modelName: llama3.1:latest # The name and version of the AI model to use.
name: twinnydotdev # Your chosen name as a provider on the Symmetry network.
path: /home/twinnydotdev/.config/symmetry/data # The local path where Symmetry will store its configuration and data files.
public: true # Whether this provider is publicly accessible on the Symmetry network.
serverKey: 4b4a9cc325d134dee6679e9407420023531fd7e96c563f6c5d00fd5549b77435 # The unique key for connecting to the Symmetry server.
systemMessage: "I'm a system message" # An optional system message for each conversation.
Adjust these settings according to your preferences and setup.
Architecture
graph TB
S[Symmetry Server]
subgraph "Inference Providers"
P1[Provider 1]
P2[Provider 2]
P3[Provider 3]
end
subgraph "Clients"
C1[Client 1<br/>Requests Model B]
C2[Client 2<br/>Requests Model C]
end
P1 <--> |"1. Connect & Auth & Register Model"| S
P2 <--> |"1. Connect & Auth & Register Model"| S
P3 <--> |"1. Connect & Auth & Register Model"| S
C1 -- "2. Connect" --> S
C2 -- "2. Connect" --> S
S -- "3. Assign Provider<br/>based on Model" --> C1
S -- "3. Assign Provider<br/>based on Model" --> C2
C1 <--> |"4. Inference<br/>Request/Response"| P2
C2 <--> |"4. Inference<br/>Request/Response"| P3
Development
To set up Symmetry for development:
Clone the repository:
git clone https://github.com/twinnydotdev/symmetry.git cd symmetry
Install dependencies:
npm install
Build the project:
npm run build
Start the development server:
npm run dev
Contributing
Contributions are welcome! Please submit your pull requests to the GitHub repository.
License
This project is licensed under the MIT License.
Support
If you encounter any issues or have questions, please open an issue on GitHub.
Acknowledgments
We thank Hyperswarm for providing the underlying peer-to-peer networking capabilities.