Skip to main content

Twin Share - Environment Manager - narzędzie do dzielenia się środowiskami Embedded/AI/VM

Project description

share

Podsumowanie projektu AI Environment Manager

kompleksowe rozwiązanie do zarządzania, udostępniania i klonowania środowisk AI w sieci lokalnej. Poniżej przedstawiam kluczowe dokumenty i wytyczne dla dalszego rozwoju projektu.

Główne dokumenty

  1. Architektura systemu - Szczegółowa architektura systemu, opis komponentów i ich interakcji
  2. Podręcznik użytkownika - Kompletna instrukcja obsługi dla użytkowników końcowych
  3. Przewodnik testowania - Metodologia i scenariusze testowe dla deweloperów
  4. Instalacja i konfiguracja - Szczegółowe instrukcje instalacji i konfiguracji na różnych platformach
  5. Prompty dla dalszego rozwoju - Gotowe prompty do generowania kolejnych modułów systemu
  6. REST API Guide - Kompletna dokumentacja REST API

Kluczowe moduły zaimplementowane

  1. P2P Discovery - Moduł automatycznego wykrywania węzłów w sieci lokalnej
  2. Core Workspace - Podstawowy model danych dla workspace'ów, projektów i środowisk
  3. REST API Server - Pełne REST API do zarządzania systemem, VM i P2P
  4. REST API Client - Biblioteka kliencka do integracji z API

Unikalne cechy rozwiązania

  1. Architektura P2P - System działa w modelu peer-to-peer bez centralnego serwera
  2. Federacja węzłów - Możliwość rozproszenia obciążeń między wieloma maszynami
  3. Wieloplatformowość - Wsparcie dla różnych systemów operacyjnych i środowisk wykonawczych
  4. One-Click Deployment - Możliwość sklonowania środowiska jednym kliknięciem
  5. Automatyczna adaptacja - Dostosowanie do dostępnych zasobów sprzętowych
  6. REST API - Pełne REST API do integracji z zewnętrznymi systemami

Instalacja

Instalacja bezpośrednio z PyPI

Najłatwiejszym sposobem instalacji jest użycie pip do zainstalowania pakietu bezpośrednio z PyPI:

pip install twinshare

Po instalacji, komenda twinshare będzie dostępna bezpośrednio w terminalu:

# Sprawdź dostępne komendy
twinshare --help

# Zarządzanie maszynami wirtualnymi
twinshare vm list

# Zarządzanie siecią P2P
twinshare p2p discover

# Zarządzanie serwerem REST API
twinshare api start --host 0.0.0.0 --port 8000  # Uruchamia serwer REST API
twinshare api start --daemon                    # Uruchamia serwer w tle
twinshare api status                            # Sprawdza status serwera
twinshare api stop                              # Zatrzymuje serwer REST API

# Zarządzanie przestrzeniami roboczymi
twinshare workspace list

Komenda twinshare jest dostępna natychmiast po instalacji, bez potrzeby konfiguracji dodatkowych skryptów czy zmiennych środowiskowych.

Instalacja na nowym systemie z repozytorium

Aby zainstalować twinshare z repozytorium, użyj dedykowanego skryptu install_package.sh:

# Sklonuj repozytorium
git clone https://github.com/safetytwin/share.git
cd share

# Uruchom skrypt instalacyjny
./install_package.sh

Skrypt przeprowadzi Cię przez proces instalacji, oferując instalację w środowisku wirtualnym lub systemową.

Automatyczna instalacja

Użyj skryptu instalacyjnego, który zainstaluje wszystkie wymagane zależności i skonfiguruje usługi:

# Pełna instalacja
./install.sh

# Instalacja z pominięciem zależności systemowych
./install.sh --skip-system-deps

# Instalacja z pominięciem usługi systemowej
./install.sh --skip-service-install

# Instalacja w trybie nieinteraktywnym
./install.sh --non-interactive

Ręczna instalacja

  1. Zainstaluj wymagane zależności systemowe:
# Ubuntu/Debian
sudo apt-get update
sudo apt-get install -y python3 python3-pip python3-venv libvirt-dev pkg-config \
    libvirt-daemon libvirt-daemon-system qemu-kvm bridge-utils virtinst \
    libvirt-clients build-essential python3-dev

# Fedora/CentOS/RHEL
sudo dnf update -y
sudo dnf install -y python3 python3-pip python3-virtualenv libvirt-devel \
    pkgconfig libvirt libvirt-daemon-kvm qemu-kvm bridge-utils \
    virt-install libvirt-client gcc python3-devel
  1. Utwórz i aktywuj wirtualne środowisko Python:
python3 -m venv venv
source venv/bin/activate
  1. Zainstaluj zależności Pythona:
pip install -e .

Rozwiązywanie problemów z CLI

