{"id":30852451,"url":"https://github.com/magomedcoder/legion","last_synced_at":"2026-02-27T15:13:18.620Z","repository":{"id":309429653,"uuid":"1035942955","full_name":"magomedcoder/legion","owner":"magomedcoder","description":null,"archived":false,"fork":false,"pushed_at":"2025-08-29T08:21:39.000Z","size":532,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-08-29T12:18:51.371Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/magomedcoder.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-08-11T10:25:15.000Z","updated_at":"2025-08-29T08:21:42.000Z","dependencies_parsed_at":"2025-08-29T10:29:43.787Z","dependency_job_id":null,"html_url":"https://github.com/magomedcoder/legion","commit_stats":null,"previous_names":["magomedcoder/legion"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/magomedcoder/legion","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/magomedcoder%2Flegion","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/magomedcoder%2Flegion/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/magomedcoder%2Flegion/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/magomedcoder%2Flegion/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/magomedcoder","download_url":"https://codeload.github.com/magomedcoder/legion/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/magomedcoder%2Flegion/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":274010104,"owners_count":25206764,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-07T02:00:09.463Z","response_time":67,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-09-07T08:05:16.885Z","updated_at":"2026-02-27T15:13:18.613Z","avatar_url":"https://github.com/magomedcoder.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Legion\n\n---\n\n## ⚠️ Предупреждение\n\n**Проект на ранней стадии разработки.**\n\n---\n\n### Клиентское приложение\n\n| Платформа | Версия                                |\n|-----------|---------------------------------------|\n| Linux     | glibc 2.31+ (Ubuntu 20.04+ и аналоги) |\n| Android   | 7.0+                                  |\n| iOS       | 13.0+                                 |\n| macOS     | Catalina 10.15+                       |\n| Windows   | 10+                                   |\n\n---\n\n### Серверная часть\n\n- **Хост:** Linux (Debian, Ubuntu) или Docker\n- **БД:** PostgreSQL 16\n- **Кэш и очереди:** Redis 7+\n- **MinIO** - S3-совместимое хранилище медиа\n- **Раннеры:** видеокарты **NVIDIA** (экспериментально llama.cpp) или **Ollama** по API\n\n---\n\n## Разработка\n\n### Зависимости\n\n- **Go** 1.26+\n- **PostgreSQL** 16+\n- **Redis** 7+\n- **MinIO**\n- **Клиент (Flutter/Dart):**\n    - Flutter 3.24+\n    - Dart SDK ^3.10.7\n- **Protobuf** 30.2+\n- (Опционально) Ollama и llama.cpp и NVIDIA драйверы + CUDA для раннеров\n\nУстановка зависимостей клиента: `cd client-side \u0026\u0026 flutter pub get`.\n\n---\n\n### Конфигурация\n\n### Основной сервер (legion)\n\nКонфигурация загружается из файла, заданного переменной окружения **`LEGION_CONFIG`**.\nПо умолчанию: `./configs/config.yaml`.\n\n**Параметры:**\n\n- `server` - `host`, `port` (адрес и порт сервера, по умолчанию `0.0.0.0:50051`)\n- `postgres` - `host`, `port`, `username`, `password`, `database` (подключение к PostgreSQL)\n- `redis` - `host`, `port`, `auth`, `database` (подключение к Redis для кэша и pub/sub)\n- `jwt` - `access_secret`, `refresh_secret`, `access_ttl`, `refresh_ttl` (секреты и время жизни токенов)\n- `runners` - `registration_token`, `addresses` (токен регистрации и список адресов раннеров)\n- `minio` - `host`, `port`, `ssl`, `secret_id`, `secret_key`, `bucket` (S3-совместимое хранилище медиа)\n- `log` - `level` (уровень логирования: `debug`, `verbose`, `info`, `warn`, `error`, `off`)\n\n### Раннер (legion-runner)\n\nКонфигурация загружается из файла, заданного переменной окружения **`LEGION_RUNNER_CONFIG`**.\nПо умолчанию: `./configs/runner-config.yaml`.\n\n**Параметры:**\n\n- `core_addr` - адрес основного сервера для регистрации (по умолчанию `127.0.0.1:50051`)\n- `listen_addr` - адрес для приёма gRPC-запросов (по умолчанию `127.0.0.1:50052`)\n- `registration_token` - токен для регистрации на сервере\n- `log` - `level` (уровень логирования: `debug`, `verbose`, `info`, `warn`, `error`, `off`)\n- `engine` - движок: `\"ollama\"` или `\"llama\"`\n- `ollama` - `base_url` (URL API Ollama, по умолчанию `http://127.0.0.1:11434`)\n- `llama` - `model_path` (каталог с моделями для llama.cpp)\n\n---\n\n### Сборка, тесты и запуск\n\n#### Сборка\n\n```bash\n# Сборка сервера\nmake build\n# Сборка раннера (Ollama / без GPU)\nmake build-runner\n# Сборка раннера с поддержкой NVIDIA (llama.cpp + CUDA)\nmake build-runner-nvidia\n```\n\n#### Запуск без сборки\n\n```bash\n# Запуск сервера\nmake run\n# Запуск раннера (с тегом nvidia)\nmake run-runner\n# Запуск раннера (с движком llama.cpp)\nmake run-runner-llama\n```\n\n### Генерация кода из Protobuf\n\n```bash\n# Установка protoc плагинов\nmake install\n# Генерация Go и Dart из api/proto/*.proto\nmake gen\n```\n\n### Скачивание исходников llama.cpp и Ollama\n\nКлонирование репозиториев в `third_party/`, сборка библиотеки llama.cpp:\n\n```bash\n# Клонирование llama.cpp и ollama в third_party/\nmake deps\n# Сборка libllama.a (без CUDA)\nmake build-llama\n# Сборка libllama.a с поддержкой NVIDIA (CUDA)\nmake build-llama-cublas\n# Сборка legion-runner с тегом nvidia\nmake build-runner-nvidia\n```\n\n---\n\n#### Тесты\n\n```bash\n# Тесты Go\nmake test\n# Тесты Flutter\nmake client-test\n# Нагрузочные тесты\nmake test-load\n```\n\n---\n\n## Структура репозитория\n\n| Каталог        | Описание                                                                                  |\n|----------------|-------------------------------------------------------------------------------------------|\n| `api/proto/`   | Protobuf-схемы                                                                            |\n| `api/pb/`      | Сгенерированный Go-код из proto (после `make gen`)                                        |\n| `cmd/legion/`  | Точка входа основного сервера                                                             |\n| `cmd/runner/`  | Точка входа сервиса-раннера                                                               |\n| `client-side/` | Flutter-клиент                                                                            |\n| `configs/`     | YAML-шаблоны конфигурации (config.template.yaml, runner-config.template.yaml)             |\n| `internal/`    | domain, delivery (handlers, mappers, middleware), repository, usecase, service, bootstrap |\n| `migrations/`  | SQL-миграции PostgreSQL                                                                   |\n| `pkg/`         | Общие пакеты                                                                              |\n| `runner/`      | Сервис-раннер (llama.cpp, Ollama)                                                         |\n| `scripts/`     | Скрипты сборки (deb, установщик Windows)                                                  |\n| `tests/`       | Нагрузочные тесты                                                                         |\n\n---\n\n## Участие в разработке\n\nПорядок внесения изменений и оформления Pull Request описан в [CONTRIBUTING.md](CONTRIBUTING.md).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmagomedcoder%2Flegion","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmagomedcoder%2Flegion","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmagomedcoder%2Flegion/lists"}