diff --git a/api/Readme.md b/api/Readme.md new file mode 100644 index 00000000..14e8cfd3 --- /dev/null +++ b/api/Readme.md @@ -0,0 +1,21 @@ + + + +`sudo bash ./install.sh` + +to redo all the steps remove the lock files + +`rm ${ROOT}/opt/swarms/install/* ` + +or in my system: +``` +export ROOT=/mnt/data1/swarms +sudo rm ${ROOT}/opt/swarms/install/* +``` + +rerun +``` +export ROOT=/mnt/data1/swarms; +sudo rm ${ROOT}/opt/swarms/install/*; +sudo bash ./install.sh +``` diff --git a/api/agent_api_test.py b/api/agent_api_test.py index f95e08d1..3afe8aac 100644 --- a/api/agent_api_test.py +++ b/api/agent_api_test.py @@ -1,11 +1,22 @@ +import os +import time + import requests from loguru import logger + import time from typing import Dict, Optional, Tuple from uuid import UUID -BASE_URL = "http://0.0.0.0:8000/v1" +# # Configure loguru +# logger.add( +# "api_tests_{time}.log", +# rotation="100 MB", +# level="DEBUG", +# format="{time} {level} {message}", +# ) +BASE_URL = os.getenv("SWARMS_URL","http://localhost:8000/v1") def check_api_server() -> bool: """Check if the API server is running and accessible.""" diff --git a/api/boot.sh b/api/boot.sh new file mode 100644 index 00000000..4c56ae2a --- /dev/null +++ b/api/boot.sh @@ -0,0 +1,32 @@ +#!/bin/bash + +# to be run as swarms user +set -e +set -x +export ROOT="/mnt/data1/swarms" +export HOME="${ROOT}/home/swarms" +unset CONDA_EXE +unset CONDA_PYTHON_EXE +export PATH="${ROOT}/var/swarms/agent_workspace/.venv/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" + +if [ ! -f "${ROOT}/var/swarms/agent_workspace/.venv/" ]; +then + virtualenv "${ROOT}/var/swarms/agent_workspace/.venv/" +fi +ls "${ROOT}/var/swarms/agent_workspace/" +. "${ROOT}/var/swarms/agent_workspace/.venv/bin/activate" + +pip install fastapi uvicorn termcolor +# these are tried to be installed by the app on boot +pip install sniffio pydantic-core httpcore exceptiongroup annotated-types pydantic anyio httpx ollama +pip install -e "${ROOT}/opt/swarms/" +cd "${ROOT}/var/swarms/" +pip install -e "${ROOT}/opt/swarms-memory" +pip install "fastapi[standard]" +pip install "loguru" +pip install pydantic==2.8.2 + + +# pip freeze +# launch as systemd +# python /opt/swarms/api/main.py diff --git a/api/install.sh b/api/install.sh new file mode 100644 index 00000000..cd0b10c2 --- /dev/null +++ b/api/install.sh @@ -0,0 +1,152 @@ +#!/bin/bash +# review and improve +. ./.env # for secrets +set -e # stop on any error +set -x + +export ROOT="/mnt/data1/swarms" +export WORKSOURCE="${ROOT}/opt/swarms/api" + +if [ ! -d "${ROOT}/opt/swarms/install/" ]; then + mkdir -p "${ROOT}/opt/swarms/install" +fi + +if [ ! -f "${ROOT}/opt/swarms/install/apt.txt" ]; then + sudo apt update + sudo apt install --allow-change-held-packages -y git virtualenv + echo 1 >"${ROOT}/opt/swarms/install/apt.txt" +fi + +if [ ! -f "${ROOT}/opt/swarms/install/setup.txt" ]; then + #rm -rf ./src/swarms # oops + adduser swarms --home "${ROOT}/home/swarms" || echo ignore + git config --global --add safe.directory "${ROOT}/opt/swarms" + git config --global --add safe.directory "${ROOT}/opt/swarms-memory" + # we should have done this + if [ ! -d "${ROOT}/opt/swarms/" ]; + then + git clone https://github.com/jmikedupont2/swarms "${ROOT}/opt/swarms/" + fi + pushd "${ROOT}/opt/swarms/" || exit 1 # "we need swarms" + git remote add local /time/2024/05/swarms/ || git remote set-url local /time/2024/05/swarms/ + git fetch local + git checkout feature/ec2 # switch branches + git pull local feature/ec2 + popd || exit 2 + if [ ! -d "${ROOT}/opt/swarms-memory/" ]; + then + git clone https://github.com/The-Swarm-Corporation/swarms-memory "${ROOT}/opt/swarms-memory" + fi + # where the swarms will run + mkdir -p "${ROOT}/var/swarms/agent_workspace/" + mkdir -p "${ROOT}/home/swarms" + chown -R swarms:swarms "${ROOT}/var/swarms/agent_workspace" "${ROOT}/home/swarms" + + # now for my local setup I aslo need to do this or we have to change the systemctl home var + #mkdir -p "/home/swarms" + #chown -R swarms:swarms "/home/swarms" + + # copy the run file from git + cp "${WORKSOURCE}/boot.sh" "${ROOT}/var/swarms/agent_workspace/boot.sh" + mkdir -p "${ROOT}/var/swarms/logs" + chmod +x "${ROOT}/var/swarms/agent_workspace/boot.sh" + chown -R swarms:swarms "${ROOT}/var/swarms/" "${ROOT}/home/swarms" "${ROOT}/opt/swarms" + + echo 1 >"${ROOT}/opt/swarms/install/setup.txt" +fi + +if [ ! -f "${ROOT}/opt/swarms/install/boot.txt" ]; then + # user install but do not start + su -c "bash -e -x ${ROOT}/var/swarms/agent_workspace/boot.sh" swarms + echo 1 >"${ROOT}/opt/swarms/install/boot.txt" +fi + + +## pull + +if [ ! -f "${ROOT}/opt/swarms/install/pull.txt" ]; then + pushd "${ROOT}/opt/swarms/" || exit 1 # "we need swarms" + git fetch local + git checkout feature/ec2 # switch branches + git pull local feature/ec2 + popd || exit 2 + #echo 1 >"${ROOT}/opt/swarms/install/pull.txt" +fi + + +if [ ! -f "${ROOT}/opt/swarms/install/config.txt" ]; then + #WorkingDirectory=ROOT/var/run/swarms/ + # create the secrets + mkdir -p "${ROOT}/var/run/swarms/secrets/" + echo "OPENAI_KEY=${OPENAI_KEY}" > "${ROOT}/var/run/swarms/secrets/env" + + # cache + mkdir -p "${ROOT}/home/swarms/.cache/huggingface/hub" + + ## append new homedir + echo "TRANSFORMERS_CACHE=${ROOT}/home/swarms/.cache/huggingface/hub" >> "${ROOT}/var/run/swarms/secrets/env" + echo "HOME=${ROOT}/home/swarms" >> "${ROOT}/var/run/swarms/secrets/env" + #EnvironmentFile=ROOT/var/run/swarms/secrets/env + #ExecStart=ROOT/var/run/uvicorn/env/bin/uvicorn \ + # --uds ROOT/run/uvicorn/uvicorn-swarms-api.sock \ + echo 1 >"${ROOT}/opt/swarms/install/config.txt" +fi + +# if [ ! -f "${ROOT}/opt/swarms/install/uvicorn.txt" ]; then +# # we create a second installation of unicorn so agents cannot mess it up. +# mkdir -p "${ROOT}/var/run/uvicorn/env/" +# if [ ! -f "${ROOT}/var/run/uvicorn/env/" ]; +# then +# virtualenv "${ROOT}/var/run/uvicorn/env/" +# fi +# . "${ROOT}/var/run/uvicorn/env/bin/activate" +# pip install uvicorn +# echo 1 >"${ROOT}/opt/swarms/install/uvicorn.txt" +# fi + +if [ ! -f "${ROOT}/opt/swarms/install/nginx.txt" ]; then + mkdir -p ${ROOT}/var/log/nginx/swarms/ +fi +# reconfigure +# now we setup the service and replace root in the files + +#echo cat "${WORKSOURCE}/nginx/site.conf" \| sed -e "s!ROOT!${ROOT}!g" +cat "${WORKSOURCE}/nginx/site.conf"| sed -e "s!ROOT!${ROOT}!g" > /etc/nginx/sites-enabled/default +#cat /etc/nginx/sites-enabled/default + +# create sock +mkdir -p ${ROOT}/run/uvicorn/ +chown -R swarms:swarms ${ROOT}/run/uvicorn + +# ROOT/var/run/swarms/uvicorn-swarms-api.sock; +# access_log ROOT/var/log/nginx/swarms/access.log; +# error_log ROOT/var/log/nginx/swarms/error.log; +#echo cat "${WORKSOURCE}/systemd/uvicorn.service" \| sed -e "s!ROOT!/${ROOT}/!g" +cat "${WORKSOURCE}/systemd/uvicorn.service" | sed -e "s!ROOT!${ROOT}!g" > /etc/systemd/system/swarms-uvicorn.service + + +# if [ -f ${ROOT}/etc/systemd/system/swarms-uvicorn.service ]; +# then +# cp ${ROOT}/etc/systemd/system/swarms-uvicorn.service /etc/systemd/system/swarms-uvicorn.service +# else +# # allow for editing as non root +# mkdir -p ${ROOT}/etc/systemd/system/ +# cp /etc/systemd/system/swarms-uvicorn.service ${ROOT}/etc/systemd/system/swarms-uvicorn.service +# fi + +# +#chown -R mdupont:mdupont ${ROOT}/etc/systemd/system/ +#/run/uvicorn/ +# triage +chown -R swarms:swarms ${ROOT}/var/run/swarms/ + + +#cat /etc/systemd/system/swarms-uvicorn.service +# always reload +systemctl daemon-reload +# systemctl start swarms-uvicorn || systemctl status swarms-uvicorn.service && journalctl -xeu swarms-uvicorn.service +systemctl start swarms-uvicorn || journalctl -xeu swarms-uvicorn.service +# systemctl status swarms-uvicorn.service +# journalctl -xeu swarms-uvicorn.service +systemctl enable swarms-uvicorn || journalctl -xeu swarms-uvicorn.service +service nginx restart diff --git a/api/logger.yaml b/api/logger.yaml new file mode 100644 index 00000000..e69de29b diff --git a/api/main.py b/api/main.py index 5d0c178e..fa61e475 100644 --- a/api/main.py +++ b/api/main.py @@ -1,5 +1,6 @@ import os import secrets +import sys import traceback from concurrent.futures import ThreadPoolExecutor from datetime import datetime, timedelta @@ -10,25 +11,29 @@ from uuid import UUID, uuid4 import uvicorn from dotenv import load_dotenv -from fastapi import ( - BackgroundTasks, - Depends, - FastAPI, - Header, - HTTPException, - Query, - Request, - status, -) +from fastapi import (BackgroundTasks, Depends, FastAPI, Header, HTTPException, + Query, Request, status) from fastapi.middleware.cors import CORSMiddleware from loguru import logger from pydantic import BaseModel, Field from swarms.structs.agent import Agent + +#print("starting") # Load environment variables load_dotenv() +# # Configure Loguru +# logger.add( +# "logs/api_{time}.log", +# rotation="500 MB", +# retention="10 days", +# level="TRACE", +# format="{time} {level} {message}", +# backtrace=True, +# diagnose=True, +# ) class AgentStatus(str, Enum): """Enum for agent status.""" @@ -843,20 +848,23 @@ def create_app() -> FastAPI: logger.info("FastAPI application created successfully") return app - app = create_app() -if __name__ == "__main__": - try: - logger.info("Starting API server...") - print("Starting API server on http://0.0.0.0:8000") +if __name__ == '__main__': + # freeze_support() + #print("yes in main") + # Configure uvicorn logging + logger.info("API Starting") + + uvicorn.run( + "main:create_app", + host="0.0.0.0", + port=8000, + log_level="TRACE", + workers=1, + # reload=True, + ) +else: + #print("not in main") + pass - uvicorn.run( - app, # Pass the app instance directly - host="0.0.0.0", - port=8000, - log_level="info", - ) - except Exception as e: - logger.error(f"Failed to start API: {str(e)}") - print(f"Error starting server: {str(e)}") diff --git a/api/nginx/myserver b/api/nginx/myserver new file mode 100644 index 00000000..cc342d1a --- /dev/null +++ b/api/nginx/myserver @@ -0,0 +1,100 @@ +## +# You should look at the following URL's in order to grasp a solid understanding +# of Nginx configuration files in order to fully unleash the power of Nginx. +# https://www.nginx.com/resources/wiki/start/ +# https://www.nginx.com/resources/wiki/start/topics/tutorials/config_pitfalls/ +# https://wiki.debian.org/Nginx/DirectoryStructure +# +# In most cases, administrators will remove this file from sites-enabled/ and +# leave it as reference inside of sites-available where it will continue to be +# updated by the nginx packaging team. +# +# This file will automatically load configuration files provided by other +# applications, such as Drupal or Wordpress. These applications will be made +# available underneath a path with that package name, such as /drupal8. +# +# Please see /usr/share/doc/nginx-doc/examples/ for more detailed examples. +## + +# Default server configuration +# +server { + listen 80 default_server; + listen [::]:80 default_server; + + # SSL configuration + # + # listen 443 ssl default_server; + # listen [::]:443 ssl default_server; + # + # Note: You should disable gzip for SSL traffic. + # See: https://bugs.debian.org/773332 + # + # Read up on ssl_ciphers to ensure a secure configuration. + # See: https://bugs.debian.org/765782 + # + # Self signed certs generated by the ssl-cert package + # Don't use them in a production server! + # + # include snippets/snakeoil.conf; + + root /var/www/html; + + # Add index.php to the list if you are using PHP + index index.html index.htm index.nginx-debian.html; + + server_name _; + + location / { + # First attempt to serve request as file, then + # as directory, then fall back to displaying a 404. + # try_files $uri $uri/ =404; + autoindex on; + } + location /swarms { + proxy_pass http://unix:/var/run/swarms/uvicorn-swarms-api.sock; + } + +# location /agentartificial { +# autoindex on; +# disable_symlinks off; +# } + + # pass PHP scripts to FastCGI server + # + #location ~ \.php$ { + # include snippets/fastcgi-php.conf; + # + # # With php-fpm (or other unix sockets): + # fastcgi_pass unix:/run/php/php7.4-fpm.sock; + # # With php-cgi (or other tcp sockets): + # fastcgi_pass 127.0.0.1:9000; + #} + + # deny access to .htaccess files, if Apache's document root + # concurs with nginx's one + # + #location ~ /\.ht { + # deny all; + #} +} + + +# Virtual Host configuration for example.com +# +# You can move that to a different file under sites-available/ and symlink that +# to sites-enabled/ to enable it. +# +#server { +# listen 80; +# listen [::]:80; +# +# server_name example.com; +# +# root /var/www/example.com; +# index index.html; +# +# location / { +# try_files $uri $uri/ =404; +# } +#} diff --git a/api/nginx/site.conf b/api/nginx/site.conf new file mode 100644 index 00000000..1e40f0fb --- /dev/null +++ b/api/nginx/site.conf @@ -0,0 +1,14 @@ +# from https://github.com/neamaddin/debian-fastapi-server +server { + listen [::]:80; + listen 80; + server_name swarms; + access_log ROOT/var/log/nginx/swarms/access.log; + error_log ROOT/var/log/nginx/swarms/error.log; + add_header X-Content-Type-Options "nosniff" always; + add_header X-XSS-Protection "1; mode=block" always; + + location / { + proxy_pass http://unix:ROOT/var/run/swarms/uvicorn-swarms-api.sock; + } +} diff --git a/api/systemd/uvicorn.service b/api/systemd/uvicorn.service new file mode 100644 index 00000000..9fb4feb6 --- /dev/null +++ b/api/systemd/uvicorn.service @@ -0,0 +1,31 @@ +# from https://github.com/encode/uvicorn/issues/678 +[Unit] +Description=swarms +After=network.target + +[Service] +Type=simple +User=swarms +Group=swarms +DynamicUser=true +WorkingDirectory=ROOT/opt/swarms/api/ +PrivateTmp=true +EnvironmentFile=ROOT/var/run/swarms/secrets/env + +# for debugging use +#ExecStart=/usr/bin/unbuffer ROOT/var/run/uvicorn/env/bin/uvicorn \ + +ExecStart=ROOT/var/run/uvicorn/env/bin/uvicorn \ + --proxy-headers \ + --forwarded-allow-ips='*' \ + --workers=4 \ + --port=54748 \ + --no-access-log \ + --uds ROOT/run/uvicorn/uvicorn-swarms-api.sock \ + _.asgi:application +ExecReload=/bin/kill -HUP ${MAINPID} +RestartSec=1 +Restart=always + +[Install] +WantedBy=multi-user.target \ No newline at end of file diff --git a/api/test.sh b/api/test.sh new file mode 100644 index 00000000..599e7be0 --- /dev/null +++ b/api/test.sh @@ -0,0 +1,18 @@ + +#/mnt/data1/swarms/var/run/uvicorn/env/bin/uvicorn +# --no-access-log \ + +#python -m pdb +#/mnt/data1/swarms/var/swarms/agent_workspace/.venv/bin/uvicorn \ + +. /mnt/data1/swarms/var/swarms/agent_workspace/.venv/bin/activate +/mnt/data1/swarms/var/swarms/agent_workspace/.venv/bin/python3 ~mdupont/2024/05/swarms/api/uvicorn_runner.py \ + --proxy-headers \ + --port=54748 \ + --forwarded-allow-ips='*' \ + --workers=1 \ + --log-level=debug \ + --uds /mnt/data1/swarms/run/uvicorn/uvicorn-swarms-api.sock \ + main:app + +# _.asgi:application diff --git a/api/test2.sh b/api/test2.sh new file mode 100644 index 00000000..2435b5ee --- /dev/null +++ b/api/test2.sh @@ -0,0 +1,9 @@ + +#/mnt/data1/swarms/var/run/uvicorn/env/bin/uvicorn +# --no-access-log \ + +#python -m pdb +#/mnt/data1/swarms/var/swarms/agent_workspace/.venv/bin/uvicorn \ + +. /mnt/data1/swarms/var/swarms/agent_workspace/.venv/bin/activate +/mnt/data1/swarms/var/swarms/agent_workspace/.venv/bin/python3 ~mdupont/2024/05/swarms/api/uvicorn_runner.py diff --git a/api/uvicorn_runner.py b/api/uvicorn_runner.py new file mode 100644 index 00000000..e3f61c06 --- /dev/null +++ b/api/uvicorn_runner.py @@ -0,0 +1,54 @@ +#!/mnt/data1/swarms/var/swarms/agent_workspace/.venv/bin/python +# -*- coding: utf-8 -*- +import re +import sys +import pdb +import logging +for logger_name in logging.root.manager.loggerDict.keys(): + print(logger_name) + override_logger = logging.getLogger(logger_name) +for handler in override_logger.handlers: + print(handler) + handler.setFormatter(formatter) + +# from uvicorn.main import main +# if __name__ == '__main__': +# sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0]) + +# try: +# print("main") +# pdb.set_trace() +# ret = main() +# print(ret) +# except Exception as e: +# print(e) + + #// sys.exit(main()) +import sys +import uvicorn +from uvicorn.config import LOGGING_CONFIG + +def main(): + #root_path = '' + #if len(sys.argv) >= 2: + # root_path = sys.argv[1] + ## + # %(name)s : uvicorn, uvicorn.error, ... . Not insightful at all. + LOGGING_CONFIG["formatters"]["access"]["fmt"] = '%(asctime)s %(levelprefix)s %(client_addr)s - "%(request_line)s" %(status_code)s' + LOGGING_CONFIG["formatters"]["default"]["fmt"] = "%(asctime)s %(levelprefix)s %(message)s" + + date_fmt = "%Y-%m-%d %H:%M:%S" + LOGGING_CONFIG["formatters"]["default"]["datefmt"] = date_fmt + LOGGING_CONFIG["formatters"]["access"]["datefmt"] = date_fmt + ## + uvicorn.run( + "main:app", + host="127.0.0.1", + port=7230, + log_level="trace", + proxy_headers=True, + forwarded_allow_ips='*', + workers=1, + uds="/mnt/data1/swarms/run/uvicorn/uvicorn-swarms-api.sock") + # root_path=root_path +main() diff --git a/pip.freeze b/pip.freeze new file mode 100644 index 00000000..075a351b --- /dev/null +++ b/pip.freeze @@ -0,0 +1,739 @@ +absl-py==2.1.0 +accelerate==1.0.1 +-e git+https://github.com/gventuri/pandas-ai/@5c84fd37065c7de806701e5e7b99df298e93b4f6#egg=ai_ticket&subdirectory=../../../../../../../time/2023/09/24/ai-ticket +aiofiles==23.2.1 +aiohttp==3.9.5 +aiohttp-cors==0.7.0 +aiosignal==1.3.1 +alabaster==0.7.12 +albucore==0.0.20 +albumentations==1.4.21 +alectryon==1.4.0 +aliyun-python-sdk-core==2.15.1 +aliyun-python-sdk-kms==2.16.3 +annotated-types==0.7.0 +ansible==6.7.0 +ansible-base==2.10.8 +ansible-core==2.13.13 +ansible-vault==2.1.0 +antlr4-python3-runtime==4.9.3 +anyio==4.3.0 +apache-libcloud==3.2.0 +apispec==6.8.0 +APScheduler==3.10.4 +apturl==0.5.2 +argcomplete==1.8.1 +argo-workflows==3.6.1 +asciidoc==10.2.1 +asciinema==2.1.0 +asgiref==3.8.1 +astroid==2.9.3 +async-timeout==4.0.3 +asyncio==3.4.3 +attr==0.3.2 +attrdict==2.0.1 +attrs==23.2.0 +autoflake==2.3.1 +autogluon==1.1.1 +autogluon.common==1.1.1 +autogluon.core==1.1.1 +autogluon.features==1.1.1 +autogluon.multimodal==1.1.1 +autogluon.tabular==1.1.1 +autogluon.timeseries==1.1.1 +Automat==24.8.1 +autopep8==1.6.0 +aws-cdk-lib==2.116.0 +aws-cdk.asset-awscli-v1==2.2.213 +aws-cdk.asset-kubectl-v20==2.1.3 +aws-cdk.asset-node-proxy-agent-v6==2.1.0 +aws-sam-translator==1.89.0 +aws-shell==0.2.2 +awscli==1.32.85 +Babel==2.8.0 +backoff==2.2.1 +base58==2.1.1 +bcrypt==4.1.2 +beautifulsoup4==4.12.3 +begins==0.9 +bidict==0.23.1 +binaryornot==0.4.3 +bitsandbytes==0.43.3 +bittensor==7.2.0 +-e git+https://github.com/opentensor/bittensor-subnet-template@7622775e0a267a564959c8690108f9152e123522#egg=bittensor_subnet_template&subdirectory=../../../../../../../time/2024/06/07/bittensor-subnet-template +black==23.7.0 +blake3==1.0.0 +blessed==1.20.0 +blessings==1.7 +blinker==1.7.0 +blis==0.7.11 +boto3==1.34.85 +botocore==1.34.85 +build==1.2.1 +CacheControl==0.14.0 +cachetools==5.3.3 +catalogue==2.0.10 +catboost==1.2.5 +catfish==4.16.3 +cattrs==23.2.3 +-e git+https://github.com/Agent-Artificial/cellium-client@ee4df8906a43c2e408b1ad3cf27f84816a51a58d#egg=cellium&subdirectory=../../../../../../../../../../home/mdupont/2024/05/31/cellium-client +certifi==2024.2.2 +cffi==1.15.0 +cfgv==3.4.0 +cfn-lint==0.87.7 +chardet==4.0.0 +charset-normalizer==2.1.1 +chroma-hnswlib==0.7.5 +-e git+https://github.com/chroma-core/chroma@28b37392594dd7ba60e35c53f098d7f88a9d3988#egg=chromadb&subdirectory=../../../../../../../time/2024/07/21/chroma +cleo==2.1.0 +cliapp==1.20180812.1 +click==8.1.7 +clip-anytorch==2.6.0 +cloudpathlib==0.18.1 +cloudpickle==3.0.0 +clusterops==0.1.2 +cmdtest==0.32+git +colorama==0.4.6 +coloredlogs==15.0.1 +colorful==0.5.6 +comm==0.2.2 +command-not-found==0.3 +commonmark==0.9.1 +communex==0.1.27.3 +compel==2.0.2 +confection==0.1.5 +ConfigArgParse==1.7 +configobj==5.0.8 +constantly==23.10.4 +constructs==10.4.2 +contourpy==1.2.1 +controlnet_aux==0.0.7 +cookiecutter==1.7.3 +cpufeature==0.2.1 +crashtest==0.4.1 +crcmod==1.7 +cryptography==42.0.5 +cssselect==1.2.0 +cupshelpers==1.0 +cycler==0.12.1 +cymem==2.0.8 +Cython==0.29.28 +cytoolz==0.12.3 +daiquiri==3.2.5.1 +dashscope==1.20.13 +dataclasses-json==0.6.6 +datasets==2.17.1 +dbus-python==1.2.18 +ddt==1.6.0 +debugpy==1.8.2 +defer==1.0.6 +delegator.py==0.1.1 +Deprecated==1.2.14 +devscripts===2.22.1ubuntu1 +dictdiffer==0.9.0 +diffusers==0.31.0 +Dijkstar==2.6.0 +dill==0.3.8 +dirtyjson==1.0.8 +distlib==0.3.8 +distro==1.7.0 +distro-info===1.1build1 +dnspython==2.1.0 +doc-master==0.0.2 +docker==7.1.0 +docker-compose==1.29.2 +docker-pycreds==0.4.0 +docopt==0.6.2 +docstring_parser==0.16 +docutils==0.16 +dominate==2.9.1 +dulwich==0.21.7 +dynamicprompts==0.31.0 +ecdsa==0.19.0 +einops==0.8.0 +email_validator==2.1.1 +-e git+https://github.com/meta-introspector/https-lablab.ai-event-audiocraft-24-hours-hackathon/@ef86774c7e61855044ca0c97dbcb988d18570984#egg=emojintrospector +eth-hash==0.7.0 +eth-keys==0.5.1 +eth-typing==4.2.3 +eth-utils==2.2.2 +eval_type_backport==0.2.0 +evaluate==0.4.0 +exceptiongroup==1.2.0 +extruct==0.17.0 +facexlib==0.3.0 +fastai==2.7.15 +fastapi==0.111.0 +fastapi-cli==0.0.4 +fastapi-events==0.11.1 +fastapi-sso==0.10.0 +fastcore==1.5.55 +fastdownload==0.0.7 +fastjsonschema==2.20.0 +fastprogress==1.0.3 +ffmpy==0.4.0 +filelock==3.14.0 +filterpy==1.4.5 +flake8==4.0.1 +Flask==3.0.3 +Flask-Cors==4.0.1 +flask-sock==0.7.0 +flatbuffers==24.3.25 +fonttools==4.55.0 +frozenlist==1.4.1 +fsspec==2023.10.0 +ftfy==6.3.1 +future==1.0.0 +fuzzywuzzy==0.18.0 +gdown==5.2.0 +gevent==24.2.1 +gguf==0.10.0 +git-remote-codecommit==1.17 +gitdb==4.0.11 +github==1.2.7 +github-action-utils==1.1.0 +github3.py==4.0.1 +GitPython==3.1.42 +gluonts==0.15.1 +google-api-core==2.19.1 +google-auth==2.29.0 +googleapis-common-protos==1.63.2 +gpg===1.16.0-unknown +gpustat==0.6.0 +GPUtil==1.4.0 +gql==3.5.0 +gradio==4.44.0 +gradio_client==1.3.0 +graphql-core==3.2.3 +graphviz==0.20.3 +greenlet==3.0.3 +grpcio==1.62.1 +grpcio-tools==1.62.1 +gunicorn==22.0.0 +h11==0.14.0 +-e git+https://github.com/Agent-Artificial/hivemind@941933de3378f1cd8a5b4fa053a3eb33253ab8ed#egg=hivemind&subdirectory=../../../vendor/hivemind +html5lib==1.1 +html5lib-modern==1.2 +html_text==0.6.2 +httpcore==1.0.4 +httplib2==0.20.2 +httptools==0.6.1 +httpx==0.27.0 +huggingface-hub==0.26.1 +humanfriendly==10.0 +hyperlink==21.0.0 +hyperopt==0.2.7 +identify==2.6.3 +idna==3.4 +ijson==3.3.0 +imageio==2.34.2 +imagesize==1.3.0 +img2pdf==0.4.2 +importlib_metadata==7.1.0 +importlib_resources==6.4.0 +incremental==24.7.2 +iniconfig==2.0.0 +installer==0.7.0 +intervaltree==3.1.0 +invisible-watermark==0.2.0 +-e git+https://github.com/invoke-ai/InvokeAI@ebd73a2ac22ed4f06271b3c4850740cf84ab136a#egg=InvokeAI&subdirectory=../../../../../../../time/2024/11/30/InvokeAI +ipykernel==6.29.5 +ipympl==0.9.4 +ipywidgets==8.1.5 +isodate==0.6.1 +isort==5.13.2 +itemadapter==0.9.0 +itemloaders==1.3.2 +itsdangerous==2.1.2 +jaraco.classes==3.4.0 +jax==0.4.31 +jaxlib==0.4.31 +jeepney==0.7.1 +Jinja2==3.1.3 +jinja2-time==0.2.0 +jmespath==0.10.0 +joblib==1.3.2 +jschema-to-python==1.2.3 +jsii==1.105.0 +json-schema-generator==0.3 +json5==0.9.28 +jsonformatter==0.3.2 +jsonlines==4.0.0 +jsonpatch==1.33 +jsonpickle==3.2.1 +jsonpointer==2.4 +jsonschema==4.23.0 +jsonschema-specifications==2023.12.1 +jstyleson==0.0.2 +junit-xml==1.9 +jupyter==1.0.0 +jupyter-console==6.6.3 +jupyter_core==5.7.2 +jupyterlab_widgets==3.0.13 +kaggle==1.6.17 +keylimiter==0.1.5 +keyring==24.3.1 +kiwisolver==1.4.7 +kubernetes==30.1.0 +langchain==0.1.13 +langchain-community==0.0.29 +langchain-core==0.1.52 +langchain-experimental==0.0.55 +langchain-text-splitters==0.0.2 +langcodes==3.4.0 +langsmith==0.1.67 +language-selector==0.1 +language_data==1.2.0 +lark-parser==0.12.0 +launchpadlib==1.10.16 +lazr.restfulclient==0.14.4 +lazr.uri==1.0.6 +lazy-object-proxy==0.0.0 +lazy_loader==0.4 +libcst==1.4.0 +lightdm-gtk-greeter-settings==1.2.2 +lightgbm==4.3.0 +lightning==2.3.3 +lightning-utilities==0.11.6 +lion-pytorch==0.2.2 +-e git+https://github.com/Agent-Artificial/litellm@3b2f04c8cb1a42fe5db8bcbf62d2e41a3a72f52a#egg=litellm&subdirectory=../../../vendor/litellm +livereload==2.6.3 +llvmlite==0.43.0 +lockfile==0.12.2 +logilab-common==1.8.2 +loguru==0.7.2 +lsprotocol==2023.0.1 +lxml==4.8.0 +lxml_html_clean==0.3.0 +Mako==1.1.3 +marisa-trie==1.2.0 +Markdown==3.3.6 +markdown-it-py==3.0.0 +MarkupSafe==2.1.5 +marshmallow==3.21.2 +matplotlib==3.9.3 +mccabe==0.6.1 +mdurl==0.1.2 +mediapipe==0.10.14 +menulibre==2.2.2 +mercurial==6.1.1 +mf2py==2.0.1 +mkdocs==1.1.2 +ml-dtypes==0.4.0 +mlforecast==0.10.0 +mmh3==4.1.0 +mock==5.1.0 +model-index==0.1.11 +modelscope_studio==0.5.0 +monotonic==1.6 +more-itertools==8.10.0 +morphys==1.0 +mpmath==1.3.0 +msgpack==1.0.8 +msgpack-numpy-opentensor==0.5.0 +mugshot==0.4.3 +multiaddr==0.0.9 +multidict==6.0.5 +multiprocess==0.70.16 +munch==2.5.0 +murmurhash==1.0.10 +mypy-extensions==1.0.0 +mypy-protobuf==3.6.0 +netaddr==0.8.0 +netifaces==0.11.0 +networkx==3.2.1 +ninja==1.11.1.1 +nlpaug==1.1.11 +nltk==3.8.1 +nodeenv==1.9.1 +nptyping==2.4.1 +npyscreen==4.10.5 +ntlm-auth==1.4.0 +numba==0.60.0 +numpy==1.26.4 +nvidia-cublas-cu12==12.1.3.1 +nvidia-cuda-cupti-cu12==12.1.105 +nvidia-cuda-nvrtc-cu12==12.1.105 +nvidia-cuda-runtime-cu12==12.1.105 +nvidia-cudnn-cu12==8.9.2.26 +nvidia-cufft-cu12==11.0.2.54 +nvidia-curand-cu12==10.3.2.106 +nvidia-cusolver-cu12==11.4.5.107 +nvidia-cusparse-cu12==12.1.0.106 +nvidia-ml-py==12.560.30 +nvidia-ml-py3==7.352.0 +nvidia-nccl-cu12==2.20.5 +nvidia-nvjitlink-cu12==12.3.101 +nvidia-nvtx-cu12==12.1.105 +oauthlib==3.2.2 +ocrmypdf==13.4.0+dfsg +olefile==0.46 +omegaconf==2.2.3 +onboard==1.4.1 +onnx==1.16.1 +onnxruntime==1.19.2 +openai==1.30.5 +-e git+https://github.com/peterdemin/openai-cli@3af6c0eb6272ca4c3b79aca3220252dba324e20c#egg=openai_cli&subdirectory=../../../../../../../time/2024/05/31/openai-cli +opencensus==0.11.4 +opencensus-context==0.1.3 +opencv-contrib-python==4.10.0.84 +opencv-python==4.9.0.80 +opencv-python-headless==4.9.0.80 +opendatalab==0.0.10 +openmim==0.3.9 +openshift==0.11.0 +opentelemetry-api==1.25.0 +opentelemetry-exporter-otlp-proto-common==1.25.0 +opentelemetry-exporter-otlp-proto-grpc==1.25.0 +opentelemetry-instrumentation==0.46b0 +opentelemetry-instrumentation-asgi==0.46b0 +opentelemetry-instrumentation-fastapi==0.46b0 +opentelemetry-proto==1.25.0 +opentelemetry-sdk==1.25.0 +opentelemetry-semantic-conventions==0.46b0 +opentelemetry-util-http==0.46b0 +openxlab==0.1.1 +opt-einsum==3.3.0 +optimum==1.18.1 +ordered-set==4.1.0 +orjson==3.10.3 +oss2==2.17.0 +overrides==7.7.0 +packaging==23.2 +pandas==2.2.2 +paramiko==3.4.0 +parsel==1.9.1 +password-strength==0.0.3.post2 +pathspec==0.12.1 +pathtools==0.1.2 +patsy==0.5.6 +pbr==6.0.0 +pdf2image==1.17.0 +pdfminer.six===-VERSION- +peft==0.4.0 +pendulum==3.0.0 +pep8==1.7.1 +-e git+https://github.com/tbarbette/perf-class@19f8299fb8a2cff33189e77c4547acf3a20f2a8b#egg=perf_class&subdirectory=../../../../../../../time/2024/07/05/perf-class +petals @ git+https://github.com/bigscience-workshop/petals@d2fcbbc72e02b88cc34f2da8b3ae7de2873204a9 +pexpect==4.8.0 +picklescan==0.0.18 +pikepdf==5.0.1+dfsg +pillow==10.3.0 +pipdeptree==2.21.0 +pipenv==11.9.0 +pipx==1.0.0 +pkginfo==1.11.1 +platformdirs==4.2.2 +playwright==1.46.0 +plotly==5.23.0 +pluggy==1.5.0 +ply==3.11 +poetry==1.8.4 +poetry-core==1.9.1 +poetry-plugin-export==1.8.0 +posthog==3.5.0 +pre_commit==4.0.1 +prefetch-generator==1.0.3 +preshed==3.0.9 +prettytable==3.12.0 +prometheus_client==0.21.1 +prompt_toolkit==3.0.47 +Protego==0.3.1 +proto-plus==1.24.0 +protobuf==4.25.3 +psutil==5.9.0 +ptyprocess==0.7.0 +publication==0.0.3 +PuLP==2.9.0 +py-bip39-bindings==0.1.11 +py-cid==0.3.0 +py-ed25519-zebra-bindings==1.0.1 +py-multibase==1.0.3 +py-multicodec==0.2.1 +py-multihash==0.2.3 +py-spy==0.3.14 +py-sr25519-bindings==0.2.0 +py4j==0.10.9.7 +pyarrow==15.0.0 +pyarrow-hotfix==0.6 +pyasn1==0.6.0 +pyasn1_modules==0.4.0 +pycairo==1.20.1 +pycodestyle==2.8.0 +pycparser==2.21 +pycryptodome==3.20.0 +pycryptodomex==3.11.0 +pycups==2.0.1 +pycurl==7.44.1 +pydantic==2.8.2 +pydantic-settings==2.2.1 +pydantic_core==2.20.1 +PyDispatcher==2.0.7 +pydot==3.0.1 +pydub==0.25.1 +pyee==11.1.0 +pyelftools==0.31 +pyflakes==3.2.0 +pygame==2.1.2 +PyGithub==1.59.1 +pygls==1.3.1 +Pygments==2.17.2 +PyGObject==3.42.1 +pyinotify==0.9.6 +PyJWT==2.8.0 +pykerberos==1.1.14 +pylint==2.12.2 +pymacaroons==0.13.0 +Pympler==1.1 +-e git+https://github.com/ivilata/pymultihash@215298fa2faa55027384d1f22519229d0918cfb0#egg=pymultihash&subdirectory=../../../../../../../time/2024/04/17/pymultihash +PyNaCl==1.5.0 +pynvml==12.0.0 +pyOpenSSL==24.2.1 +pyparsing==3.1.1 +PyPatchMatch==1.0.1 +pypdf==5.1.0 +pyperclip==1.9.0 +PyPika==0.48.9 +pyproject_hooks==1.1.0 +pyRdfa3==3.6.4 +pyre==1.12.5 +pyre-check==0.9.21 +pyre-extensions==0.0.30 +pyreadline3==3.5.4 +pyroute2==0.post0 +pyroute2.core==0.post0 +pyroute2.ethtool==0.post0 +pyroute2.ipdb==0.post0 +pyroute2.ipset==0.post0 +pyroute2.ndb==0.post0 +pyroute2.nftables==0.post0 +pyroute2.nslink==0.post0 +pyroute2.protocols==0.post0 +PySimpleSOAP==1.16.2 +PySocks==1.7.1 +pytesseract==0.3.10 +pytest==8.2.2 +pytest-asyncio==0.23.7 +python-apt==2.4.0 +python-baseconv==1.2.2 +python-dateutil==2.8.2 +python-debian===0.1.43ubuntu1 +python-debianbts==3.2.0 +python-docx==1.1.2 +python-dotenv==1.0.1 +python-engineio==4.10.1 +python-json-logger==2.0.7 +python-Levenshtein==0.12.2 +python-magic==0.4.24 +python-multipart==0.0.9 +python-slugify==4.0.0 +python-socketio==5.11.1 +python-statemachine==2.1.2 +python-string-utils==1.0.0 +pytorch-lightning==2.1.3 +pytorch-metric-learning==2.3.0 +pytz==2023.4 +PyWavelets==1.6.0 +pywinrm==0.3.0 +pyxattr==0.7.2 +pyxdg==0.27 +PyYAML==6.0.1 +pyzmq==26.0.3 +qtconsole==5.5.2 +QtPy==2.4.1 +queuelib==1.7.0 +-e git+https://github.com/QwenLM/Qwen-Agent.git@3db6738f5603e6215b4c39db59d390e694b7087f#egg=qwen_agent&subdirectory=../../../../../../../time/2024/11/25/Qwen-Agent +rapidfuzz==3.9.3 +ratelimit==2.2.1 +ray==2.10.0 +-e git+https://github.com/RDFLib/rdflib@0b69f4f5f49aa2ea1caf23bbee20c7166625a4bd#egg=rdflib&subdirectory=../../../../../../../time/2024/05/26/rdflib +Recoll==1.31.6 +recollchm==0.8.4.1+git +recommonmark==0.6.0 +redis==5.0.6 +referencing==0.35.1 +regex==2023.12.25 +reportbug===11.4.1ubuntu1 +reportlab==3.6.8 +requests==2.32.3 +requests-file==2.1.0 +requests-kerberos==0.12.0 +requests-ntlm==1.1.0 +requests-oauthlib==2.0.0 +requests-toolbelt==1.0.0 +resolvelib==0.8.1 +responses==0.18.0 +retry==0.9.2 +rfc5424-logging-handler==1.4.3 +rich==13.4.2 +roku==4.1.0 +-e git+https://github.com/ncmiller/roku-cli.git@6990df804840fbc69d892a47bc655b15ed425e28#egg=rokucli&subdirectory=../../../../../../../time/2024/10/21/roku-cli +roman==3.3 +rpds-py==0.18.1 +rq==1.16.2 +rsa==4.7.2 +ruamel.yaml==0.18.6 +ruamel.yaml.clib==0.2.12 +ruff==0.4.4 +-e git+https://github.com/run-house/runhouse@96f0daf81b3f7c8116dcc3c2350e6abd05c917bd#egg=runhouse&subdirectory=../../../../../../../time/2024/12/06/runhouse +s3transfer==0.10.1 +safetensors==0.4.3 +sarif-om==1.0.4 +scalecodec==1.2.7 +scikit-image==0.20.0 +scikit-learn==1.4.0 +scipy==1.12.0 +scour==0.38.2 +Scrapy==2.11.2 +screen-resolution-extra==0.0.0 +SecretStorage==3.3.1 +selinux==3.3 +semantic-version==2.10.0 +semver==3.0.2 +sentencepiece==0.2.0 +sentry-sdk==1.40.6 +seqeval==1.2.2 +service-identity==24.1.0 +setproctitle==1.3.3 +sgt-launcher==0.2.7 +shellingham==1.5.4 +shtab==1.6.5 +simple-websocket==1.0.0 +simplejson==3.19.2 +simsimd==6.2.1 +six==1.16.0 +skypilot @ file:///mnt/data1/nix/time/2024/07/11/skypilot +smart-open==7.0.4 +smmap==5.0.1 +sniffio==1.3.1 +snowballstemmer==2.2.0 +sortedcontainers==2.4.0 +sounddevice==0.5.1 +soupsieve==2.3.1 +spacy==3.7.5 +spacy-legacy==3.0.12 +spacy-loggers==1.0.5 +spandrel==0.3.4 +speedtest-cli==2.1.3 +Sphinx==4.3.2 +sphinx-rtd-theme==1.0.0 +SQLAlchemy==2.0.30 +srsly==2.4.8 +ssh-import-id==5.11 +starlette==0.37.2 +-e git+https://github.com/maguowei/starred@f1ae04d5ee11952ad2ede1b8e9b679f347126cea#egg=starred&subdirectory=../../../../../../../time/2024/07/18/starred +statsforecast==1.4.0 +statsmodels==0.14.2 +strace-parser @ file:///mnt/data1/nix/time/2024/09/15/strace-parser +stringzilla==3.10.10 +substrate-interface==1.7.5 +-e git+https://github.com/jmikedupont2/swarm-models.git@11db002d774a86a50b3c6cc303ee707f12274576#egg=swarm_models&subdirectory=../../../../../../../time/2024/12/05/swarm-models +-e git+https://github.com/meta-introspector/swarms.git@82a2d8954b9b4668801bdce59a23df4b0d16df1f#egg=swarms&subdirectory=../../../../../../../time/2024/05/31/swarms +sympy==1.13.3 +systemd-python==234 +tabulate==0.9.0 +tenacity==8.2.3 +tensor-parallel==1.0.23 +tensorboard==2.17.0 +tensorboard-data-server==0.7.2 +tensorboardX==2.6.2.2 +termcolor==2.4.0 +test_tube==0.7.5 +-e git+https://github.com/Josephrp/testcontainers-python@298e0e7a260c21f81fa6e7bcf40613a094b8ef2b#egg=testcontainers&subdirectory=../../../../../../../time/2024/08/04/testcontainers-python +TestSlide==2.7.1 +text-unidecode==1.3 +thespian==3.10.7 +thinc==8.2.5 +thoth-analyzer==0.1.8 +thoth-common==0.36.6 +thoth-license-solver==0.1.5 +thoth-python==0.16.11 +thoth-solver @ file:///mnt/data1/nix/time/2024/06/01/solver +threadpoolctl==3.5.0 +tifffile==2024.7.24 +tiktoken==0.7.0 +time-machine==2.16.0 +timm==0.6.13 +tldextract==5.1.2 +tokenize-rt==5.2.0 +tokenizers==0.20.3 +toml==0.10.2 +tomli==2.0.1 +tomlkit==0.12.0 +toolz==0.12.1 +torch==2.3.1 +-e git+https://github.com/pyg-team/pytorch_geometric.git@8bb44edf7c7e687aca44daca0e6cc5eb6ae076b0#egg=torch_geometric&subdirectory=../../../../../../../time/2023/06/03/pytorch_geometric +torchaudio==2.3.1 +torchmetrics==1.2.1 +torchsde==0.2.6 +torchvision==0.18.1 +tornado==6.1 +tqdm==4.65.2 +trampoline==0.1.2 +transformers==4.46.3 +-e git+https://github.com/elektito/trick@1946e731a3c247d9973c093695b7ea6162f1052a#egg=trick_scheme&subdirectory=../../../../../../../time/2024/07/18/trick +triton==2.3.1 +trl==0.7.11 +trove-classifiers==2024.5.22 +ttystatus==0.38 +Twisted==24.7.0 +typeguard==2.13.3 +typer==0.12.3 +types-chardet==5.0.4.6 +types-protobuf==5.26.0.20240422 +types-pytz==2024.1.0.20240417 +types-toml==0.10.8.20240310 +typing-inspect==0.9.0 +typing_extensions==4.11.0 +tyro==0.7.3 +tzdata==2024.1 +tzlocal==5.2 +ubuntu-advantage-tools==27.12 +ubuntu-drivers-common==0.0.0 +ufw==0.36.1 +ujson==5.10.0 +unattended-upgrades==0.1 +Unidecode==1.3.3 +unidiff==0.5.5 +-e git+https://github.com/freckletonj/uniteai@653b2d01d5899f261af502a0b3367b4489d67821#egg=uniteai&subdirectory=../../../../../../../time/2024/06/27/uniteai +uritemplate==4.1.1 +urllib3==2.2.3 +userpath==1.8.0 +utilsforecast==0.0.10 +uvicorn==0.28.0 +uvloop==0.19.0 +varint==1.0.2 +virtualenv==20.28.0 +virtualenv-clone==0.3.0 +vmdb2==0.24 +w3lib==2.2.1 +wadllib==1.3.6 +wajig==4.0.3 +wandb==0.15.3 +wasabi==1.1.3 +watchfiles==0.22.0 +wcwidth==0.2.13 +weasel==0.4.1 +webencodings==0.5.1 +websocket==0.2.1 +websocket-client @ git+https://github.com/websocket-client/websocket-client.git@77337ef76f1f38b14742ab28309f9ca51b8fb011 +websockets==12.0 +Werkzeug==3.0.2 +widgetsnbextension==4.0.13 +window_ops==0.0.15 +wrapt==1.13.3 +wsproto==1.2.0 +xcffib==0.11.1 +xdg==5 +xdot==1.2 +xgboost==2.0.3 +xkit==0.0.0 +xmltodict==0.13.0 +xxhash==3.4.1 +-e git+https://github.com/mschuett/yaml-shellcheck.git@08537c9c42734041d9da07a143437d2565fa6f83#egg=yaml_shellcheck&subdirectory=../../../../../../../time/2024/10/21/yaml-shellcheck +yarl==1.9.4 +youtube-dl==2021.12.17 +yq==3.4.3 +zipp==1.0.0 +zope.event==5.0 +zope.interface==6.4.post2