Jeśli po instalacji komenda twinshare nie jest dostępna:

  1. Sprawdź, czy skrypt instalacyjny zakończył się sukcesem
  2. Sprawdź, czy symlink został utworzony: which twinshare
  3. Jeśli używasz środowiska wirtualnego, upewnij się, że jest aktywowane: source venv/bin/activate
  4. Spróbuj uruchomić CLI bezpośrednio: python3 -m src.cli.main --help
  5. Możesz również użyć skryptu w katalogu bin: ./bin/twinshare --help

Uruchomienie REST API

Jako usługa systemowa

  1. Zainstaluj usługę:
# Utwórz katalogi dla logów i PID
sudo mkdir -p /var/log/twinshare /var/run/twinshare

# Skopiuj plik usługi
sudo cp scripts/twinshare-rest-api.service /etc/systemd/system/

# Załaduj konfigurację systemd
sudo systemctl daemon-reload

# Włącz usługę do autostartu
sudo systemctl enable twinshare-rest-api

# Uruchom usługę
sudo systemctl start twinshare-rest-api

# Sprawdź status
sudo systemctl status twinshare-rest-api

Ręczne uruchomienie

# Uruchom w trybie foreground
python scripts/start_rest_api.py start --foreground

# Uruchom jako daemon
python scripts/start_rest_api.py start

# Sprawdź status
python scripts/start_rest_api.py status

# Zatrzymaj
python scripts/start_rest_api.py stop

Przykłady użycia REST API

Zobacz przykłady użycia REST API oraz dokumentację REST API.

Kolejne kroki

  1. Implementacja modułów wykonawczych (Runtime) - Użyj promptu dla modułów VM, Container i Process
  2. Rozwój interfejsu webowego - Stwórz nowoczesny UI w React z komunikacją przez WebSocket
  3. Implementacja modułu Repository i Transfer - Dokończ implementację mechanizmów udostępniania
  4. Testy - Stwórz komplet testów jednostkowych i integracyjnych
  5. Dokumentacja użytkownika - Uzupełnij dokumentację o więcej przykładów i przypadków użycia

To rozwiązanie, inspirowane systemami takimi jak LocalAI z funkcjami P2P, Codezero i integracja Conda z JuiceFS, zapewnia bezproblemowe zarządzanie środowiskami AI w zespołach deweloperskich, pozwalając na natychmiastowe rozpoczęcie pracy bez skomplikowanej konfiguracji środowiska.

Specyfikacja funkcjonalna: AI Environment Manager

1. Cel systemu

Stworzenie rozwiązania umożliwiającego proste udostępnianie i klonowanie gotowych środowisk programistycznych dla projektów AI między komputerami w sieci lokalnej. System zapewnia natychmiastowy dostęp do skonfigurowanych narzędzi i projektów bez konieczności ręcznej konfiguracji.

2. Główne funkcjonalności

2.1. Automatyczne wykrywanie i udostępnianie

  • Automatyczne wykrywanie hostów w sieci lokalnej udostępniających środowiska AI
  • Rozgłaszanie dostępnych środowisk w sieci lokalnej (zero-configuration networking)
  • Przeglądanie dostępnych środowisk z poziomu interfejsu przeglądarki
  • Filtrowanie i wyszukiwanie środowisk według typów, narzędzi i języków

2.2. Zarządzanie środowiskami

  • Tworzenie, edycja i usuwanie workspace'ów z projektami AI
  • Włączanie/wyłączanie udostępniania workspace'ów dla innych użytkowników
  • Eksportowanie i importowanie workspace'ów
  • Automatyczne przydzielanie zasobów (CPU, RAM, dysk) dla środowisk

2.3. Klonowanie środowisk

  • Jednym kliknięciem pobranie wybranego środowiska z innego komputera w sieci
  • Automatyczna konfiguracja pobranego środowiska
  • Adaptacja środowiska do zasobów lokalnego komputera
  • Automatyczne uruchamianie środowiska po pobraniu

2.4. Dostęp do środowisk

  • Dostęp przez przeglądarkę do wszystkich narzędzi w środowisku
  • Automatyczne logowanie do narzędzi (VSCode, JupyterLab, Le Chat)
  • Zintegrowany terminal dostępny z poziomu interfejsu www
  • Automatyczne uruchamianie środowisk przy starcie systemu

2.5. Integracja z projektami

  • Automatyczne klonowanie repozytoriów git podczas pobierania środowiska
  • Automatyczna konfiguracja środowiska na podstawie plików konfiguracyjnych projektu
  • Synchronizacja zmian między projektami w różnych workspace'ach
  • Integracja z narzędziami CI/CD

3. Komponenty systemu

3.1. Moduł wykrywania (Discovery)

  • Protokół rozgłaszania dostępnych środowisk w sieci lokalnej
  • Mechanizm automatycznego wykrywania hostów w sieci
  • Protokół pobierania metadanych o dostępnych środowiskach
  • Wykrywanie dostępnych zasobów na komputerze

3.2. Moduł udostępniania (Sharing)

  • Serwer HTTP do udostępniania plików
  • Kompresja i szyfrowanie przesyłanych danych
  • Mechanizm autoryzacji dostępu do środowisk
  • System kolejkowania równoczesnych transferów

3.3. Moduł zarządzania (Management)

  • Tworzenie i konfiguracja workspace'ów
  • Zarządzanie projektami w workspace'ach
  • Zarządzanie środowiskami (VM, kontenery, procesy lokalne)
  • System przydzielania zasobów sprzętowych

3.4. Interfejs webowy (Web UI)

  • Panel dostępny przez przeglądarkę
  • Intuicyjny interfejs one-click-deployment
  • Dashboard z przeglądem środowisk
  • Zarządzanie procesem pobierania i udostępniania

4. Wymagania techniczne

4.1. Wymagania sprzętowe (minimum)

  • CPU: 2 rdzenie
  • RAM: 4 GB
  • Dysk: 20 GB wolnego miejsca
  • Sieć: Dostęp do sieci lokalnej

4.2. Wymagania sprzętowe (zalecane)

  • CPU: 8+ rdzeni
  • RAM: 16+ GB
  • Dysk: 100+ GB wolnego miejsca (najlepiej SSD)
  • Sieć: Gigabit Ethernet

4.3. Wymagania programowe

  • Python 3.8+
  • Zależności systemowe: libvirt/QEMU, Docker/Podman (opcjonalnie)
  • Przeglądarka internetowa: Chrome, Firefox, Edge (najnowsze wersje)

5. Interakcje użytkownika

5.1. Udostępnianie środowiska

  1. Użytkownik uruchamia aplikację na swoim komputerze
  2. Wybiera workspace do udostępnienia
  3. Klika przycisk "Udostępnij"
  4. System automatycznie rozgłasza dostępność środowiska w sieci

5.2. Pobieranie środowiska

  1. Użytkownik uruchamia aplikację na swoim komputerze
  2. Przegląda listę dostępnych środowisk w sieci
  3. Wybiera interesujące go środowisko
  4. Klika przycisk "Pobierz"
  5. System automatycznie pobiera, konfiguruje i uruchamia środowisko

5.3. Uruchamianie środowiska

  1. Użytkownik wybiera pobrany workspace
  2. Klika przycisk "Uruchom"
  3. System uruchamia wszystkie komponenty środowiska
  4. Użytkownik otrzymuje linki do dostępu przez przeglądarkę

6. Protokoły i formaty danych

6.1. Protokół wykrywania

  • Multicast UDP na porcie 37777
  • Format danych: Skompresowany JSON z informacjami o hoście i dostępnych środowiskach
  • Interwał rozgłaszania: 10 sekund

6.2. Protokół udostępniania

  • HTTP/REST API na porcie 37778
  • Format danych: JSON dla metadanych, ZIP dla transferu środowisk
  • Autoryzacja: Podstawowa autoryzacja nagłówków HTTP

6.3. Format workspace'u

  • Katalog z plikami YAML zawierającymi konfigurację
  • Podkatalogi dla projektów, środowisk i danych
  • Wersjonowanie konfiguracji
  • Skrypty inicjalizacyjne dla różnych platform

7. Bezpieczeństwo

  • Ograniczenie udostępniania tylko do sieci lokalnej
  • Opcjonalne szyfrowanie transferów
  • Walidacja integralności pobranych danych
  • Sandbox dla uruchamianych środowisk

8. Rozszerzalność

  • Plugin API dla dodawania nowych typów środowisk
  • Wsparcie dla skryptów niestandardowych
  • Możliwość dodawania własnych szablonów środowisk
  • Integracja z dodatkowymi narzędziami AI

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

twinshare-0.1.33.tar.gz (77.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

twinshare-0.1.33-py3-none-any.whl (87.1 kB view details)

Uploaded Python 3

File details

Details for the file twinshare-0.1.33.tar.gz.

File metadata

  • Download URL: twinshare-0.1.33.tar.gz
  • Upload date:
  • Size: 77.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for twinshare-0.1.33.tar.gz
Algorithm Hash digest
SHA256 bf6b46e68b7de69a6b0dc5d2f648f2537f01436e64901c4ad020a7a91bcb089c
MD5 31ca44bee1abc0dd77e45b1d53f77a62
BLAKE2b-256 5f583c809940e3a9545a1b4150764de04810a6507093cc68d088c5cae18ab21e

See more details on using hashes here.

File details

Details for the file twinshare-0.1.33-py3-none-any.whl.

File metadata

  • Download URL: twinshare-0.1.33-py3-none-any.whl
  • Upload date:
  • Size: 87.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for twinshare-0.1.33-py3-none-any.whl
Algorithm Hash digest
SHA256 aeb836ef1a9a42a454ebe96920cb29c99b8007749a48df3abae1e39834f2c34b
MD5 e582764699c21130a9e15b7379f23e14
BLAKE2b-256 ebd87ff1c9e497f62c5a01f829223061ae302641161e8fe0f16807a9c6b7be3b

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page