From 45fadf5c5d0f3b2e22c1e5834c311138df6abd4c Mon Sep 17 00:00:00 2001 From: tazlin Date: Sun, 9 Jul 2023 16:41:10 -0400 Subject: [PATCH] fix: more accurate swagger evaluation, better Base* classes Too many changes to list. See diff. --- src/horde_sdk/ai_horde_api/__init__.py | 3 + .../ai_horde_api/apimodels/_stats.py | 2 +- .../ai_horde_api/apimodels/generate/_async.py | 26 +- .../ai_horde_api/apimodels/generate/_check.py | 2 +- .../ai_horde_api/apimodels/generate/_pop.py | 2 +- .../apimodels/generate/_status.py | 9 +- .../apimodels/generate/_submit.py | 2 +- .../apimodels/workers/_workers_all.py | 140 + src/horde_sdk/ai_horde_api/consts.py | 6 + src/horde_sdk/ai_horde_api/fields.py | 4 + src/horde_sdk/consts.py | 24 + src/horde_sdk/generic_api/apimodels.py | 98 +- src/horde_sdk/generic_api/generic_client.py | 10 +- src/horde_sdk/generic_api/utils/swagger.py | 343 +- src/horde_sdk/ratings_api/apimodels.py | 8 +- .../scripts/write_all_response_examples.py | 17 + src/horde_sdk/utils.py | 4 +- tests/ai_horde_api/test_api_calls.py | 51 +- ...st_dynamically_validate_against_swagger.py | 34 +- tests/ai_horde_api/test_swagger.py | 4 +- tests/ratings_api/test_init.py | 6 - .../_v2_generate_async_post.json | 35 +- .../_v2_generate_rate_id_post.json | 8 +- .../_v2_generate_text_async_post.json | 22 +- .../_v2_interrogate_async_post.json | 11 +- .../example_payloads/_v2_teams_post.json | 2 +- .../_v2_teams_team_id_patch.json | 2 +- .../_v2_users_user_id_put.json | 6 +- .../_v2_workers_worker_id_put.json | 4 +- .../_v2_workers_get_200.json | 4831 ++++++++++++++++ .../ImageGenerateAsyncResponse.json | 5 - .../ImageGenerateJobResponse.json | 64 - .../ImageGenerateStatusResponse.json | 25 - .../ImageGenerationJobSubmitRequest.json | 7 - .../ImageGenerationJobSubmitResponse.json | 3 - .../StatsModelsResponse.json | 590 -- .../_v2_filters_filter_id_delete_200.json | 3 + .../_v2_filters_filter_id_get_200.json | 10 + .../_v2_filters_filter_id_patch_200.json | 8 + .../_v2_filters_get_200.json | 10 + .../_v2_filters_post_200.json | 4 + .../_v2_filters_put_201.json | 8 + .../_v2_filters_regex_get_200.json | 6 + .../_v2_find_user_get_200.json | 60 + .../_v2_generate_async_post_202.json | 5 + ...son => _v2_generate_check_id_get_200.json} | 4 +- .../_v2_generate_pop_post_200.json | 60 + .../_v2_generate_rate_id_post_200.json | 3 + .../_v2_generate_status_id_delete_200.json | 25 + .../_v2_generate_status_id_get_200.json | 25 + .../_v2_generate_submit_post_200.json | 3 + .../_v2_generate_text_async_post_202.json | 5 + .../_v2_generate_text_pop_post_200.json | 39 + ...v2_generate_text_status_id_delete_200.json | 22 + .../_v2_generate_text_status_id_get_200.json | 22 + .../_v2_generate_text_submit_post_200.json | 3 + .../_v2_interrogate_async_post_202.json | 4 + .../_v2_interrogate_pop_post_200.json | 20 + .../_v2_interrogate_status_id_delete_200.json | 14 + .../_v2_interrogate_status_id_get_200.json | 14 + .../_v2_interrogate_submit_post_200.json | 3 + .../_v2_kudos_award_post_200.json | 3 + .../_v2_kudos_transfer_post_200.json | 3 + .../_v2_operations_ipaddr_delete_200.json | 3 + .../_v2_sharedkeys_put_200.json | 10 + ...v2_sharedkeys_sharedkey_id_delete_200.json | 3 + .../_v2_sharedkeys_sharedkey_id_get_200.json | 10 + ..._v2_sharedkeys_sharedkey_id_patch_200.json | 10 + .../_v2_stats_img_models_get_200.json | 17 + .../_v2_stats_img_totals_get_200.json | 22 + .../_v2_stats_text_models_get_200.json | 17 + .../_v2_stats_text_totals_get_200.json | 22 + .../_v2_status_models_get_200.json | 11 + .../_v2_status_models_model_name_get_200.json | 9 + .../_v2_status_modes_get_200.json | 5 + .../_v2_status_modes_put_200.json | 5 + .../_v2_status_news_get_200.json | 7 + .../_v2_status_performance_get_200.json | 15 + .../example_responses/_v2_teams_get_200.json | 26 + .../example_responses/_v2_teams_post_200.json | 5 + .../_v2_teams_team_id_delete_200.json | 4 + .../_v2_teams_team_id_get_200.json | 24 + .../_v2_teams_team_id_patch_200.json | 5 + .../example_responses/_v2_users_get_200.json | 60 + .../_v2_users_user_id_get_200.json | 60 + .../_v2_users_user_id_put_200.json | 17 + .../_v2_workers_get_200.json | 43 + .../_v2_workers_worker_id_delete_200.json | 4 + .../_v2_workers_worker_id_get_200.json | 41 + .../_v2_workers_worker_id_put_200.json | 7 + .../_v2_workers_get_200_production.json | 5041 +++++++++++++++++ tests/test_dynamically_check_apimodels.py | 42 +- 92 files changed, 11478 insertions(+), 863 deletions(-) create mode 100644 src/horde_sdk/ai_horde_api/apimodels/workers/_workers_all.py create mode 100644 src/horde_sdk/scripts/write_all_response_examples.py create mode 100644 tests/test_data/ai_horde_api/example_production_responses/_v2_workers_get_200.json delete mode 100644 tests/test_data/ai_horde_api/example_responses/ImageGenerateAsyncResponse.json delete mode 100644 tests/test_data/ai_horde_api/example_responses/ImageGenerateJobResponse.json delete mode 100644 tests/test_data/ai_horde_api/example_responses/ImageGenerateStatusResponse.json delete mode 100644 tests/test_data/ai_horde_api/example_responses/ImageGenerationJobSubmitRequest.json delete mode 100644 tests/test_data/ai_horde_api/example_responses/ImageGenerationJobSubmitResponse.json delete mode 100644 tests/test_data/ai_horde_api/example_responses/StatsModelsResponse.json create mode 100644 tests/test_data/ai_horde_api/example_responses/_v2_filters_filter_id_delete_200.json create mode 100644 tests/test_data/ai_horde_api/example_responses/_v2_filters_filter_id_get_200.json create mode 100644 tests/test_data/ai_horde_api/example_responses/_v2_filters_filter_id_patch_200.json create mode 100644 tests/test_data/ai_horde_api/example_responses/_v2_filters_get_200.json create mode 100644 tests/test_data/ai_horde_api/example_responses/_v2_filters_post_200.json create mode 100644 tests/test_data/ai_horde_api/example_responses/_v2_filters_put_201.json create mode 100644 tests/test_data/ai_horde_api/example_responses/_v2_filters_regex_get_200.json create mode 100644 tests/test_data/ai_horde_api/example_responses/_v2_find_user_get_200.json create mode 100644 tests/test_data/ai_horde_api/example_responses/_v2_generate_async_post_202.json rename tests/test_data/ai_horde_api/example_responses/{ImageGenerateCheckResponse.json => _v2_generate_check_id_get_200.json} (82%) create mode 100644 tests/test_data/ai_horde_api/example_responses/_v2_generate_pop_post_200.json create mode 100644 tests/test_data/ai_horde_api/example_responses/_v2_generate_rate_id_post_200.json create mode 100644 tests/test_data/ai_horde_api/example_responses/_v2_generate_status_id_delete_200.json create mode 100644 tests/test_data/ai_horde_api/example_responses/_v2_generate_status_id_get_200.json create mode 100644 tests/test_data/ai_horde_api/example_responses/_v2_generate_submit_post_200.json create mode 100644 tests/test_data/ai_horde_api/example_responses/_v2_generate_text_async_post_202.json create mode 100644 tests/test_data/ai_horde_api/example_responses/_v2_generate_text_pop_post_200.json create mode 100644 tests/test_data/ai_horde_api/example_responses/_v2_generate_text_status_id_delete_200.json create mode 100644 tests/test_data/ai_horde_api/example_responses/_v2_generate_text_status_id_get_200.json create mode 100644 tests/test_data/ai_horde_api/example_responses/_v2_generate_text_submit_post_200.json create mode 100644 tests/test_data/ai_horde_api/example_responses/_v2_interrogate_async_post_202.json create mode 100644 tests/test_data/ai_horde_api/example_responses/_v2_interrogate_pop_post_200.json create mode 100644 tests/test_data/ai_horde_api/example_responses/_v2_interrogate_status_id_delete_200.json create mode 100644 tests/test_data/ai_horde_api/example_responses/_v2_interrogate_status_id_get_200.json create mode 100644 tests/test_data/ai_horde_api/example_responses/_v2_interrogate_submit_post_200.json create mode 100644 tests/test_data/ai_horde_api/example_responses/_v2_kudos_award_post_200.json create mode 100644 tests/test_data/ai_horde_api/example_responses/_v2_kudos_transfer_post_200.json create mode 100644 tests/test_data/ai_horde_api/example_responses/_v2_operations_ipaddr_delete_200.json create mode 100644 tests/test_data/ai_horde_api/example_responses/_v2_sharedkeys_put_200.json create mode 100644 tests/test_data/ai_horde_api/example_responses/_v2_sharedkeys_sharedkey_id_delete_200.json create mode 100644 tests/test_data/ai_horde_api/example_responses/_v2_sharedkeys_sharedkey_id_get_200.json create mode 100644 tests/test_data/ai_horde_api/example_responses/_v2_sharedkeys_sharedkey_id_patch_200.json create mode 100644 tests/test_data/ai_horde_api/example_responses/_v2_stats_img_models_get_200.json create mode 100644 tests/test_data/ai_horde_api/example_responses/_v2_stats_img_totals_get_200.json create mode 100644 tests/test_data/ai_horde_api/example_responses/_v2_stats_text_models_get_200.json create mode 100644 tests/test_data/ai_horde_api/example_responses/_v2_stats_text_totals_get_200.json create mode 100644 tests/test_data/ai_horde_api/example_responses/_v2_status_models_get_200.json create mode 100644 tests/test_data/ai_horde_api/example_responses/_v2_status_models_model_name_get_200.json create mode 100644 tests/test_data/ai_horde_api/example_responses/_v2_status_modes_get_200.json create mode 100644 tests/test_data/ai_horde_api/example_responses/_v2_status_modes_put_200.json create mode 100644 tests/test_data/ai_horde_api/example_responses/_v2_status_news_get_200.json create mode 100644 tests/test_data/ai_horde_api/example_responses/_v2_status_performance_get_200.json create mode 100644 tests/test_data/ai_horde_api/example_responses/_v2_teams_get_200.json create mode 100644 tests/test_data/ai_horde_api/example_responses/_v2_teams_post_200.json create mode 100644 tests/test_data/ai_horde_api/example_responses/_v2_teams_team_id_delete_200.json create mode 100644 tests/test_data/ai_horde_api/example_responses/_v2_teams_team_id_get_200.json create mode 100644 tests/test_data/ai_horde_api/example_responses/_v2_teams_team_id_patch_200.json create mode 100644 tests/test_data/ai_horde_api/example_responses/_v2_users_get_200.json create mode 100644 tests/test_data/ai_horde_api/example_responses/_v2_users_user_id_get_200.json create mode 100644 tests/test_data/ai_horde_api/example_responses/_v2_users_user_id_put_200.json create mode 100644 tests/test_data/ai_horde_api/example_responses/_v2_workers_get_200.json create mode 100644 tests/test_data/ai_horde_api/example_responses/_v2_workers_worker_id_delete_200.json create mode 100644 tests/test_data/ai_horde_api/example_responses/_v2_workers_worker_id_get_200.json create mode 100644 tests/test_data/ai_horde_api/example_responses/_v2_workers_worker_id_put_200.json create mode 100644 tests/test_data/ai_horde_api/production_responses/_v2_workers_get_200_production.json diff --git a/src/horde_sdk/ai_horde_api/__init__.py b/src/horde_sdk/ai_horde_api/__init__.py index 29db661..a160e0a 100644 --- a/src/horde_sdk/ai_horde_api/__init__.py +++ b/src/horde_sdk/ai_horde_api/__init__.py @@ -11,6 +11,7 @@ ImageGenerationJobSubmitRequest, ImageGenerationJobSubmitResponse, ) +from horde_sdk.ai_horde_api.apimodels.workers._workers_all import AllWorkersDetailsRequest, AllWorkersDetailsResponse __all__ = [ "ImageGenerateAsyncRequest", @@ -26,4 +27,6 @@ "StatsModelsResponse", "ImageGenerationJobSubmitRequest", "ImageGenerationJobSubmitResponse", + "AllWorkersDetailsRequest", + "AllWorkersDetailsResponse", ] diff --git a/src/horde_sdk/ai_horde_api/apimodels/_stats.py b/src/horde_sdk/ai_horde_api/apimodels/_stats.py index b7da8f7..4bf7229 100644 --- a/src/horde_sdk/ai_horde_api/apimodels/_stats.py +++ b/src/horde_sdk/ai_horde_api/apimodels/_stats.py @@ -44,5 +44,5 @@ def get_endpoint_subpath(cls) -> str: @override @classmethod - def get_expected_response_type(cls) -> type[StatsModelsResponse]: + def get_success_response_type(cls) -> type[StatsModelsResponse]: return StatsModelsResponse diff --git a/src/horde_sdk/ai_horde_api/apimodels/generate/_async.py b/src/horde_sdk/ai_horde_api/apimodels/generate/_async.py index 06920dd..bc73a2a 100644 --- a/src/horde_sdk/ai_horde_api/apimodels/generate/_async.py +++ b/src/horde_sdk/ai_horde_api/apimodels/generate/_async.py @@ -8,8 +8,8 @@ ) from horde_sdk.ai_horde_api.endpoints import AI_HORDE_API_URL_Literals from horde_sdk.ai_horde_api.fields import GenerationID -from horde_sdk.consts import HTTPMethod -from horde_sdk.generic_api.apimodels import BaseRequestWorkerDriven, BaseResponse +from horde_sdk.consts import HTTPMethod, HTTPStatusCode +from horde_sdk.generic_api.apimodels import BaseRequestAuthenticated, BaseRequestWorkerDriven, BaseResponse class ImageGenerateAsyncResponse(BaseResponse): @@ -33,7 +33,12 @@ class ImageGenerationInputPayload(BaseImageGenerateParam): n: int = Field(default=1, ge=1) -class ImageGenerateAsyncRequest(BaseAIHordeRequest, BaseImageGenerateImg2Img, BaseRequestWorkerDriven): +class ImageGenerateAsyncRequest( + BaseAIHordeRequest, + BaseRequestAuthenticated, + BaseImageGenerateImg2Img, + BaseRequestWorkerDriven, +): """Represents the data needed to make a request to the `/v2/generate/async` endpoint. v2 API Model: `GenerationInputStable` @@ -68,11 +73,18 @@ def get_http_method(cls) -> HTTPMethod: return HTTPMethod.POST @override - @staticmethod - def get_endpoint_subpath() -> str: + @classmethod + def get_endpoint_subpath(cls) -> str: return AI_HORDE_API_URL_Literals.v2_generate_async @override - @staticmethod - def get_expected_response_type() -> type[ImageGenerateAsyncResponse]: + @classmethod + def get_success_response_type(cls) -> type[ImageGenerateAsyncResponse]: return ImageGenerateAsyncResponse + + @override + @classmethod + def get_success_status_response_pairs(cls) -> dict[HTTPStatusCode, type[BaseResponse]]: + return { + HTTPStatusCode.ACCEPTED: cls.get_success_response_type(), + } diff --git a/src/horde_sdk/ai_horde_api/apimodels/generate/_check.py b/src/horde_sdk/ai_horde_api/apimodels/generate/_check.py index 5be5755..3c16462 100644 --- a/src/horde_sdk/ai_horde_api/apimodels/generate/_check.py +++ b/src/horde_sdk/ai_horde_api/apimodels/generate/_check.py @@ -59,5 +59,5 @@ def get_endpoint_subpath(cls) -> str: @override @classmethod - def get_expected_response_type(cls) -> type[ImageGenerateCheckResponse]: + def get_success_response_type(cls) -> type[ImageGenerateCheckResponse]: return ImageGenerateCheckResponse diff --git a/src/horde_sdk/ai_horde_api/apimodels/generate/_pop.py b/src/horde_sdk/ai_horde_api/apimodels/generate/_pop.py index b5ae4c0..a3ff4a5 100644 --- a/src/horde_sdk/ai_horde_api/apimodels/generate/_pop.py +++ b/src/horde_sdk/ai_horde_api/apimodels/generate/_pop.py @@ -131,7 +131,7 @@ def get_endpoint_subpath() -> str: @override @staticmethod - def get_expected_response_type() -> type[ImageGenerateJobResponse]: + def get_success_response_type() -> type[ImageGenerateJobResponse]: return ImageGenerateJobResponse diff --git a/src/horde_sdk/ai_horde_api/apimodels/generate/_status.py b/src/horde_sdk/ai_horde_api/apimodels/generate/_status.py index 03be05b..649d8ee 100644 --- a/src/horde_sdk/ai_horde_api/apimodels/generate/_status.py +++ b/src/horde_sdk/ai_horde_api/apimodels/generate/_status.py @@ -7,6 +7,7 @@ from horde_sdk.ai_horde_api.endpoints import AI_HORDE_API_URL_Literals from horde_sdk.ai_horde_api.fields import ImageID, WorkerID from horde_sdk.consts import HTTPMethod +from horde_sdk.generic_api.apimodels import BaseRequestAuthenticated class ImageGenerateStatusRequest(BaseAIHordeRequest, BaseImageGenerateJobRequest): @@ -54,7 +55,11 @@ def get_api_model_name(cls) -> str | None: return "RequestStatusStable" -class CancelImageGenerateRequest(BaseAIHordeRequest, BaseImageGenerateJobRequest): +class CancelImageGenerateRequest( + BaseAIHordeRequest, + BaseRequestAuthenticated, + BaseImageGenerateJobRequest, +): """Represents a DELETE request to the `/v2/generate/status/{id}` endpoint.""" @override @@ -74,5 +79,5 @@ def get_endpoint_subpath() -> str: @override @staticmethod - def get_expected_response_type() -> type[ImageGenerateStatusResponse]: + def get_success_response_type() -> type[ImageGenerateStatusResponse]: return ImageGenerateStatusResponse diff --git a/src/horde_sdk/ai_horde_api/apimodels/generate/_submit.py b/src/horde_sdk/ai_horde_api/apimodels/generate/_submit.py index a8d9952..869023d 100644 --- a/src/horde_sdk/ai_horde_api/apimodels/generate/_submit.py +++ b/src/horde_sdk/ai_horde_api/apimodels/generate/_submit.py @@ -51,5 +51,5 @@ def get_endpoint_subpath() -> str: @override @staticmethod - def get_expected_response_type() -> type[ImageGenerationJobSubmitResponse]: + def get_success_response_type() -> type[ImageGenerationJobSubmitResponse]: return ImageGenerationJobSubmitResponse diff --git a/src/horde_sdk/ai_horde_api/apimodels/workers/_workers_all.py b/src/horde_sdk/ai_horde_api/apimodels/workers/_workers_all.py new file mode 100644 index 0000000..558ab91 --- /dev/null +++ b/src/horde_sdk/ai_horde_api/apimodels/workers/_workers_all.py @@ -0,0 +1,140 @@ +from horde_sdk.ai_horde_api.apimodels._base import BaseAIHordeRequest +from horde_sdk.ai_horde_api.consts import WORKER_TYPE +from horde_sdk.ai_horde_api.endpoints import AI_HORDE_API_URL_Literals +from horde_sdk.ai_horde_api.fields import TeamID, WorkerID +from horde_sdk.consts import HTTPMethod +from horde_sdk.generic_api.apimodels import BaseRequestAuthenticated, BaseResponse, HordeAPIModel +from pydantic import BaseModel, Field +from typing_extensions import override + + +class TeamDetailsLite(HordeAPIModel): + name: str | None = None + """The Name given to this team.""" + id_: str | TeamID | None = Field(None, alias="id") + """The UUID of this team.""" + + @override + @classmethod + def get_api_model_name(cls) -> str | None: + return "TeamDetailsLite" + + +class WorkerKudosDetails(HordeAPIModel): + generated: float | None = None + """How much Kudos this worker has received for generating images.""" + uptime: int | None = None + """How much Kudos this worker has received for staying online longer.""" + + @override + @classmethod + def get_api_model_name(cls) -> str | None: + return "WorkerKudosDetails" + + +class WorkerDetailItem(HordeAPIModel): + type_: WORKER_TYPE = Field(alias="type") + name: str + id_: str | WorkerID = Field(alias="id") + online: bool | None = None + requests_fulfilled: int | None = None + kudos_rewards: float | None = None + kudos_details: WorkerKudosDetails | None = None + performance: str | None = None + threads: int | None = None + uptime: int | None = None + maintenance_mode: bool + paused: bool | None = None + info: str | None = None + nsfw: bool | None = None + owner: str | None = None + trusted: bool | None = None + flagged: bool | None = None + suspicious: int | None = None + uncompleted_jobs: int | None = None + models: list[str] | None = None + forms: list[str] | None = None + team: TeamDetailsLite | None = None + contact: str | None = Field(None, min_length=4, max_length=500) + bridge_agent: str = Field(max_length=1000) + max_pixels: int | None = None + megapixelsteps_generated: int | None = None + img2img: bool | None = None + painting: bool | None = None + post_processing: bool | None = None + lora: bool | None = None + max_length: int | None = None + max_context_length: int | None = None + tokens_generated: int | None = None + + @override + @classmethod + def get_api_model_name(cls) -> str | None: + return "WorkerDetailItem" + + +class AllWorkersDetailsResponse(BaseResponse): + _workers: list[WorkerDetailItem] + + @property + def workers(self) -> list[WorkerDetailItem]: + return self._workers + + @override + @classmethod + def get_api_model_name(cls) -> str | None: + return "WorkerDetails" + + @override + @classmethod + def is_array_response(cls) -> bool: + return True + + @override + @classmethod + def get_array_item_type(cls) -> type[BaseModel]: + return WorkerDetailItem + + @override + def set_array(self, list_: list) -> None: + if not isinstance(list_, list): + raise ValueError("list_ must be a list") + + parsed_list = [] + for item in list_: + parsed_list.append(WorkerDetailItem(**item)) + + self._workers = parsed_list + + @override + def get_array(self) -> list: + return self._workers.copy() + + +class AllWorkersDetailsRequest(BaseAIHordeRequest, BaseRequestAuthenticated): + type_: WORKER_TYPE = Field(alias="type") + + @override + @classmethod + def get_api_model_name(cls) -> str | None: + return None + + @override + @classmethod + def get_endpoint_subpath(cls) -> str: + return AI_HORDE_API_URL_Literals.v2_workers_all + + @override + @classmethod + def get_http_method(cls) -> HTTPMethod: + return HTTPMethod.GET + + @override + @classmethod + def get_success_response_type(cls) -> type[BaseResponse]: + return AllWorkersDetailsResponse + + @override + @classmethod + def get_header_fields(cls) -> list[str]: + return ["type_"] diff --git a/src/horde_sdk/ai_horde_api/consts.py b/src/horde_sdk/ai_horde_api/consts.py index 393ac98..7c25e46 100644 --- a/src/horde_sdk/ai_horde_api/consts.py +++ b/src/horde_sdk/ai_horde_api/consts.py @@ -31,3 +31,9 @@ class KNOWN_SOURCE_PROCESSING(StrEnum): class GENERATION_STATE(StrEnum): ok = auto() censored = auto() + + +class WORKER_TYPE(StrEnum): + image = auto() + text = auto() + interrogation = auto() diff --git a/src/horde_sdk/ai_horde_api/fields.py b/src/horde_sdk/ai_horde_api/fields.py index 465b773..40324b8 100644 --- a/src/horde_sdk/ai_horde_api/fields.py +++ b/src/horde_sdk/ai_horde_api/fields.py @@ -48,3 +48,7 @@ class WorkerID(_UUID_Identifier): class ImageID(_UUID_Identifier): """Represents the ID of an image. Instances of this class can be compared with a `str` or a UUID object.""" + + +class TeamID(_UUID_Identifier): + """Represents the ID of a team. Instances of this class can be compared with a `str` or a UUID object.""" diff --git a/src/horde_sdk/consts.py b/src/horde_sdk/consts.py index 9ccf66f..a331094 100644 --- a/src/horde_sdk/consts.py +++ b/src/horde_sdk/consts.py @@ -47,3 +47,27 @@ class HTTPStatusCode(Enum): NOT_IMPLEMENTED = 501 SERVICE_UNAVAILABLE = 503 GATEWAY_TIMEOUT = 504 + + +def get_all_success_status_codes() -> list[HTTPStatusCode]: + """Return a list of all success status codes.""" + return [status_code for status_code in HTTPStatusCode if is_success_status_code(status_code)] + + +def get_all_error_status_codes() -> list[HTTPStatusCode]: + """Return a list of all error status codes.""" + return [status_code for status_code in HTTPStatusCode if is_error_status_code(status_code)] + + +def is_success_status_code(status_code: HTTPStatusCode | int) -> bool: + """Return True if the status code is a success code, False otherwise.""" + if isinstance(status_code, HTTPStatusCode): + status_code = status_code.value + return 200 <= status_code < 300 + + +def is_error_status_code(status_code: HTTPStatusCode | int) -> bool: + """Return True if the status code is an error code, False otherwise.""" + if isinstance(status_code, HTTPStatusCode): + status_code = status_code.value + return 400 <= status_code < 600 diff --git a/src/horde_sdk/generic_api/apimodels.py b/src/horde_sdk/generic_api/apimodels.py index eb3d13d..6ed6086 100644 --- a/src/horde_sdk/generic_api/apimodels.py +++ b/src/horde_sdk/generic_api/apimodels.py @@ -1,26 +1,38 @@ """API data model bases applicable across all (or many) horde APIs.""" import abc -from collections.abc import Callable +import json from pydantic import BaseModel, Field, field_validator +from typing_extensions import Self, override from horde_sdk.consts import HTTPMethod, HTTPStatusCode from horde_sdk.generic_api import GenericAcceptTypes from horde_sdk.generic_api.endpoints import url_with_path -class HordeAPIMessage(BaseModel, abc.ABC): - """Represents any request or response from any Horde API.""" +class HordeAPIModel(BaseModel, abc.ABC): + """Base class for all Horde API data models, requests, or responses.""" @classmethod @abc.abstractmethod def get_api_model_name(cls) -> str | None: - """Return the name of the model as seen in the published swagger doc. If none, there is no payload for - this message. + """Return the name of the model as seen in the published swagger doc. If none, there is no payload, + such as for a GET request. + """ - Note that GET request should have this set to `None` as they do not have a payload. + def to_json_horde_sdk_safe(self): + """Return the model as a JSON string, taking into account the paradigms of the horde_sdk. + + If you use the default json dumping behavior, you will find some rough edges, such as alias + field names not being used, `None` values being included, and responses which return arrays + not being handled correctly (returning `{}` instead of the object) """ + return self.model_dump_json(by_alias=True, exclude_none=True) + + +class HordeAPIMessage(HordeAPIModel): + """Represents any request or response from any Horde API.""" class BaseResponse(HordeAPIMessage): @@ -29,10 +41,50 @@ class BaseResponse(HordeAPIMessage): model_config = {"frozen": True} @classmethod - # @abc.abstractmethod - def get_expected_http_status_codes(cls) -> dict[HTTPStatusCode, Callable]: - """Return a dict of HTTP status codes to functions which will be used to determine if the response is valid.""" - return {HTTPStatusCode.OK: lambda x: x} + def is_array_response(cls) -> bool: + """Return whether this response is an array of an internal type.""" + return False + + @classmethod + def get_array_item_type(cls) -> type[BaseModel]: + """If this is an array response, return the type of the internal array elements. + + Check `is_array_response` first if you are not sure if this is an array response. + """ + raise NotImplementedError("This is not an array response") + + def set_array(self, list_: list[HordeAPIModel]) -> None: + """Set this response's internal array to the passed value.""" + raise NotImplementedError("This is not an array response") + + def get_array(self) -> list[HordeAPIModel]: + """Get this response's internal array.""" + raise NotImplementedError("This is not an array response") + + @classmethod + def from_dict_or_array(cls, dict_or_array: dict | list) -> Self: + if not isinstance(dict_or_array, dict): + if not isinstance(dict_or_array, list): + dict_or_array = [dict_or_array] + + new_instance = cls() + new_instance.set_array(dict_or_array) + return new_instance + + return cls(**dict_or_array) + + @override + def to_json_horde_sdk_safe(self): + # TODO: Is there a more pydantic way to do this? + if self.is_array_response(): + self_array = self.get_array() + + if not self_array: + return "{}" + + return json.dumps(self_array, default=lambda o: o.model_dump(by_alias=True, exclude_none=True), indent=4) + + return super().to_json_horde_sdk_safe() class BaseRequest(HordeAPIMessage): @@ -66,14 +118,32 @@ def get_endpoint_subpath(cls) -> str: @classmethod @abc.abstractmethod - def get_expected_response_type(cls) -> type[BaseResponse]: - """Return the `type` of the response expected.""" + def get_success_response_type(cls) -> type[BaseResponse]: + """Return the `type` of the response expected in the ordinary case of success.""" + + @classmethod + def get_success_status_response_pairs(cls) -> dict[HTTPStatusCode, type[BaseResponse]]: + """Return a dict of HTTP status codes and the expected `BaseResponse`. + + Defaults to `{HTTPStatusCode.OK: cls.get_expected_response_type()}`, but may be overridden to support other + status codes. + """ + return {HTTPStatusCode.OK: cls.get_success_response_type()} + + @classmethod + def get_header_fields(cls) -> list[str]: + """Return a dict of field names from this request that should be sent as header fields. + + This is in addition to `GenericHeaderFields`'s values, and possibly the API specific class + which inherits from `GenericHeaderFields`, typically found in `horde_sdk._api.metadata`. + """ + return [] class BaseRequestAuthenticated(BaseModel): - """Mix-in class to describe an endpoint which requires authentication.""" + """Mix-in class to describe an endpoint which may require authentication.""" - apikey: str # TODO validator + apikey: str | None = None # TODO validator """A horde API key.""" diff --git a/src/horde_sdk/generic_api/generic_client.py b/src/horde_sdk/generic_api/generic_client.py index cc644a4..71848ed 100644 --- a/src/horde_sdk/generic_api/generic_client.py +++ b/src/horde_sdk/generic_api/generic_client.py @@ -109,6 +109,8 @@ def _validate_and_prepare_request(self, api_request: BaseRequest) -> _ParsedRequ for pathKey in specified_path_keys: endpoint_no_query = endpoint_no_query.format_map({pathKey: str(getattr(api_request, pathKey))}) + extra_header_keys = api_request.get_header_fields() + request_params_dict = {} request_headers_dict = {} request_queries_dict = {} @@ -118,6 +120,10 @@ def _validate_and_prepare_request(self, api_request: BaseRequest) -> _ParsedRequ if key in specified_header_keys: request_headers_dict[key] = value continue + if key in extra_header_keys: + request_headers_dict[key] = value + specified_header_keys.append(key) + continue if key in specified_query_keys: request_queries_dict[key] = value continue @@ -147,7 +153,7 @@ def _after_request_handling( api_request: BaseRequest, raw_response: requests.Response, ) -> BaseResponse | RequestErrorResponse: - expected_response_type = api_request.get_expected_response_type() + expected_response_type = api_request.get_success_response_type() raw_response_json = raw_response.json() # If requests response is a failure code, see if a `message` key exists in the response. @@ -162,7 +168,7 @@ def _after_request_handling( ) # FIXME should be something resembling error handling here - return expected_response_type(**raw_response_json) + return expected_response_type.from_dict_or_array(raw_response_json) def submit_request(self, api_request: BaseRequest) -> BaseResponse | RequestErrorResponse: """Submit a request to the API and return the response. diff --git a/src/horde_sdk/generic_api/utils/swagger.py b/src/horde_sdk/generic_api/utils/swagger.py index d6e8544..776ba01 100644 --- a/src/horde_sdk/generic_api/utils/swagger.py +++ b/src/horde_sdk/generic_api/utils/swagger.py @@ -2,17 +2,17 @@ import json import re -from abc import ABC, abstractmethod +from abc import ABC from pathlib import Path import requests -from horde_sdk.consts import PAYLOAD_HTTP_METHODS, HTTPMethod, HTTPStatusCode +from horde_sdk.consts import PAYLOAD_HTTP_METHODS, HTTPMethod, HTTPStatusCode, is_error_status_code from loguru import logger from pydantic import BaseModel, Field, model_validator -from typing_extensions import override +from strenum import StrEnum -class SwaggerModelDefinitionAdditionalProperty(BaseModel): +class SwaggerModelAdditionalProperty(BaseModel): # TODO: Is this actually a recursive SwaggerModelDefinitionProperty? model_config = {"extra": "forbid"} @@ -20,7 +20,7 @@ class SwaggerModelDefinitionAdditionalProperty(BaseModel): description: str | None = None -class SwaggerModelDefinitionProperty(BaseModel): +class SwaggerModelProperty(BaseModel): """A property of a model (data structure) used in the API. This might also be referred to as a "field" or an "attribute" of the model. @@ -44,11 +44,11 @@ class SwaggerModelDefinitionProperty(BaseModel): maxLength: int | None = None multipleOf: float | None = None uniqueItems: bool | None = None - additionalProperties: SwaggerModelDefinitionAdditionalProperty | None = None - items: SwaggerModelDefinitionProperty | list[SwaggerModelDefinitionProperty] | None = None + additionalProperties: SwaggerModelAdditionalProperty | None = None + items: SwaggerModelProperty | list[SwaggerModelProperty] | None = None -class SwaggerModelDefinitionRef(BaseModel): +class SwaggerModelRef(BaseModel): """A reference to a model (data structure) used in the API.""" model_config = {"extra": "forbid"} @@ -56,32 +56,33 @@ class SwaggerModelDefinitionRef(BaseModel): ref: str | None = Field(None, alias="$ref") -class SwaggerModelDefinitionEntry(BaseModel, ABC): +class SwaggerModelEntry(BaseModel, ABC): """An entry in the definitions section of the swagger doc. This could be a model definition, or a schema validation method object. See `SwaggerModelDefinitionSchemaValidationMethods` for more info.""" - @abstractmethod - def get_all_definitions(self) -> list[SwaggerModelDefinition | SwaggerModelDefinitionRef]: - """Get all definitions from all validation methods.""" - raise NotImplementedError - -class SwaggerModelDefinition(SwaggerModelDefinitionEntry): +class SwaggerModelDefinition(SwaggerModelEntry): """A definition of a model (data structure) used in the API.""" model_config = {"extra": "forbid"} type_: str | None = Field(None, alias="type") - properties: dict[str, SwaggerModelDefinitionProperty] | None = None + properties: dict[str, SwaggerModelProperty] | None = None required: list[str] | None = None - @override - def get_all_definitions(self) -> list[SwaggerModelDefinition | SwaggerModelDefinitionRef]: - """Get all definitions from all validation methods.""" - return [self] # This looks odd, but `SwaggerModelDefinitionSchemaValidationMethods` is the wrinkle here. +class SwaggerSchemaValidationMethod(StrEnum): + """The type of schema validation method used in the Swagger doc.""" -class SwaggerModelDefinitionSchemaValidationMethods(SwaggerModelDefinitionEntry): + allOf = "allOf" + """The model must match all of the schemas in this list.""" + oneOf = "oneOf" + """The model must match exactly one of the schemas in this list.""" + anyOf = "anyOf" + """The model must match at least one of the schemas in this list.""" + + +class SwaggerModelDefinitionSchemaValidation(SwaggerModelEntry): """When used instead of a SwaggerModelDefinition, it means that the model is validated against one or more schemas. See the `allOf`, `oneOf`, and `anyOf` properties of the Swagger spec: @@ -90,11 +91,11 @@ class SwaggerModelDefinitionSchemaValidationMethods(SwaggerModelDefinitionEntry) model_config = {"extra": "forbid"} - allOf: list[SwaggerModelDefinition | SwaggerModelDefinitionRef] | None = None + allOf: list[SwaggerModelDefinition | SwaggerModelRef] | None = None """The model must match all of the schemas in this list.""" - oneOf: list[SwaggerModelDefinition | SwaggerModelDefinitionRef] | None = None + oneOf: list[SwaggerModelDefinition | SwaggerModelRef] | None = None """The model must match exactly one of the schemas in this list.""" - anyOf: list[SwaggerModelDefinition | SwaggerModelDefinitionRef] | None = None + anyOf: list[SwaggerModelDefinition | SwaggerModelRef] | None = None """The model must match at least one of the schemas in this list.""" @model_validator(mode="before") @@ -105,18 +106,29 @@ def one_method_specified(cls, v): return v - @override - def get_all_definitions(self) -> list[SwaggerModelDefinition | SwaggerModelDefinitionRef]: - """Get all definitions from all validation methods.""" - return_list = [] + def get_validation_method(self) -> SwaggerSchemaValidationMethod | None: + """Get the schema validation method used for this model.""" + if self.allOf: + return SwaggerSchemaValidationMethod.allOf + if self.oneOf: + return SwaggerSchemaValidationMethod.oneOf + if self.anyOf: + return SwaggerSchemaValidationMethod.anyOf + + raise RuntimeError("No validation method defined!") + + def get_model_definitions( + self, + ) -> tuple[SwaggerSchemaValidationMethod, list[SwaggerModelDefinition | SwaggerModelRef]]: + """Get the model definitions used for this model.""" if self.allOf: - return_list.extend(self.allOf) + return (SwaggerSchemaValidationMethod.allOf, self.allOf) if self.oneOf: - return_list.extend(self.oneOf) + return (SwaggerSchemaValidationMethod.oneOf, self.oneOf) if self.anyOf: - return_list.extend(self.anyOf) + return (SwaggerSchemaValidationMethod.anyOf, self.anyOf) - return return_list + raise RuntimeError("No validation method specified!") class SwaggerDocTagsItem(BaseModel): @@ -281,66 +293,85 @@ class SwaggerDoc(BaseModel): """Metadata about the document.""" responses: dict[str, SwaggerDocResponseItem] | None = None """Unknown""" - definitions: dict[str, SwaggerModelDefinition | SwaggerModelDefinitionSchemaValidationMethods] + definitions: dict[str, SwaggerModelDefinition | SwaggerModelDefinitionSchemaValidation] """The definitions of the models (data structures) used in the API.""" - def extract_all_response_examples(self) -> dict[str, dict[HTTPMethod, dict[HTTPStatusCode, object]]]: + def get_all_response_examples(self) -> dict[str, dict[HTTPMethod, dict[HTTPStatusCode, dict[str, object] | list]]]: """Extract all response examples from the swagger doc. This in the form of: `dict[endpoint_path, dict[http_method, dict[http_status_code, example_response]]]` """ - every_endpoint_example: dict[str, dict[HTTPMethod, dict[HTTPStatusCode, object]]] = {} + every_endpoint_example: dict[str, dict[HTTPMethod, dict[HTTPStatusCode, dict[str, object] | list]]] = {} # Iterate through each endpoint in the Swagger documentation for endpoint_path, endpoint in self.paths.items(): - endpoint_examples: dict[HTTPMethod, dict[HTTPStatusCode, object]] = {} + if endpoint_path == "/v2/stats/img/models": + pass + endpoint_examples = self.get_endpoint_examples(endpoint) - # Iterate through each HTTP method used by the endpoint - for http_method_name, endpoint_method_definition in endpoint.get_defined_endpoints().items(): - endpoint_method_examples: dict[HTTPStatusCode, object] = {} + if endpoint_examples: + every_endpoint_example[endpoint_path] = endpoint_examples - if not endpoint_method_definition.responses: - continue + return every_endpoint_example - logger.debug(f"Found {endpoint_path} {http_method_name.upper()} with response") + def get_endpoint_examples( + self, endpoint: SwaggerEndpoint + ) -> dict[HTTPMethod, dict[HTTPStatusCode, dict[str, object] | list]]: + """Extract response examples for a single endpoint.""" + endpoint_examples: dict[HTTPMethod, dict[HTTPStatusCode, dict[str, object] | list]] = {} - # Iterate through each defined response for the HTTP method - for http_status_code_str, response_definition in endpoint_method_definition.responses.items(): - http_status_code_object = HTTPStatusCode(int(http_status_code_str)) + # Iterate through each HTTP method used by the endpoint + for http_method_name, endpoint_method_definition in endpoint.get_defined_endpoints().items(): + endpoint_method_examples = self.get_endpoint_method_examples(endpoint_method_definition) - if not response_definition.schema_: - continue + if endpoint_method_examples: + endpoint_examples[HTTPMethod(http_method_name.upper())] = endpoint_method_examples - # If the response schema is a reference to an API model, resolve the reference and include - # its defaults too - if isinstance(response_definition.schema_, SwaggerEndpointResponseSchema): - logger.debug(f"Resolving {response_definition.schema_.ref}") - example_response = self._resolve_model_ref_defaults(response_definition.schema_.ref) - endpoint_method_examples.update( - {http_status_code_object: example_response}, - ) - # If there is an explicit, endpoint specific schema, use that too - elif isinstance(response_definition.schema_, SwaggerEndpointResponseSchemaItem): - if not response_definition.schema_.ref: - continue - logger.debug(f"Resolving {response_definition.schema_.ref}") - example_response = self._resolve_model_ref_defaults(response_definition.schema_.ref) - endpoint_method_examples.update( - {http_status_code_object: example_response}, - ) + return endpoint_examples - if endpoint_method_examples: - endpoint_examples.update( - {HTTPMethod(http_method_name.upper()): endpoint_method_examples}, - ) + def get_endpoint_method_examples( + self, endpoint_method_definition: SwaggerEndpointMethod + ) -> dict[HTTPStatusCode, dict[str, object] | list]: + """Extract response examples for a single HTTP method used by an endpoint.""" + endpoint_method_examples: dict[HTTPStatusCode, dict[str, object] | list] = {} - if endpoint_examples: - every_endpoint_example[endpoint_path] = endpoint_examples + if not endpoint_method_definition.responses: + return endpoint_method_examples - return every_endpoint_example + # Iterate through each defined response for the HTTP method + for http_status_code_str, response_definition in endpoint_method_definition.responses.items(): + http_status_code_object = HTTPStatusCode(int(http_status_code_str)) + + example_response = self.get_response_example(response_definition) - def extract_all_payload_examples(self) -> dict[str, dict[HTTPMethod, dict[str, object]]]: + if example_response: + endpoint_method_examples[http_status_code_object] = example_response + + return endpoint_method_examples + + def get_response_example(self, response_definition: SwaggerEndpointResponse) -> dict[str, object] | list: + """Extract an example response for a single HTTP response definition.""" + example_response: dict[str, object] | list = {} + + if not response_definition.schema_: + return example_response + + # If the response schema is a reference to an API model, resolve the reference and include its defaults too + if isinstance(response_definition.schema_, SwaggerEndpointResponseSchema) and response_definition.schema_.ref: + # # logger.debug(f"Resolving {response_definition.schema_.ref}") + example_response = self._resolve_model_ref_defaults(response_definition.schema_.ref) + if response_definition.schema_.items: + # # logger.debug(f"Resolving {response_definition.schema_.items.ref}") + example_response = self._resolve_model_ref_defaults(response_definition.schema_.items.ref) + if response_definition.schema_.type_ == "array": + example_response = [example_response] + elif response_definition.schema_.type_ == "object": + example_response = {"properties": example_response} + + return example_response + + def get_all_payload_examples(self) -> dict[str, dict[HTTPMethod, dict[str, object]]]: """Extract all examples from the swagger doc. This in the form of: @@ -349,6 +380,8 @@ def extract_all_payload_examples(self) -> dict[str, dict[HTTPMethod, dict[str, o every_endpoint_example: dict[str, dict[HTTPMethod, dict[str, object]]] = {} for endpoint_path, endpoint in self.paths.items(): endpoint_examples: dict[HTTPMethod, dict[str, object]] = {} + if endpoint_path == "/v2/generate/async": + pass for http_method_name, endpoint_method_definition in endpoint.get_defined_endpoints().items(): if http_method_name.upper() not in PAYLOAD_HTTP_METHODS: @@ -357,7 +390,7 @@ def extract_all_payload_examples(self) -> dict[str, dict[HTTPMethod, dict[str, o if not endpoint_method_definition.parameters: continue - logger.debug(f"Found {endpoint_path} {http_method_name.upper()} with payload") + # logger.debug(f"Found {endpoint_path} {http_method_name.upper()} with payload") _payload_definitions = [d for d in endpoint_method_definition.parameters if d.name == "payload"] if len(_payload_definitions) != 1: @@ -373,8 +406,13 @@ def extract_all_payload_examples(self) -> dict[str, dict[HTTPMethod, dict[str, o ) if isinstance(payload_definition.schema_, SwaggerEndpointMethodParameterSchemaRef): - logger.debug(f"Resolving {payload_definition.schema_.ref}") + # logger.debug(f"Resolving {payload_definition.schema_.ref}") example_payload = self._resolve_model_ref_defaults(payload_definition.schema_.ref) + if isinstance(example_payload, list): + raise RuntimeError( + f"Expected to find a dict for {endpoint_path} {http_method_name} payload definition" + ) + endpoint_examples.update( {HTTPMethod(http_method_name.upper()): example_payload}, ) @@ -402,15 +440,19 @@ def extract_all_payload_examples(self) -> dict[str, dict[HTTPMethod, dict[str, o return every_endpoint_example @staticmethod - def filename_from_endpoint_path(endpoint_path: str, http_method: HTTPMethod) -> str: + def filename_from_endpoint_path( + endpoint_path: str, http_method: HTTPMethod, *, http_status_code: HTTPStatusCode | None = None + ) -> str: """Get the filename for the given endpoint path.""" endpoint_path = re.sub(r"\W+", "_", endpoint_path) endpoint_path = endpoint_path + "_" + http_method.value.lower() + if http_status_code: + endpoint_path = endpoint_path + "_" + str(http_status_code.value) return re.sub(r"__+", "_", endpoint_path) def write_all_payload_examples_to_file(self, directory: str | Path) -> bool: directory = Path(directory) - all_examples = self.extract_all_payload_examples() + all_examples = self.get_all_payload_examples() for endpoint_path, endpoint_examples_info in all_examples.items(): for http_method, example_payload in endpoint_examples_info.items(): filename = self.filename_from_endpoint_path(endpoint_path, http_method) @@ -419,10 +461,33 @@ def write_all_payload_examples_to_file(self, directory: str | Path) -> bool: json.dump(example_payload, f, indent=4) return True + def write_all_response_examples_to_file( + self, + directory: str | Path, + *, + error_responses: bool = False, + ) -> bool: + directory = Path(directory) + all_examples = self.get_all_response_examples() + for endpoint_path, endpoint_examples_info in all_examples.items(): + for http_method, http_status_code_examples in endpoint_examples_info.items(): + for http_status_code, example_response in http_status_code_examples.items(): + if not error_responses and is_error_status_code(http_status_code.value): + continue + filename = self.filename_from_endpoint_path( + endpoint_path, http_method, http_status_code=http_status_code + ) + filepath = directory / f"{filename}.json" + with open(filepath, "w") as f: + json.dump(example_response, f, indent=4) + return True + def _resolve_model_ref_defaults( self, ref: str | None, - ) -> dict[str, object]: + *, + _recursed_property_name: str | None = None, + ) -> dict[str, object] | list[dict[str, object]]: """For ref entries, recursively resolve the default values for all properties. Note that this will combine all properties from all definitions that are referenced. @@ -434,7 +499,14 @@ def _resolve_model_ref_defaults( if not ref: return {} - return_dict = {} + return_dict: dict = {} + return_list: list[dict[str, object]] = [] + # return_list has a nuanced meaning: in the case of the '*' property, the endpoint + # accepts or returns N objects of the same type. In this case, this function will + # create three dummy entries in `return_list`, which it will recognize on recursion + # having this special meaning, and ultimately returns the dict as expected. + # At the time of writing, this solution was in response to the SinglePeriodImgModelStats object + # in particular, if you're looking for an example. if ref.startswith("#/definitions/"): ref = ref[len("#/definitions/") :] @@ -443,22 +515,47 @@ def _resolve_model_ref_defaults( raise RuntimeError(f"Failed to find definition for {ref}") found_def_parent = self.definitions[ref] + # logger.debug(f"Found definition for {ref}") - logger.debug(f"Found definition for {ref}") + validation_method: SwaggerSchemaValidationMethod | None = None + all_defs: list[SwaggerModelDefinition | SwaggerModelRef] = [] - all_defs = found_def_parent.get_all_definitions() + if isinstance(found_def_parent, SwaggerModelDefinitionSchemaValidation): + validation_method, all_defs = found_def_parent.get_model_definitions() + elif isinstance(found_def_parent, SwaggerModelDefinition): + all_defs = [found_def_parent] + else: + raise RuntimeError(f"Unexpected definition type: {type(found_def_parent)}") if not all_defs: raise RuntimeError(f"Failed to find any definitions for {ref}") + + # if len(all_defs) > 1: + # logger.debug(f"Found {len(all_defs)} definitions for {ref}") + for definition in all_defs: - if not isinstance(definition, SwaggerModelDefinitionRef): + if not isinstance(definition, SwaggerModelRef): continue - logger.debug(f"Recursing ref: {definition.ref}") - return_dict.update(self._resolve_model_ref_defaults(definition.ref)) + # logger.debug(f"Recursing ref: {definition.ref}") + # We recurse here, because the ref might be a reference to another reference + resolved_model = self._resolve_model_ref_defaults(definition.ref) + if isinstance(resolved_model, dict): + if validation_method == SwaggerSchemaValidationMethod.allOf: + return_dict.update(resolved_model) + elif ( + validation_method == SwaggerSchemaValidationMethod.oneOf + or validation_method == SwaggerSchemaValidationMethod.anyOf + ): + logger.warning( + "oneOf and anyOf are not well supported. Yoy may experience unexpected behavior. " + f"ref: {definition.ref}" + ) + break - if len(all_defs) > 1: - logger.debug(f"Found {len(all_defs)} definitions for {ref}") + elif isinstance(resolved_model, list): + # TODO: *Would* this ever happen? It is here as a precaution presently. + raise RuntimeError(f"Unexpected list type: {type(resolved_model)}") for definition in all_defs: if not isinstance(definition, SwaggerModelDefinition): @@ -470,22 +567,76 @@ def _resolve_model_ref_defaults( continue for prop_name, prop in definition.properties.items(): - if prop_name == "models": - pass if prop.ref: + # logger.debug(f"Recursing sub-item ref: {prop.ref}") + resolved_model = self._resolve_model_ref_defaults(prop.ref) + if isinstance(resolved_model, dict): + return_dict.update({prop_name: resolved_model}) + elif isinstance(resolved_model, list): + return_dict.update({prop_name: resolved_model[0]}) continue - if prop.example is not None: - return_dict[prop_name] = prop.example - continue - if prop.default is not None: - return_dict[prop_name] = prop.default + + if prop_name == "*" and prop.additionalProperties: + assert prop.additionalProperties.type_ + default = default_swagger_value_from_type_name(prop.additionalProperties.type_) + return_list.append( + { + "additionalProp1": default, + "additionalProp2": default, + "additionalProp3": default, + } + ) continue - if not prop.type_: - raise RuntimeError(f"Failed to find type for {prop_name} in {ref}") - return_dict[prop_name] = default_swagger_value_from_type_name(prop.type_) + if prop.items: + items_as_list = [prop.items] if isinstance(prop.items, SwaggerModelProperty) else prop.items + sub_item_return_list = [] + for item in items_as_list: + if item.ref: + # logger.debug(f"Recursing sub-item ref: {item.ref}") + resolved_model = self._resolve_model_ref_defaults(item.ref) + if isinstance(resolved_model, dict): + sub_item_return_list.append(resolved_model) + elif isinstance(resolved_model, list): + sub_item_return_list.append(resolved_model[0]) + continue + + return_dict[prop_name] = sub_item_return_list + continue - return return_dict + return_dict[prop_name] = self.get_default_with_constraint(prop) + + return return_dict if return_dict else return_list + + def get_default_with_constraint(self, model_property: SwaggerModelProperty) -> object: + if model_property.description and "optionally" in model_property.description: + pass + if model_property.example is not None: + return model_property.example + if model_property.default is not None: + return model_property.default + + if model_property.type_ == "number" or model_property.type_ == "integer": + if model_property.minimum is not None: + return model_property.minimum + if model_property.maximum is not None: + return model_property.maximum + if model_property.multipleOf is not None: + return model_property.multipleOf + elif model_property.type_ == "string": + if model_property.enum is not None: + return model_property.enum[0] + if model_property.minLength is not None: + return "a" * model_property.minLength + if model_property.maxLength is not None: + return "a" * model_property.maxLength + if model_property.format_ == "date-time": + return "2021-01-01T00:00:00Z" + + if model_property.type_ is not None: + return default_swagger_value_from_type_name(model_property.type_) + + return None class SwaggerParser: diff --git a/src/horde_sdk/ratings_api/apimodels.py b/src/horde_sdk/ratings_api/apimodels.py index 2e49b9f..3808abb 100644 --- a/src/horde_sdk/ratings_api/apimodels.py +++ b/src/horde_sdk/ratings_api/apimodels.py @@ -177,7 +177,7 @@ def get_endpoint_subpath() -> str: @override @staticmethod - def get_expected_response_type() -> type[ImageRatingsResponse]: + def get_success_response_type() -> type[ImageRatingsResponse]: return ImageRatingsResponse @@ -223,7 +223,7 @@ def get_endpoint_subpath() -> str: @override @staticmethod - def get_expected_response_type() -> type[UserValidateResponse]: + def get_success_response_type() -> type[UserValidateResponse]: return UserValidateResponse @@ -250,7 +250,7 @@ def get_endpoint_subpath() -> str: @override @staticmethod - def get_expected_response_type() -> type[UserCheckResponse]: + def get_success_response_type() -> type[UserCheckResponse]: return UserCheckResponse @@ -279,7 +279,7 @@ def get_endpoint_subpath() -> str: @override @staticmethod - def get_expected_response_type() -> type[UserRatingsResponse]: + def get_success_response_type() -> type[UserRatingsResponse]: return UserRatingsResponse diff --git a/src/horde_sdk/scripts/write_all_response_examples.py b/src/horde_sdk/scripts/write_all_response_examples.py new file mode 100644 index 0000000..fff95fe --- /dev/null +++ b/src/horde_sdk/scripts/write_all_response_examples.py @@ -0,0 +1,17 @@ +from pathlib import Path + +from horde_sdk.ai_horde_api.endpoints import get_ai_horde_swagger_url +from horde_sdk.generic_api.utils.swagger import SwaggerParser + + +def main(*, test_data_path: Path | None = None): + ai_horde_swagger_doc = SwaggerParser(get_ai_horde_swagger_url()).get_swagger_doc() + if not test_data_path: + test_data_path = ( + Path(__file__).parent.parent.parent.parent / "tests" / "test_data" / "ai_horde_api" / "example_responses" + ) + ai_horde_swagger_doc.write_all_response_examples_to_file(test_data_path) + + +if __name__ == "__main__": + main() diff --git a/src/horde_sdk/utils.py b/src/horde_sdk/utils.py index f21747b..fb83c2c 100644 --- a/src/horde_sdk/utils.py +++ b/src/horde_sdk/utils.py @@ -1,7 +1,5 @@ import random -from loguru import logger - def seed_to_int(self, s=None): if type(s) is int: @@ -12,5 +10,5 @@ def seed_to_int(self, s=None): n = abs(int(s) if s.isdigit() else int.from_bytes(s.encode(), "little")) while n >= 2**32: n = n >> 32 - logger.debug(f"Seed {s} is too large, using {n} instead") + # logger.debug(f"Seed {s} is too large, using {n} instead") return n diff --git a/tests/ai_horde_api/test_api_calls.py b/tests/ai_horde_api/test_api_calls.py index 96718ec..c71a1ad 100644 --- a/tests/ai_horde_api/test_api_calls.py +++ b/tests/ai_horde_api/test_api_calls.py @@ -1,8 +1,20 @@ +from pathlib import Path + import pytest -from horde_sdk.ai_horde_api import CancelImageGenerateRequest, ImageGenerateAsyncRequest, ImageGenerateAsyncResponse +from horde_sdk.ai_horde_api import ( + AllWorkersDetailsRequest, + AllWorkersDetailsResponse, + CancelImageGenerateRequest, + ImageGenerateAsyncRequest, + ImageGenerateAsyncResponse, +) from horde_sdk.ai_horde_api.ai_horde_client import AIHordeAPIClient +from horde_sdk.ai_horde_api.consts import WORKER_TYPE from horde_sdk.generic_api import RequestErrorResponse from horde_sdk.generic_api.apimodels import BaseResponse +from horde_sdk.generic_api.utils.swagger import SwaggerDoc + +_PRODUCTION_RESPONSES_FOLDER = Path(__file__).parent.parent / "test_data" / "ai_horde_api" / "production_responses" class TestAIHordeAPIClient: @@ -17,7 +29,7 @@ def default_image_gen_request(self) -> ImageGenerateAsyncRequest: def test_AIHordeAPIClient_init(self): AIHordeAPIClient() - def test_AIHordeAPIClient_async(self, default_image_gen_request: ImageGenerateAsyncRequest): + def test_generate_async(self, default_image_gen_request: ImageGenerateAsyncRequest): client = AIHordeAPIClient() api_response: ImageGenerateAsyncResponse | RequestErrorResponse = client.generate_image_async( @@ -39,4 +51,37 @@ def test_AIHordeAPIClient_async(self, default_image_gen_request: ImageGenerateAs "until it is finished, it times out or it is cancelled manually." ) - assert isinstance(cancel_response, CancelImageGenerateRequest.get_expected_response_type()) + assert isinstance(cancel_response, CancelImageGenerateRequest.get_success_response_type()) + + def test_workers_all(self): + client = AIHordeAPIClient() + + api_request = AllWorkersDetailsRequest(type=WORKER_TYPE.image) + + api_response = client.submit_request(api_request) + + if isinstance(api_response, RequestErrorResponse): + pytest.fail(f"API Response was an error: {api_response.message}") + + assert isinstance(api_response, AllWorkersDetailsResponse) + + assert len(api_response.workers) > 0 + + # Write the response to the production responses folder + status_response_pairs = AllWorkersDetailsRequest.get_success_status_response_pairs() + + if len(status_response_pairs) != 1: + raise ValueError("Expected exactly one success status code") + + status_code, _ = status_response_pairs.popitem() + + filename = SwaggerDoc.filename_from_endpoint_path( + endpoint_path=AllWorkersDetailsRequest.get_endpoint_subpath(), + http_method=AllWorkersDetailsRequest.get_http_method(), + http_status_code=status_code, + ) + filename = filename + "_production.json" + + _PRODUCTION_RESPONSES_FOLDER.mkdir(parents=True, exist_ok=True) + with open(_PRODUCTION_RESPONSES_FOLDER / filename, "w") as f: + f.write(api_response.to_json_horde_sdk_safe()) diff --git a/tests/ai_horde_api/test_dynamically_validate_against_swagger.py b/tests/ai_horde_api/test_dynamically_validate_against_swagger.py index a4d6581..c9955f3 100644 --- a/tests/ai_horde_api/test_dynamically_validate_against_swagger.py +++ b/tests/ai_horde_api/test_dynamically_validate_against_swagger.py @@ -1,6 +1,6 @@ import horde_sdk.ai_horde_api as ai_horde_api from horde_sdk.ai_horde_api.endpoints import get_ai_horde_swagger_url -from horde_sdk.consts import HTTPMethod +from horde_sdk.consts import HTTPMethod, HTTPStatusCode, get_all_success_status_codes from horde_sdk.generic_api._reflection import get_all_request_types from horde_sdk.generic_api.utils.swagger import ( SwaggerEndpoint, @@ -25,9 +25,11 @@ def test_all_ai_horde_model_defs_in_swagger() -> None: assert swagger_doc, "Failed to get SwaggerDoc" swagger_defined_models = swagger_doc.definitions.keys() - swagger_defined_examples: dict[ - str, dict[HTTPMethod, dict[str, object]] - ] = swagger_doc.extract_all_payload_examples() + swagger_defined_payload_examples: dict[str, dict[HTTPMethod, dict[str, object]]] + swagger_defined_payload_examples = swagger_doc.get_all_payload_examples() + + swagger_defined_response_examples: dict[str, dict[HTTPMethod, dict[HTTPStatusCode, dict[str, object] | list]]] + swagger_defined_response_examples = swagger_doc.get_all_response_examples() for request_type in all_request_types: endpoint_subpath = request_type.get_endpoint_subpath() @@ -61,4 +63,26 @@ def test_all_ai_horde_model_defs_in_swagger() -> None: assert endpoint_subpath in swagger_doc.paths, f"Missing {request_type.__name__} in swagger" - assert endpoint_subpath in swagger_defined_examples, f"Missing {request_type.__name__} in swagger examples" + assert ( + endpoint_subpath in swagger_defined_payload_examples + ), f"Missing {request_type.__name__} in swagger examples" + + all_http_method_examples = swagger_defined_response_examples.get(endpoint_subpath) + assert all_http_method_examples, f"Failed to get all HTTP method examples for {endpoint_subpath}" + + all_http_status_code_responses = all_http_method_examples.get(request_type.get_http_method()) + assert all_http_status_code_responses, f"Failed to get example response for {request_type.__name__}" + + success_http_status_codes = [ + success_code + for success_code in get_all_success_status_codes() + if success_code in all_http_status_code_responses + ] + assert ( + len(success_http_status_codes) > 0 + ), f"Failed to find any success status codes in {request_type.__name__}" + + for success_code in success_http_status_codes: + assert ( + success_code in request_type.get_success_status_response_pairs() + ), f"Missing success response type for {request_type.__name__} with status code {success_code}" diff --git a/tests/ai_horde_api/test_swagger.py b/tests/ai_horde_api/test_swagger.py index 64356dc..968dfff 100644 --- a/tests/ai_horde_api/test_swagger.py +++ b/tests/ai_horde_api/test_swagger.py @@ -34,12 +34,12 @@ def test_get_swagger_doc(): def test_extract_all_payload_examples() -> None: swagger_doc = SwaggerParser(get_ai_horde_swagger_url()).get_swagger_doc() - all_request_examples = swagger_doc.extract_all_payload_examples() + all_request_examples = swagger_doc.get_all_payload_examples() assert len(all_request_examples) > 0, "Failed to extract any examples from the swagger doc" def test_extract_all_response_examples() -> None: swagger_doc = SwaggerParser(get_ai_horde_swagger_url()).get_swagger_doc() - all_response_examples = swagger_doc.extract_all_response_examples() + all_response_examples = swagger_doc.get_all_response_examples() assert len(all_response_examples) > 0, "Failed to extract any examples from the swagger doc" diff --git a/tests/ratings_api/test_init.py b/tests/ratings_api/test_init.py index cf91dad..e69de29 100644 --- a/tests/ratings_api/test_init.py +++ b/tests/ratings_api/test_init.py @@ -1,6 +0,0 @@ -def test_init(): - pass - - -def test_init_meta(): - pass diff --git a/tests/test_data/ai_horde_api/example_payloads/_v2_generate_async_post.json b/tests/test_data/ai_horde_api/example_payloads/_v2_generate_async_post.json index 57ffabd..372f347 100644 --- a/tests/test_data/ai_horde_api/example_payloads/_v2_generate_async_post.json +++ b/tests/test_data/ai_horde_api/example_payloads/_v2_generate_async_post.json @@ -1,5 +1,38 @@ { - "prompt": "", + "prompt": "a", + "params": { + "sampler_name": "k_lms", + "cfg_scale": 7.5, + "denoising_strength": 0.75, + "seed": "The little seed that could", + "height": 512, + "width": 512, + "seed_variation": 1, + "post_processing": [], + "karras": false, + "tiling": false, + "hires_fix": false, + "clip_skip": 1, + "control_type": "canny", + "image_is_control": false, + "return_control_map": false, + "facefixer_strength": 0.75, + "loras": [ + { + "name": "GlowingRunesAIV6", + "model": 1.0, + "clip": 1.0, + "inject_trigger": "a" + } + ], + "special": { + "additionalProp1": {}, + "additionalProp2": {}, + "additionalProp3": {} + }, + "steps": 30, + "n": 1 + }, "nsfw": false, "trusted_workers": false, "slow_workers": true, diff --git a/tests/test_data/ai_horde_api/example_payloads/_v2_generate_rate_id_post.json b/tests/test_data/ai_horde_api/example_payloads/_v2_generate_rate_id_post.json index 88959f8..0d3a9a3 100644 --- a/tests/test_data/ai_horde_api/example_payloads/_v2_generate_rate_id_post.json +++ b/tests/test_data/ai_horde_api/example_payloads/_v2_generate_rate_id_post.json @@ -1,4 +1,10 @@ { "best": "6038971e-f0b0-4fdd-a3bb-148f561f815e", - "ratings": [] + "ratings": [ + { + "id": "6038971e-f0b0-4fdd-a3bb-148f561f815e", + "rating": 1.0, + "artifacts": 1 + } + ] } diff --git a/tests/test_data/ai_horde_api/example_payloads/_v2_generate_text_async_post.json b/tests/test_data/ai_horde_api/example_payloads/_v2_generate_text_async_post.json index c0709e2..989dd0c 100644 --- a/tests/test_data/ai_horde_api/example_payloads/_v2_generate_text_async_post.json +++ b/tests/test_data/ai_horde_api/example_payloads/_v2_generate_text_async_post.json @@ -1,6 +1,26 @@ { "prompt": "", - "softprompt": "", + "params": { + "n": 1, + "frmtadsnsp": false, + "frmtrmblln": false, + "frmtrmspch": false, + "frmttriminc": false, + "max_context_length": 1024, + "max_length": 80, + "rep_pen": 1.0, + "rep_pen_range": 0.0, + "rep_pen_slope": 0.0, + "singleline": false, + "temperature": 0.0, + "tfs": 0.0, + "top_a": 0.0, + "top_k": 0.0, + "top_p": 0.001, + "typical": 0.0, + "sampler_order": [] + }, + "softprompt": "a", "trusted_workers": false, "slow_workers": true, "workers": [], diff --git a/tests/test_data/ai_horde_api/example_payloads/_v2_interrogate_async_post.json b/tests/test_data/ai_horde_api/example_payloads/_v2_interrogate_async_post.json index d6bf6d9..4ea96dd 100644 --- a/tests/test_data/ai_horde_api/example_payloads/_v2_interrogate_async_post.json +++ b/tests/test_data/ai_horde_api/example_payloads/_v2_interrogate_async_post.json @@ -1,5 +1,14 @@ { - "forms": [], + "forms": [ + { + "name": "caption", + "payload": { + "additionalProp1": "", + "additionalProp2": "", + "additionalProp3": "" + } + } + ], "source_image": "", "slow_workers": true } diff --git a/tests/test_data/ai_horde_api/example_payloads/_v2_teams_post.json b/tests/test_data/ai_horde_api/example_payloads/_v2_teams_post.json index db68aa5..6fcae7c 100644 --- a/tests/test_data/ai_horde_api/example_payloads/_v2_teams_post.json +++ b/tests/test_data/ai_horde_api/example_payloads/_v2_teams_post.json @@ -1,4 +1,4 @@ { - "name": "", + "name": "aaa", "info": "Anarchy is emergent order." } diff --git a/tests/test_data/ai_horde_api/example_payloads/_v2_teams_team_id_patch.json b/tests/test_data/ai_horde_api/example_payloads/_v2_teams_team_id_patch.json index db68aa5..6fcae7c 100644 --- a/tests/test_data/ai_horde_api/example_payloads/_v2_teams_team_id_patch.json +++ b/tests/test_data/ai_horde_api/example_payloads/_v2_teams_team_id_patch.json @@ -1,4 +1,4 @@ { - "name": "", + "name": "aaa", "info": "Anarchy is emergent order." } diff --git a/tests/test_data/ai_horde_api/example_payloads/_v2_users_user_id_put.json b/tests/test_data/ai_horde_api/example_payloads/_v2_users_user_id_put.json index 6ae894b..4788c83 100644 --- a/tests/test_data/ai_horde_api/example_payloads/_v2_users_user_id_put.json +++ b/tests/test_data/ai_horde_api/example_payloads/_v2_users_user_id_put.json @@ -1,12 +1,12 @@ { "kudos": 0.0, - "concurrency": 0, - "usage_multiplier": 0.0, + "concurrency": 0.0, + "usage_multiplier": 0.1, "worker_invited": 0, "moderator": false, "public_workers": false, "monthly_kudos": 0, - "username": "", + "username": "aaa", "trusted": false, "flagged": false, "customizer": false, diff --git a/tests/test_data/ai_horde_api/example_payloads/_v2_workers_worker_id_put.json b/tests/test_data/ai_horde_api/example_payloads/_v2_workers_worker_id_put.json index 805ca2b..25dcd4e 100644 --- a/tests/test_data/ai_horde_api/example_payloads/_v2_workers_worker_id_put.json +++ b/tests/test_data/ai_horde_api/example_payloads/_v2_workers_worker_id_put.json @@ -2,7 +2,7 @@ "maintenance": false, "maintenance_msg": "", "paused": false, - "info": "", - "name": "", + "info": "aa", + "name": "aaaaa", "team": "0bed257b-e57c-4327-ac64-40cdfb1ac5e6" } diff --git a/tests/test_data/ai_horde_api/example_production_responses/_v2_workers_get_200.json b/tests/test_data/ai_horde_api/example_production_responses/_v2_workers_get_200.json new file mode 100644 index 0000000..fb0f7c1 --- /dev/null +++ b/tests/test_data/ai_horde_api/example_production_responses/_v2_workers_get_200.json @@ -0,0 +1,4831 @@ +[ + { + "requests_fulfilled": 31025, + "kudos_rewards": 1078488, + "kudos_details": { + "generated": 1068700, + "uptime": 9828 + }, + "performance": "2.5 megapixelsteps per second", + "threads": 1, + "uptime": 113090, + "maintenance_mode": false, + "nsfw": true, + "trusted": true, + "flagged": false, + "uncompleted_jobs": 1155, + "models": [ + "horde_special::stability.ai#6901", + "SDXL_beta::stability.ai#6901" + ], + "team": { + "name": null, + "id": null + }, + "bridge_agent": "AI Horde Worker:22:https://github.com/db0/AI-Horde-Worker", + "max_pixels": 4194304, + "megapixelsteps_generated": 1296478, + "img2img": true, + "painting": true, + "post-processing": true, + "lora": false, + "type": "image", + "name": "ControlNet_Worker_1", + "id": "4ed5fa6b-d043-4382-ba59-525358ffb982", + "online": true + }, + { + "requests_fulfilled": 30497, + "kudos_rewards": 1061729, + "kudos_details": { + "generated": 1052007, + "uptime": 9882 + }, + "performance": "2.5 megapixelsteps per second", + "threads": 1, + "uptime": 113053, + "maintenance_mode": false, + "nsfw": true, + "trusted": true, + "flagged": false, + "uncompleted_jobs": 1035, + "models": [ + "horde_special::stability.ai#6901", + "SDXL_beta::stability.ai#6901" + ], + "team": { + "name": null, + "id": null + }, + "bridge_agent": "AI Horde Worker:22:https://github.com/db0/AI-Horde-Worker", + "max_pixels": 4194304, + "megapixelsteps_generated": 1277117, + "img2img": true, + "painting": true, + "post-processing": true, + "lora": false, + "type": "image", + "name": "ControlNet_Worker_0", + "id": "49c3c471-b49e-4524-b7df-f34a992bbd68", + "online": true + }, + { + "requests_fulfilled": 40208, + "kudos_rewards": 1037568, + "kudos_details": { + "generated": 380336, + "uptime": 657232 + }, + "performance": "0.2 megapixelsteps per second", + "threads": 1, + "uptime": 8266208, + "maintenance_mode": false, + "nsfw": false, + "trusted": true, + "flagged": false, + "uncompleted_jobs": 876, + "models": [ + "Deliberate" + ], + "team": { + "name": null, + "id": null + }, + "bridge_agent": "SD-WebUI Stable Horde Worker Bridge:4:https://github.com/sdwebui-w-horde/sd-webui-stable-horde-worker", + "max_pixels": 589824, + "megapixelsteps_generated": 477517, + "img2img": true, + "painting": true, + "post-processing": true, + "lora": false, + "type": "image", + "name": "AASD02", + "id": "1d3ba385-904d-4f69-ab1a-f341c4c233d9", + "online": true + }, + { + "requests_fulfilled": 5700, + "kudos_rewards": 128468, + "kudos_details": { + "generated": 115092, + "uptime": 13376 + }, + "performance": "0.3 megapixelsteps per second", + "threads": 1, + "uptime": 150175, + "maintenance_mode": false, + "nsfw": true, + "trusted": true, + "flagged": false, + "uncompleted_jobs": 9, + "models": [ + "Deliberate", + "Anything Diffusion", + "GuoFeng" + ], + "team": { + "name": null, + "id": null + }, + "bridge_agent": "AI Horde Worker:23:https://github.com/db0/AI-Horde-Worker", + "max_pixels": 720896, + "megapixelsteps_generated": 102648, + "img2img": true, + "painting": false, + "post-processing": false, + "lora": false, + "type": "image", + "name": "SweetSunnyBunsWorker", + "id": "b456aae0-33ad-48a7-a9d1-72e6445a1016", + "online": true + }, + { + "requests_fulfilled": 10446, + "kudos_rewards": 167293, + "kudos_details": { + "generated": 150511, + "uptime": 16796 + }, + "performance": "0.2 megapixelsteps per second", + "threads": 1, + "uptime": 204262, + "maintenance_mode": false, + "nsfw": true, + "trusted": true, + "flagged": false, + "uncompleted_jobs": 33, + "models": [ + "Deliberate" + ], + "team": { + "name": null, + "id": null + }, + "bridge_agent": "AI Horde Worker:23:https://github.com/db0/AI-Horde-Worker", + "max_pixels": 720896, + "megapixelsteps_generated": 145200, + "img2img": true, + "painting": false, + "post-processing": false, + "lora": false, + "type": "image", + "name": "Workaholic 1", + "id": "3d66e116-fd92-4042-bafb-7d16a81500f5", + "online": true + }, + { + "requests_fulfilled": 65756, + "kudos_rewards": 850300, + "kudos_details": { + "generated": 771247, + "uptime": 79126 + }, + "performance": "0.2 megapixelsteps per second", + "threads": 1, + "uptime": 957446, + "maintenance_mode": false, + "nsfw": true, + "trusted": true, + "flagged": false, + "uncompleted_jobs": 217, + "models": [ + "Deliberate" + ], + "team": { + "name": null, + "id": null + }, + "bridge_agent": "AI Horde Worker:23:https://github.com/db0/AI-Horde-Worker", + "max_pixels": 720896, + "megapixelsteps_generated": 788417, + "img2img": true, + "painting": false, + "post-processing": false, + "lora": false, + "type": "image", + "name": "mokomomo", + "id": "ae700eb4-e5ce-411a-962d-c0807baed5d4", + "online": true + }, + { + "requests_fulfilled": 52428, + "kudos_rewards": 639341, + "kudos_details": { + "generated": 573813, + "uptime": 65636 + }, + "performance": "0.3 megapixelsteps per second", + "threads": 1, + "uptime": 721026, + "maintenance_mode": false, + "nsfw": true, + "trusted": true, + "flagged": false, + "uncompleted_jobs": 162, + "models": [ + "Deliberate" + ], + "team": { + "name": null, + "id": null + }, + "bridge_agent": "AI Horde Worker:23:https://github.com/db0/AI-Horde-Worker", + "max_pixels": 720896, + "megapixelsteps_generated": 622517, + "img2img": true, + "painting": false, + "post-processing": false, + "lora": false, + "type": "image", + "name": "GCA271", + "id": "e62c2c79-6b50-4e72-86e9-47689d87a249", + "online": true + }, + { + "requests_fulfilled": 262322, + "kudos_rewards": 3219920, + "kudos_details": { + "generated": 2928713, + "uptime": 292606 + }, + "performance": "0.2 megapixelsteps per second", + "threads": 1, + "uptime": 3407423, + "maintenance_mode": false, + "nsfw": true, + "trusted": true, + "flagged": false, + "uncompleted_jobs": 1222, + "models": [ + "Deliberate" + ], + "team": { + "name": null, + "id": null + }, + "bridge_agent": "AI Horde Worker:23:https://github.com/db0/AI-Horde-Worker", + "max_pixels": 720896, + "megapixelsteps_generated": 3167043, + "img2img": true, + "painting": false, + "post-processing": false, + "lora": false, + "type": "image", + "name": "Hopes and Dreams", + "id": "e5476356-b5ce-40d5-8e78-c24ec3619b40", + "online": true + }, + { + "requests_fulfilled": 68401, + "kudos_rewards": 1105132, + "kudos_details": { + "generated": 953830, + "uptime": 151578 + }, + "performance": "0.8 megapixelsteps per second", + "threads": 1, + "uptime": 1724434, + "maintenance_mode": false, + "nsfw": true, + "trusted": true, + "flagged": false, + "uncompleted_jobs": 88, + "models": [ + "Deliberate", + "Anything Diffusion" + ], + "team": { + "name": null, + "id": null + }, + "bridge_agent": "AI Horde Worker:21:https://github.com/db0/AI-Horde-Worker", + "max_pixels": 262144, + "megapixelsteps_generated": 671890, + "img2img": true, + "painting": true, + "post-processing": true, + "lora": false, + "type": "image", + "name": "Infermatic.ai4", + "id": "029c8bd9-69b6-42eb-b5f3-f34525b56d4b", + "online": true + }, + { + "requests_fulfilled": 10792, + "kudos_rewards": 263316, + "kudos_details": { + "generated": 189344, + "uptime": 74014 + }, + "performance": "0.3 megapixelsteps per second", + "threads": 1, + "uptime": 568579, + "maintenance_mode": false, + "nsfw": true, + "trusted": true, + "flagged": false, + "uncompleted_jobs": 203, + "models": [ + "ICBINP - I Can't Believe It's Not Photography", + "stable_diffusion", + "Lyriel", + "Deliberate" + ], + "team": { + "name": "🔥🔥🐲 MalingeDragons 🔥🔥🐲", + "id": "644218d5-a85e-41a1-9b84-463d5e3499bf" + }, + "bridge_agent": "AI Horde Worker:22:https://github.com/db0/AI-Horde-Worker", + "max_pixels": 262144, + "megapixelsteps_generated": 141613, + "img2img": true, + "painting": true, + "post-processing": true, + "lora": true, + "type": "image", + "name": "MalingeDreamer", + "id": "6d0b5c21-6de7-4101-a8e7-e83b6cd19101", + "online": true + }, + { + "requests_fulfilled": 110063, + "kudos_rewards": 1511924, + "kudos_details": { + "generated": 1144011, + "uptime": 368000 + }, + "performance": "0.8 megapixelsteps per second", + "threads": 1, + "uptime": 3461037, + "maintenance_mode": false, + "nsfw": true, + "trusted": true, + "flagged": false, + "uncompleted_jobs": 1148, + "models": [ + "waifu_diffusion", + "CyriousMix", + "ToonYou", + "stable_diffusion_2.1", + "Hassaku", + "GhostMix", + "Aurora", + "Anything v5", + "Pastel Mix", + "Anime Pencil Diffusion", + "Anything v3", + "Rev Animated", + "Laolei New Berry Protogen Mix", + "Dark Sushi Mix", + "Western Animation Diffusion", + "MeinaMix", + "Abyss OrangeMix", + "stable_diffusion", + "Anything Diffusion", + "Grapefruit Hentai", + "Counterfeit", + "Elysium Anime", + "Something", + "AnyLoRA" + ], + "team": { + "name": null, + "id": null + }, + "bridge_agent": "SD-WebUI Stable Horde Worker Bridge:4:https://github.com/sdwebui-w-horde/sd-webui-stable-horde-worker", + "max_pixels": 1048576, + "megapixelsteps_generated": 1489364, + "img2img": true, + "painting": true, + "post-processing": true, + "lora": false, + "type": "image", + "name": "Mikroprozessor", + "id": "9a2633cd-ab27-4c73-a34f-1e8233df14e2", + "online": true + }, + { + "requests_fulfilled": 16913, + "kudos_rewards": 265380, + "kudos_details": { + "generated": 237456, + "uptime": 27976 + }, + "performance": "0.2 megapixelsteps per second", + "threads": 1, + "uptime": 334941, + "maintenance_mode": false, + "nsfw": true, + "trusted": true, + "flagged": false, + "uncompleted_jobs": 44, + "models": [ + "Deliberate" + ], + "team": { + "name": null, + "id": null + }, + "bridge_agent": "AI Horde Worker:23:https://github.com/db0/AI-Horde-Worker", + "max_pixels": 720896, + "megapixelsteps_generated": 234297, + "img2img": true, + "painting": false, + "post-processing": false, + "lora": false, + "type": "image", + "name": "Workaholic 3", + "id": "84146abf-5c47-4a93-af23-79c8f7ed6fc6", + "online": true + }, + { + "requests_fulfilled": 167282, + "kudos_rewards": 4381361, + "kudos_details": { + "generated": 3912326, + "uptime": 469202 + }, + "performance": "0.5 megapixelsteps per second", + "threads": 1, + "uptime": 4248423, + "maintenance_mode": false, + "info": "3060 12gb", + "nsfw": true, + "trusted": true, + "flagged": false, + "uncompleted_jobs": 1236, + "models": [ + "Deliberate" + ], + "team": { + "name": null, + "id": null + }, + "bridge_agent": "AI Horde Worker:23:https://github.com/db0/AI-Horde-Worker", + "max_pixels": 1048576, + "megapixelsteps_generated": 3442060, + "img2img": true, + "painting": true, + "post-processing": true, + "lora": true, + "type": "image", + "name": "glippy", + "id": "6e337380-9820-4d99-a154-e34867e7e724", + "online": true + }, + { + "requests_fulfilled": 58227, + "kudos_rewards": 2168581, + "kudos_details": { + "generated": 2026898, + "uptime": 141908 + }, + "performance": "0.7 megapixelsteps per second", + "threads": 1, + "uptime": 1728662, + "maintenance_mode": false, + "nsfw": true, + "trusted": true, + "flagged": false, + "uncompleted_jobs": 28, + "models": [ + "Deliberate" + ], + "team": { + "name": null, + "id": null + }, + "bridge_agent": "AI Horde Worker:22:https://github.com/db0/AI-Horde-Worker", + "max_pixels": 1048576, + "megapixelsteps_generated": 1498623, + "img2img": true, + "painting": false, + "post-processing": true, + "lora": false, + "type": "image", + "name": "pawkygame_3060 Dreamer", + "id": "1051dd84-b3ad-4760-81ee-734d659a5df0", + "online": true + }, + { + "requests_fulfilled": 23647, + "kudos_rewards": 369918, + "kudos_details": { + "generated": 327400, + "uptime": 42730 + }, + "performance": "0.2 megapixelsteps per second", + "threads": 1, + "uptime": 454497, + "maintenance_mode": false, + "nsfw": true, + "trusted": true, + "flagged": false, + "uncompleted_jobs": 69, + "models": [ + "Deliberate" + ], + "team": { + "name": "🔥🔥🐲 MalingeDragons 🔥🔥🐲", + "id": "644218d5-a85e-41a1-9b84-463d5e3499bf" + }, + "bridge_agent": "AI Horde Worker:23:https://github.com/db0/AI-Horde-Worker", + "max_pixels": 720896, + "megapixelsteps_generated": 322221, + "img2img": true, + "painting": false, + "post-processing": false, + "lora": false, + "type": "image", + "name": "MalingeSlave1", + "id": "4d4a8c83-2ff7-4495-b233-40e7afba7687", + "online": true + }, + { + "requests_fulfilled": 70564, + "kudos_rewards": 1134797, + "kudos_details": { + "generated": 983552, + "uptime": 151362 + }, + "performance": "1.1 megapixelsteps per second", + "threads": 1, + "uptime": 1724362, + "maintenance_mode": false, + "nsfw": true, + "trusted": true, + "flagged": false, + "uncompleted_jobs": 90, + "models": [ + "Deliberate", + "Anything Diffusion" + ], + "team": { + "name": null, + "id": null + }, + "bridge_agent": "AI Horde Worker:21:https://github.com/db0/AI-Horde-Worker", + "max_pixels": 262144, + "megapixelsteps_generated": 693919, + "img2img": true, + "painting": true, + "post-processing": true, + "lora": false, + "type": "image", + "name": "Infermatic.ai09", + "id": "667bffdd-c8c5-49bc-b374-130beac76734", + "online": true + }, + { + "requests_fulfilled": 478320, + "kudos_rewards": 9954251, + "kudos_details": { + "generated": 8419716, + "uptime": 1536456 + }, + "performance": "0.5 megapixelsteps per second", + "threads": 1, + "uptime": 7634959, + "maintenance_mode": false, + "nsfw": true, + "trusted": true, + "flagged": false, + "uncompleted_jobs": 3345, + "models": [ + "Disney Pixar Cartoon Type A", + "Furry Epoch", + "Woop-Woop Photo", + "Hentai Diffusion", + "Dreamlike Photoreal", + "Anything Diffusion", + "Grapefruit Hentai", + "GuoFeng", + "RCNZ Gorilla With A Brick", + "Edge Of Realism", + "Western Animation Diffusion", + "ChilloutMix", + "Liberty", + "DucHaiten", + "Epic Diffusion", + "Dark Sushi Mix", + "Fluffusion", + "Graphic-Art", + "GorynichMix", + "CamelliaMix 2.5D", + "Dreamlike Diffusion", + "TrexMix", + "URPM", + "waifu_diffusion", + "PFG", + "Counterfeit", + "BB95 Furry Mix", + "ICBINP - I Can't Believe It's Not Photography", + "Anything Diffusion Inpainting", + "Deliberate Inpainting", + "stable_diffusion_2.1", + "FaeTastic", + "Anything v3", + "Realistic Vision Inpainting", + "Reliberate", + "Zack3D", + "NeverEnding Dream", + "RPG", + "Anything v5", + "ACertainThing", + "Henmix Real", + "AbyssOrangeMix-AfterDark", + "stable_diffusion_inpainting", + "majicMIX realistic", + "AnyLoRA", + "Epic Diffusion Inpainting", + "Realistic Vision", + "Healy's Anime Blend", + "ToonYou", + "3DKX", + "Pretty 2.5D", + "GTA5 Artwork Diffusion", + "CyriousMix", + "Experience", + "Mistoon Amethyst", + "Rev Animated", + "Perfect World", + "stable_diffusion", + "Laolei New Berry Protogen Mix", + "Dreamshaper", + "Dungeons n Waifus", + "Something", + "Realism Engine", + "Abyss OrangeMix", + "MeinaMix", + "Elysium Anime", + "DreamShaper Inpainting", + "Hassaku", + "iCoMix", + "Lawlas's yiff mix", + "CyberRealistic", + "RealBiter", + "MoistMix", + "Realisian", + "Lyriel", + "BRA", + "Pastel Mix", + "Jim Eidomode", + "Aurora", + "Yiffy", + "Cheese Daddys Landscape Mix", + "Analog Diffusion", + "Cetus-Mix", + "Arcane Diffusion", + "Uhmami", + "Project Unreal Engine 5", + "Eimis Anime Diffusion", + "Zeipher Female Model", + "Deliberate" + ], + "team": { + "name": null, + "id": null + }, + "bridge_agent": "AI Horde Worker:23:https://github.com/db0/AI-Horde-Worker", + "max_pixels": 1048576, + "megapixelsteps_generated": 8160457, + "img2img": true, + "painting": true, + "post-processing": true, + "lora": true, + "type": "image", + "name": "zoro221", + "id": "60cbb469-6a2d-43e3-8392-7255e4956fab", + "online": true + }, + { + "requests_fulfilled": 681853, + "kudos_rewards": 9095738, + "kudos_details": { + "generated": 8311144, + "uptime": 786316 + }, + "performance": "0.9 megapixelsteps per second", + "threads": 1, + "uptime": 9126936, + "maintenance_mode": false, + "info": "Titan V 12GB x4, Xeon Gold 6258R x2, 192GB", + "nsfw": true, + "trusted": true, + "flagged": false, + "uncompleted_jobs": 2177, + "models": [ + "Movie Diffusion", + "Robo-Diffusion", + "Deliberate", + "OpenJourney Diffusion", + "Anything Diffusion" + ], + "team": { + "name": null, + "id": null + }, + "bridge_agent": "AI Horde Worker:23:https://github.com/db0/AI-Horde-Worker", + "max_pixels": 393216, + "megapixelsteps_generated": 8008791, + "img2img": true, + "painting": true, + "post-processing": true, + "lora": false, + "type": "image", + "name": "JBertok-TitanV-3", + "id": "b04c21d9-a714-4c33-b754-cdd03d7ee603", + "online": true + }, + { + "requests_fulfilled": 16794, + "kudos_rewards": 235126, + "kudos_details": { + "generated": 210270, + "uptime": 24856 + }, + "performance": "0.2 megapixelsteps per second", + "threads": 1, + "uptime": 272318, + "maintenance_mode": false, + "nsfw": true, + "trusted": true, + "flagged": false, + "uncompleted_jobs": 49, + "models": [ + "Deliberate" + ], + "team": { + "name": null, + "id": null + }, + "bridge_agent": "AI Horde Worker:23:https://github.com/db0/AI-Horde-Worker", + "max_pixels": 720896, + "megapixelsteps_generated": 207444, + "img2img": true, + "painting": false, + "post-processing": false, + "lora": false, + "type": "image", + "name": "Leobot", + "id": "11228287-22c6-49b2-8625-b0437476ed9d", + "online": true + }, + { + "requests_fulfilled": 15432, + "kudos_rewards": 240814, + "kudos_details": { + "generated": 215386, + "uptime": 25428 + }, + "performance": "0.2 megapixelsteps per second", + "threads": 1, + "uptime": 306018, + "maintenance_mode": false, + "nsfw": true, + "trusted": true, + "flagged": false, + "uncompleted_jobs": 45, + "models": [ + "Deliberate" + ], + "team": { + "name": null, + "id": null + }, + "bridge_agent": "AI Horde Worker:23:https://github.com/db0/AI-Horde-Worker", + "max_pixels": 720896, + "megapixelsteps_generated": 211807, + "img2img": true, + "painting": false, + "post-processing": false, + "lora": false, + "type": "image", + "name": "Workaholic 2", + "id": "5d13f6ee-b15b-4ea1-8800-3397c9767993", + "online": true + }, + { + "requests_fulfilled": 7738, + "kudos_rewards": 122590, + "kudos_details": { + "generated": 107724, + "uptime": 14866 + }, + "performance": "0.2 megapixelsteps per second", + "threads": 1, + "uptime": 161219, + "maintenance_mode": false, + "nsfw": true, + "trusted": true, + "flagged": false, + "uncompleted_jobs": 28, + "models": [ + "Deliberate" + ], + "team": { + "name": "🔥🔥🐲 MalingeDragons 🔥🔥🐲", + "id": "644218d5-a85e-41a1-9b84-463d5e3499bf" + }, + "bridge_agent": "AI Horde Worker:23:https://github.com/db0/AI-Horde-Worker", + "max_pixels": 720896, + "megapixelsteps_generated": 104152, + "img2img": true, + "painting": false, + "post-processing": false, + "lora": false, + "type": "image", + "name": "MalingeSlave4", + "id": "0b93830f-a583-4b62-a476-5649a7461c1b", + "online": true + }, + { + "requests_fulfilled": 167089, + "kudos_rewards": 6586345, + "kudos_details": { + "generated": 4452179, + "uptime": 2135442 + }, + "performance": "0.7 megapixelsteps per second", + "threads": 1, + "uptime": 2507828, + "maintenance_mode": false, + "info": "RTX 3090 undervolted and drawing 260 watts max.", + "nsfw": true, + "trusted": true, + "flagged": false, + "uncompleted_jobs": 1019, + "models": [ + "CyberRealistic", + "PVC", + "Anything Diffusion Inpainting", + "Henmix Real", + "DucHaiten", + "Elldreth's Lucid Mix", + "Yiffy", + "JWST Deep Space Diffusion", + "Deliberate", + "HRL", + "Protogen Infinity", + "DucHaiten Classic Anime", + "GhostMix", + "Ether Real Mix", + "Protogen Anime", + "Jim Eidomode", + "Microcritters", + "Lawlas's yiff mix", + "Smoke Diffusion", + "Poison", + "Inkpunk Diffusion", + "Eimis Anime Diffusion", + "SynthwavePunk", + "ExpMix Line", + "Rainbowpatch", + "stable_diffusion_inpainting", + "Cetus-Mix", + "Ghibli Diffusion", + "VinteProtogenMix", + "Future Diffusion", + "ChilloutMix", + "RCNZ Dumb Monkey", + "Epic Diffusion Inpainting", + "Unstable Ink Dream", + "Dark Sushi Mix", + "Real Dos Mix", + "Papercut Diffusion", + "Abyss OrangeMix", + "FaeTastic", + "Anime Pencil Diffusion", + "trinart", + "Analog Madness", + "RealBiter", + "Char", + "Valorant Diffusion", + "Voxel Art Diffusion", + "PortraitPlus", + "PIXHELL", + "Robo-Diffusion", + "Anything Diffusion", + "ModernArt Diffusion", + "MeinaMix", + "Rachel Walker Watercolors", + "Papercutcraft", + "Deliberate Inpainting", + "stable_diffusion", + "ToonYou", + "Microcasing", + "SweetBoys 2D", + "Van Gogh Diffusion", + "Microscopic", + "Graphic-Art", + "Ranma Diffusion", + "ChromaV5", + "HASDX", + "Ultraskin", + "Woop-Woop Photo", + "ProtoGen", + "Anygen", + "ACertainThing", + "Korestyle", + "vectorartz", + "PRMJ", + "Sygil-Dev Diffusion", + "Elysium Anime", + "Microworlds", + "Dungeons and Diffusion", + "Openniji", + "526Mix-Animated", + "Eternos", + "Uhmami", + "Babes", + "CharHelper", + "Vivid Watercolors", + "Elldreths Retro Mix", + "Supermarionation", + "PPP", + "Midjourney PaintArt", + "Squishmallow Diffusion", + "Pokemon3D", + "Coloring Book", + "Darkest Diffusion", + "Seek.art MEGA", + "Sonic Diffusion", + "T-Shirt Diffusion", + "URPM", + "BubblyDubbly", + "Galena Redux", + "Tron Legacy Diffusion", + "Project Unreal Engine 5", + "DreamLikeSamKuvshinov", + "NeverEnding Dream", + "Redshift Diffusion", + "Realisian", + "AnyLoRA", + "Colorful", + "CamelliaMix 2.5D", + "DnD Map Generator", + "Nitro Diffusion", + "Mistoon Amethyst", + "Mega Merge Diffusion", + "OrbAI", + "Disney Pixar Cartoon Type A", + "Art Of Mtg", + "Kenshi", + "Anything v5", + "Dreamlike Diffusion", + "Experience", + "Cyberpunk Anime Diffusion", + "Zelda BOTW", + "Lyriel", + "Edge Of Realism", + "Funko Diffusion", + "Hassaku", + "Marvel Diffusion", + "Dreamlike Photoreal", + "Liberty", + "Wavyfusion", + "Laolei New Berry Protogen Mix", + "Illuminati Diffusion", + "iCoMix Inpainting", + "PFG", + "Analog Diffusion", + "Asim Simpsons", + "GuFeng", + "Western Animation Diffusion", + "Balloon Art", + "Trinart Characters", + "Anything v3", + "Synthwave", + "Zack3D", + "Dark Victorian Diffusion", + "CyriousMix", + "GorynichMix", + "GuoFeng", + "Aurora", + "Cheese Daddys Landscape Mix", + "Clazy", + "TrexMix", + "JoMad Diffusion", + "Dreamshaper", + "FKing SciFi", + "RPG", + "A-Zovya RPG Inpainting", + "Dungeons n Waifus", + "Furry Epoch", + "3DKX", + "Knollingcase", + "mo-di-diffusion", + "Classic Animation Diffusion", + "MoistMix", + "Zeipher Female Model", + "DGSpitzer Art Diffusion", + "Realistic Vision", + "Concept Sheet", + "BPModel", + "BB95 Furry Mix", + "MoonMix Fantasy", + "Vintedois Diffusion", + "ICBINP - I Can't Believe It's Not Photography", + "Vector Art", + "Dan Mumford Style", + "Fluffusion", + "AIO Pixel Art", + "Samaritan 3d Cartoon", + "Realism Engine", + "DreamShaper Inpainting", + "Rodent Diffusion", + "Double Exposure Diffusion", + "UMI Olympus", + "Reliberate", + "Rev Animated", + "Hentai Diffusion", + "SD-Silicon", + "OpenJourney Diffusion", + "iCoMix", + "Sci-Fi Diffusion", + "Microchars", + "majicMIX realistic", + "RCNZ Gorilla With A Brick", + "Epic Diffusion", + "stable_diffusion_2.1", + "waifu_diffusion", + "kurzgesagt", + "Counterfeit", + "GTA5 Artwork Diffusion", + "Neurogen", + "Borderlands", + "Xynthii-Diffusion", + "Samdoesarts Ultmerge", + "Disco Elysium", + "Realistic Vision Inpainting", + "Pretty 2.5D", + "DnD Item", + "Spider-Verse Diffusion", + "Movie Diffusion", + "Perfect World", + "Pulp Vector Art", + "Hassanblend", + "Arcane Diffusion", + "Grapefruit Hentai", + "Fantasy Card Diffusion", + "Elden Ring Diffusion", + "Moedel", + "T-Shirt Print Designs", + "Comic-Diffusion", + "Guohua Diffusion", + "Pastel Mix", + "Min Illust Background", + "Healy's Anime Blend", + "A to Zovya RPG", + "Something", + "App Icon Diffusion", + "BweshMix", + "Archer Diffusion" + ], + "team": { + "name": null, + "id": null + }, + "bridge_agent": "AI Horde Worker:23:https://github.com/db0/AI-Horde-Worker", + "max_pixels": 2359296, + "megapixelsteps_generated": 3986230, + "img2img": true, + "painting": true, + "post-processing": true, + "lora": true, + "type": "image", + "name": "Fox's Desktop - 3090 - Main Branch", + "id": "3fd1899a-76d2-463c-b9c5-69f1c9aa5380", + "online": true + }, + { + "requests_fulfilled": 303175, + "kudos_rewards": 3914223, + "kudos_details": { + "generated": 3625361, + "uptime": 289170 + }, + "performance": "0.7 megapixelsteps per second", + "threads": 1, + "uptime": 3262840, + "maintenance_mode": false, + "nsfw": true, + "trusted": true, + "flagged": false, + "uncompleted_jobs": 105, + "models": [ + "Deliberate", + "Anything Diffusion" + ], + "team": { + "name": null, + "id": null + }, + "bridge_agent": "AI Horde Worker:21:https://github.com/db0/AI-Horde-Worker", + "max_pixels": 262144, + "megapixelsteps_generated": 2694222, + "img2img": true, + "painting": true, + "post-processing": true, + "lora": false, + "type": "image", + "name": "Infermatic.ai03", + "id": "cf1fae07-f72d-4f47-9612-89b8634149dd", + "online": true + }, + { + "requests_fulfilled": 4241, + "kudos_rewards": 74409, + "kudos_details": { + "generated": 66407, + "uptime": 8008 + }, + "performance": "0.2 megapixelsteps per second", + "threads": 1, + "uptime": 99796, + "maintenance_mode": false, + "nsfw": true, + "trusted": true, + "flagged": false, + "uncompleted_jobs": 18, + "models": [ + "Deliberate" + ], + "team": { + "name": "🔥🔥🐲 MalingeDragons 🔥🔥🐲", + "id": "644218d5-a85e-41a1-9b84-463d5e3499bf" + }, + "bridge_agent": "AI Horde Worker:23:https://github.com/db0/AI-Horde-Worker", + "max_pixels": 720896, + "megapixelsteps_generated": 60626, + "img2img": true, + "painting": false, + "post-processing": false, + "lora": false, + "type": "image", + "name": "MalingeSlave3", + "id": "24990bf2-9caa-47ea-917d-d64470935f40", + "online": true + }, + { + "requests_fulfilled": 659645, + "kudos_rewards": 8588485, + "kudos_details": { + "generated": 7779140, + "uptime": 811418 + }, + "performance": "1.2 megapixelsteps per second", + "threads": 1, + "uptime": 8929007, + "maintenance_mode": false, + "info": "Titan V 12GB x4, Xeon Gold 6258R x2, 192GB", + "nsfw": true, + "trusted": true, + "flagged": false, + "uncompleted_jobs": 4223, + "models": [ + "Deliberate", + "Anything Diffusion", + "mo-di-diffusion", + "Movie Diffusion" + ], + "team": { + "name": null, + "id": null + }, + "bridge_agent": "AI Horde Worker:23:https://github.com/db0/AI-Horde-Worker", + "max_pixels": 393216, + "megapixelsteps_generated": 7585690, + "img2img": true, + "painting": true, + "post-processing": true, + "lora": false, + "type": "image", + "name": "JBertok-TitanV-2", + "id": "ec06eeb7-4c6a-43e3-8eaf-d28799530964", + "online": true + }, + { + "requests_fulfilled": 27823, + "kudos_rewards": 364609, + "kudos_details": { + "generated": 326937, + "uptime": 37786 + }, + "performance": "0.4 megapixelsteps per second", + "threads": 1, + "uptime": 412858, + "maintenance_mode": false, + "nsfw": true, + "trusted": true, + "flagged": false, + "uncompleted_jobs": 88, + "models": [ + "Deliberate" + ], + "team": { + "name": null, + "id": null + }, + "bridge_agent": "AI Horde Worker:23:https://github.com/db0/AI-Horde-Worker", + "max_pixels": 720896, + "megapixelsteps_generated": 351306, + "img2img": true, + "painting": false, + "post-processing": false, + "lora": false, + "type": "image", + "name": "Pizza delivery tonight, yes? - Your uncle", + "id": "eb4cee37-2d18-43ab-984a-1f2c9c4379ca", + "online": true + }, + { + "requests_fulfilled": 98, + "kudos_rewards": 5727, + "kudos_details": { + "generated": 5207, + "uptime": 520 + }, + "performance": "0.2 megapixelsteps per second", + "threads": 1, + "uptime": 6766, + "maintenance_mode": false, + "nsfw": true, + "trusted": false, + "flagged": false, + "uncompleted_jobs": 0, + "models": [ + "Deliberate" + ], + "team": { + "name": null, + "id": null + }, + "bridge_agent": "AI Horde Worker:23:https://github.com/db0/AI-Horde-Worker", + "max_pixels": 720896, + "megapixelsteps_generated": 2790, + "img2img": true, + "painting": false, + "post-processing": false, + "lora": false, + "type": "image", + "name": "epic1234", + "id": "4217d66f-2b97-49db-a43b-e871191bd67d", + "online": true + }, + { + "requests_fulfilled": 625179, + "kudos_rewards": 9194990, + "kudos_details": { + "generated": 8442795, + "uptime": 754040 + }, + "performance": "1.2 megapixelsteps per second", + "threads": 1, + "uptime": 8764217, + "maintenance_mode": false, + "info": "Titan V 12GB x4, Xeon 6258R x2, 192GB", + "nsfw": true, + "trusted": true, + "flagged": false, + "uncompleted_jobs": 2615, + "models": [ + "Deliberate", + "Anything Diffusion", + "Robo-Diffusion", + "OpenJourney Diffusion", + "Movie Diffusion" + ], + "team": { + "name": null, + "id": null + }, + "bridge_agent": "AI Horde Worker:23:https://github.com/db0/AI-Horde-Worker", + "max_pixels": 393216, + "megapixelsteps_generated": 8113639, + "img2img": true, + "painting": true, + "post-processing": true, + "lora": false, + "type": "image", + "name": "JBertok-TitanV-1", + "id": "645c3e0a-01ac-4804-90ad-a5c479a56d5e", + "online": true + }, + { + "requests_fulfilled": 463955, + "kudos_rewards": 10494011, + "kudos_details": { + "generated": 10021678, + "uptime": 522804 + }, + "performance": "1.0 megapixelsteps per second", + "threads": 1, + "uptime": 4474550, + "maintenance_mode": false, + "nsfw": true, + "trusted": true, + "flagged": false, + "uncompleted_jobs": 585, + "models": [ + "Epic Diffusion Inpainting", + "Realistic Vision", + "Eternos", + "Disney Pixar Cartoon Type A", + "ToonYou", + "GTA5 Artwork Diffusion", + "Mistoon Amethyst", + "Hentai Diffusion", + "ICBINP - I Can't Believe It's Not Photography", + "Rev Animated", + "Perfect World", + "MoistMix", + "Deliberate Inpainting", + "Anything Diffusion Inpainting", + "iCoMix Inpainting", + "FaeTastic", + "Realistic Vision Inpainting", + "PIXHELL", + "Dungeons n Waifus", + "RCNZ Gorilla With A Brick", + "Jim Eidomode", + "Western Animation Diffusion", + "ChilloutMix", + "Reliberate", + "kurzgesagt", + "Epic Diffusion", + "SynthwavePunk", + "DreamShaper Inpainting", + "CamelliaMix 2.5D", + "Dreamlike Diffusion", + "Pulp Vector Art", + "Deliberate", + "PFG" + ], + "team": { + "name": null, + "id": null + }, + "bridge_agent": "AI Horde Worker:23:https://github.com/db0/AI-Horde-Worker", + "max_pixels": 1310720, + "megapixelsteps_generated": 9226711, + "img2img": true, + "painting": true, + "post-processing": true, + "lora": true, + "type": "image", + "name": "AiBrush-2", + "id": "0d825711-dd8c-4007-8849-4d172c920de5", + "online": true + }, + { + "requests_fulfilled": 828797, + "kudos_rewards": 17687725, + "kudos_details": { + "generated": 14223560, + "uptime": 3473298 + }, + "performance": "0.7 megapixelsteps per second", + "threads": 1, + "uptime": 7063241, + "maintenance_mode": false, + "info": "RTX 3080, 32GB RAM, i9-11900k, NVME.", + "nsfw": true, + "trusted": true, + "flagged": false, + "uncompleted_jobs": 706, + "models": [ + "BubblyDubbly", + "Lyriel", + "DreamLikeSamKuvshinov", + "DucHaiten", + "FKing SciFi", + "mo-di-diffusion", + "Sygil-Dev Diffusion", + "Marvel Diffusion", + "3DKX", + "PFG", + "GuFeng", + "Pastel Mix", + "Samaritan 3d Cartoon", + "Squishmallow Diffusion", + "BRA", + "DucHaiten Classic Anime", + "CamelliaMix 2.5D", + "Double Exposure Diffusion", + "Art Of Mtg", + "Asim Simpsons", + "Protogen Infinity", + "Nitro Diffusion", + "Zack3D", + "Real Dos Mix", + "Unstable Ink Dream", + "Fluffusion", + "Cetus-Mix", + "Inkpunk Diffusion", + "Jim Eidomode", + "Grapefruit Hentai", + "Zeipher Female Model", + "Robo-Diffusion", + "Balloon Art", + "NeverEnding Dream", + "Realisian", + "Pretty 2.5D", + "Epic Diffusion", + "Elden Ring Diffusion", + "DGSpitzer Art Diffusion", + "Dungeons n Waifus", + "Moedel", + "ProtoGen", + "ICBINP - I Can't Believe It's Not Photography", + "Borderlands", + "Sonic Diffusion", + "Epic Diffusion Inpainting", + "Ultraskin", + "CyberRealistic", + "Movie Diffusion", + "RealBiter", + "stable_diffusion_inpainting", + "MeinaMix", + "Rev Animated", + "Henmix Real", + "Woop-Woop Photo", + "Hassaku", + "Papercut Diffusion", + "RPG", + "HASDX", + "Experience", + "kurzgesagt", + "Comic-Diffusion", + "Disco Elysium", + "ChromaV5", + "Valorant Diffusion", + "AIO Pixel Art", + "A-Zovya RPG Inpainting", + "BweshMix", + "Clazy", + "Knollingcase", + "Uhmami", + "Smoke Diffusion", + "Wavyfusion", + "Dark Victorian Diffusion", + "Laolei New Berry Protogen Mix", + "Dreamlike Diffusion", + "GuoFeng", + "Min Illust Background", + "DreamShaper Inpainting", + "Cheese Daddys Landscape Mix", + "JWST Deep Space Diffusion", + "ChilloutMix", + "Openniji", + "BPModel", + "App Icon Diffusion", + "Disney Pixar Cartoon Type A", + "Kenshi", + "Abyss OrangeMix", + "Dreamlike Photoreal", + "Deliberate Inpainting", + "RCNZ Gorilla With A Brick", + "Samdoesarts Ultmerge", + "Redshift Diffusion", + "stable_diffusion_2.1", + "Darkest Diffusion", + "Furry Epoch", + "Voxel Art Diffusion", + "Ether Real Mix", + "Guohua Diffusion", + "Galena Redux", + "T-Shirt Print Designs", + "AnyLoRA", + "Anything Diffusion", + "FaeTastic", + "CyriousMix", + "Deliberate", + "Hassanblend", + "iCoMix", + "URPM", + "Van Gogh Diffusion", + "Analog Diffusion", + "Yiffy", + "Korestyle", + "Realistic Vision Inpainting", + "DnD Map Generator", + "Fantasy Card Diffusion", + "Vector Art", + "Babes", + "Something", + "MoistMix", + "Xynthii-Diffusion", + "Realism Engine", + "Poison", + "Elldreth's Lucid Mix", + "majicMIX realistic", + "Microscopic", + "ExpMix Line", + "PIXHELL", + "BB95 Furry Mix", + "Reliberate", + "Anime Pencil Diffusion", + "Synthwave", + "Eimis Anime Diffusion", + "Ranma Diffusion", + "Future Diffusion", + "GhostMix", + "Rainbowpatch", + "Project Unreal Engine 5", + "Midjourney PaintArt", + "GTA5 Artwork Diffusion", + "SweetBoys 2D", + "Spider-Verse Diffusion", + "MoonMix Fantasy", + "Tron Legacy Diffusion", + "Protogen Anime", + "TrexMix", + "Char", + "Dark Sushi Mix", + "vectorartz", + "stable_diffusion", + "Dungeons and Diffusion", + "PRMJ", + "Western Animation Diffusion", + "A to Zovya RPG", + "Trinart Characters", + "UMI Olympus", + "Concept Sheet", + "waifu_diffusion", + "Microcritters", + "Anything v5", + "ModernArt Diffusion", + "Pulp Vector Art", + "Ghibli Diffusion", + "CharHelper", + "Pokemon3D", + "Counterfeit", + "Liberty", + "Healy's Anime Blend", + "Sci-Fi Diffusion", + "T-Shirt Diffusion", + "Eternos", + "Mega Merge Diffusion", + "Dan Mumford Style", + "JoMad Diffusion", + "Vivid Watercolors", + "Aurora", + "PortraitPlus", + "VinteProtogenMix", + "PPP", + "Anygen", + "Anything Diffusion Inpainting", + "GorynichMix", + "Dreamshaper", + "HRL", + "Coloring Book", + "Illuminati Diffusion", + "Rachel Walker Watercolors", + "Papercutcraft", + "Anything v3", + "Realistic Vision", + "Supermarionation", + "Zelda BOTW", + "RCNZ Dumb Monkey", + "OrbAI", + "Rodent Diffusion", + "Mistoon Amethyst", + "SD-Silicon", + "ToonYou", + "Funko Diffusion", + "AbyssOrangeMix-AfterDark", + "Colorful", + "526Mix-Animated", + "Perfect World", + "Cyberpunk Anime Diffusion", + "DnD Item", + "ACertainThing", + "Microchars", + "Elldreths Retro Mix", + "PVC", + "Seek.art MEGA", + "Arcane Diffusion", + "Microworlds", + "Vintedois Diffusion", + "Analog Madness", + "iCoMix Inpainting", + "Elysium Anime", + "Neurogen", + "OpenJourney Diffusion", + "SynthwavePunk", + "trinart", + "Hentai Diffusion", + "Lawlas's yiff mix", + "Edge Of Realism", + "Archer Diffusion", + "Graphic-Art", + "Microcasing", + "Classic Animation Diffusion" + ], + "team": { + "name": null, + "id": null + }, + "bridge_agent": "AI Horde Worker:22:https://github.com/db0/AI-Horde-Worker", + "max_pixels": 589824, + "megapixelsteps_generated": 13181744, + "img2img": true, + "painting": true, + "post-processing": true, + "lora": false, + "type": "image", + "name": "AIDream-02", + "id": "82fc88ea-d316-4d09-90f1-4ae9c6939455", + "online": true + }, + { + "requests_fulfilled": 69022, + "kudos_rewards": 1110042, + "kudos_details": { + "generated": 958907, + "uptime": 151362 + }, + "performance": "0.5 megapixelsteps per second", + "threads": 1, + "uptime": 1724775, + "maintenance_mode": false, + "nsfw": true, + "trusted": true, + "flagged": false, + "uncompleted_jobs": 112, + "models": [ + "Deliberate", + "Anything Diffusion" + ], + "team": { + "name": null, + "id": null + }, + "bridge_agent": "AI Horde Worker:21:https://github.com/db0/AI-Horde-Worker", + "max_pixels": 262144, + "megapixelsteps_generated": 677067, + "img2img": true, + "painting": true, + "post-processing": true, + "lora": false, + "type": "image", + "name": "Infermatic.ai1jkj", + "id": "6bbd1181-b2f5-41d1-8dfc-c7b906674f50", + "online": true + }, + { + "requests_fulfilled": 27514, + "kudos_rewards": 524617, + "kudos_details": { + "generated": 410433, + "uptime": 114210 + }, + "performance": "0.5 megapixelsteps per second", + "threads": 1, + "uptime": 866998, + "maintenance_mode": false, + "nsfw": true, + "trusted": true, + "flagged": false, + "uncompleted_jobs": 17, + "models": [ + "Anything Diffusion" + ], + "team": { + "name": null, + "id": null + }, + "bridge_agent": "AI Horde Worker:22:https://github.com/db0/AI-Horde-Worker", + "max_pixels": 1048576, + "megapixelsteps_generated": 403201, + "img2img": true, + "painting": true, + "post-processing": true, + "lora": true, + "type": "image", + "name": "LameDuckDream1", + "id": "195976c9-c9eb-417a-88ef-767ed9b8f9ea", + "online": true + }, + { + "requests_fulfilled": 71343, + "kudos_rewards": 1144661, + "kudos_details": { + "generated": 993454, + "uptime": 151416 + }, + "performance": "0.7 megapixelsteps per second", + "threads": 1, + "uptime": 1722706, + "maintenance_mode": false, + "nsfw": true, + "trusted": true, + "flagged": false, + "uncompleted_jobs": 88, + "models": [ + "Deliberate", + "Anything Diffusion" + ], + "team": { + "name": null, + "id": null + }, + "bridge_agent": "AI Horde Worker:21:https://github.com/db0/AI-Horde-Worker", + "max_pixels": 262144, + "megapixelsteps_generated": 700380, + "img2img": true, + "painting": true, + "post-processing": true, + "lora": false, + "type": "image", + "name": "Infermatic.ai06", + "id": "5c55ebc3-1ba0-44fe-8cf7-0e5273f9d560", + "online": true + }, + { + "requests_fulfilled": 117959, + "kudos_rewards": 2179168, + "kudos_details": { + "generated": 2051341, + "uptime": 128308 + }, + "performance": "1.6 megapixelsteps per second", + "threads": 1, + "uptime": 1383294, + "maintenance_mode": false, + "info": "A4000", + "nsfw": true, + "trusted": true, + "flagged": false, + "uncompleted_jobs": 689, + "models": [ + "Anything Diffusion", + "stable_diffusion_2.1", + "stable_diffusion", + "Deliberate" + ], + "team": { + "name": null, + "id": null + }, + "bridge_agent": "AI Horde Worker:20:https://github.com/db0/AI-Horde-Worker", + "max_pixels": 1048576, + "megapixelsteps_generated": 2186548, + "img2img": true, + "painting": true, + "post-processing": true, + "lora": false, + "type": "image", + "name": "pamagensart", + "id": "ba9937fb-8558-4d42-9059-926de5f0fe4e", + "online": true + }, + { + "requests_fulfilled": 71572, + "kudos_rewards": 1147283, + "kudos_details": { + "generated": 996091, + "uptime": 151524 + }, + "performance": "0.5 megapixelsteps per second", + "threads": 1, + "uptime": 1723885, + "maintenance_mode": false, + "nsfw": true, + "trusted": true, + "flagged": false, + "uncompleted_jobs": 94, + "models": [ + "Deliberate", + "Anything Diffusion" + ], + "team": { + "name": null, + "id": null + }, + "bridge_agent": "AI Horde Worker:21:https://github.com/db0/AI-Horde-Worker", + "max_pixels": 262144, + "megapixelsteps_generated": 701936, + "img2img": true, + "painting": true, + "post-processing": true, + "lora": false, + "type": "image", + "name": "Infermatic.ai05", + "id": "7b4ef5fc-5f02-4564-ace6-9c04b759ca62", + "online": true + }, + { + "requests_fulfilled": 30941, + "kudos_rewards": 463339, + "kudos_details": { + "generated": 396867, + "uptime": 66498 + }, + "performance": "0.4 megapixelsteps per second", + "threads": 1, + "uptime": 411841, + "maintenance_mode": false, + "nsfw": true, + "trusted": true, + "flagged": false, + "uncompleted_jobs": 20, + "models": [ + "vectorartz", + "DucHaiten Classic Anime", + "Fluffusion", + "Grapefruit Hentai", + "Elysium Anime", + "Future Diffusion", + "waifu_diffusion", + "Anything v5", + "Vector Art", + "stable_diffusion_2.1", + "stable_diffusion", + "Illuminati Diffusion", + "Midjourney PaintArt", + "stable_diffusion_inpainting", + "Anime Pencil Diffusion", + "Anything Diffusion", + "Henmix Real", + "Anything Diffusion Inpainting", + "Movie Diffusion", + "Graphic-Art", + "3DKX", + "Hentai Diffusion", + "Pretty 2.5D", + "RPG" + ], + "team": { + "name": null, + "id": null + }, + "bridge_agent": "AI Horde Worker:23:https://github.com/db0/AI-Horde-Worker", + "max_pixels": 262144, + "megapixelsteps_generated": 274853, + "img2img": true, + "painting": true, + "post-processing": true, + "lora": false, + "type": "image", + "name": "MMOLogin AI Dreamer", + "id": "167872f0-9332-47bb-8697-e43a4832adc4", + "online": true + }, + { + "requests_fulfilled": 461290, + "kudos_rewards": 5449397, + "kudos_details": { + "generated": 4875056, + "uptime": 574350 + }, + "performance": "2.1 megapixelsteps per second", + "threads": 1, + "uptime": 6838795, + "maintenance_mode": false, + "nsfw": true, + "trusted": true, + "flagged": false, + "uncompleted_jobs": 870, + "models": [ + "Deliberate", + "stable_diffusion_2.1" + ], + "team": { + "name": null, + "id": null + }, + "bridge_agent": "SD-WebUI Stable Horde Worker Bridge:4:https://github.com/sdwebui-w-horde/sd-webui-stable-horde-worker", + "max_pixels": 1048576, + "megapixelsteps_generated": 6364352, + "img2img": true, + "painting": true, + "post-processing": true, + "lora": false, + "type": "image", + "name": "AASD01", + "id": "87450d7f-26f9-4435-83a4-3fbff2d92984", + "online": true + }, + { + "requests_fulfilled": 71131, + "kudos_rewards": 1141478, + "kudos_details": { + "generated": 990280, + "uptime": 151416 + }, + "performance": "0.7 megapixelsteps per second", + "threads": 1, + "uptime": 1725646, + "maintenance_mode": false, + "nsfw": true, + "trusted": true, + "flagged": false, + "uncompleted_jobs": 100, + "models": [ + "Deliberate", + "Anything Diffusion" + ], + "team": { + "name": null, + "id": null + }, + "bridge_agent": "AI Horde Worker:21:https://github.com/db0/AI-Horde-Worker", + "max_pixels": 262144, + "megapixelsteps_generated": 698606, + "img2img": true, + "painting": true, + "post-processing": true, + "lora": false, + "type": "image", + "name": "Infermatic.ai07", + "id": "4a94c354-cfba-44eb-8d3e-b90033033216", + "online": true + }, + { + "requests_fulfilled": 425267, + "kudos_rewards": 5774620, + "kudos_details": { + "generated": 5362400, + "uptime": 412892 + }, + "performance": "0.8 megapixelsteps per second", + "threads": 1, + "uptime": 4866524, + "maintenance_mode": false, + "nsfw": true, + "trusted": true, + "flagged": false, + "uncompleted_jobs": 1720, + "models": [ + "Deliberate", + "Anything Diffusion" + ], + "team": { + "name": null, + "id": null + }, + "bridge_agent": "AI Horde Worker:23:https://github.com/db0/AI-Horde-Worker", + "max_pixels": 589824, + "megapixelsteps_generated": 4976179, + "img2img": true, + "painting": true, + "post-processing": true, + "lora": false, + "type": "image", + "name": "kdr10001", + "id": "22a22867-1796-4764-93f1-9d94894de12f", + "online": true + }, + { + "requests_fulfilled": 65146, + "kudos_rewards": 2118648, + "kudos_details": { + "generated": 2010483, + "uptime": 111122 + }, + "performance": "0.5 megapixelsteps per second", + "threads": 2, + "uptime": 1056388, + "maintenance_mode": false, + "nsfw": true, + "trusted": true, + "flagged": false, + "uncompleted_jobs": 93, + "models": [ + "ChilloutMix", + "stable_diffusion", + "Pretty 2.5D", + "CamelliaMix 2.5D", + "BRA", + "Deliberate", + "ICBINP - I Can't Believe It's Not Photography", + "Anything Diffusion" + ], + "team": { + "name": null, + "id": null + }, + "bridge_agent": "AI Horde Worker:22:https://github.com/db0/AI-Horde-Worker", + "max_pixels": 1048576, + "megapixelsteps_generated": 1663470, + "img2img": true, + "painting": true, + "post-processing": true, + "lora": false, + "type": "image", + "name": "pawkygame_3090_office Dreamer", + "id": "6439db02-f99d-4816-a2e7-29ea0fb3f723", + "online": true + }, + { + "requests_fulfilled": 619153, + "kudos_rewards": 9101999, + "kudos_details": { + "generated": 8330190, + "uptime": 772936 + }, + "performance": "1.1 megapixelsteps per second", + "threads": 1, + "uptime": 8938304, + "maintenance_mode": false, + "info": "Titan V 12GB x4, Xeon 6258R x2, 192GB", + "nsfw": true, + "trusted": true, + "flagged": false, + "uncompleted_jobs": 2265, + "models": [ + "Deliberate", + "Anything Diffusion", + "Ultraskin", + "RPG" + ], + "team": { + "name": null, + "id": null + }, + "bridge_agent": "AI Horde Worker:23:https://github.com/db0/AI-Horde-Worker", + "max_pixels": 393216, + "megapixelsteps_generated": 7961111, + "img2img": true, + "painting": true, + "post-processing": true, + "lora": false, + "type": "image", + "name": "JBertok-TitanV-4", + "id": "e59230a6-bb24-4887-a421-15c4ff564cf5", + "online": true + }, + { + "requests_fulfilled": 4585, + "kudos_rewards": 80175, + "kudos_details": { + "generated": 73155, + "uptime": 7038 + }, + "performance": "0.6 megapixelsteps per second", + "threads": 1, + "uptime": 72879, + "maintenance_mode": false, + "nsfw": true, + "trusted": false, + "flagged": false, + "uncompleted_jobs": 25, + "models": [ + "Furry Epoch", + "stable_diffusion_inpainting", + "Yiffy", + "Fluffusion", + "Zack3D", + "Lawlas's yiff mix", + "BB95 Furry Mix" + ], + "team": { + "name": null, + "id": null + }, + "bridge_agent": "AI Horde Worker:23:https://github.com/db0/AI-Horde-Worker", + "max_pixels": 589824, + "megapixelsteps_generated": 59619, + "img2img": true, + "painting": true, + "post-processing": true, + "lora": false, + "type": "image", + "name": "Dezealotl", + "id": "6b830da8-1fa0-499e-8c48-4330d6af7c26", + "online": true + }, + { + "requests_fulfilled": 177487, + "kudos_rewards": 2626643, + "kudos_details": { + "generated": 2327933, + "uptime": 298766 + }, + "performance": "1.1 megapixelsteps per second", + "threads": 1, + "uptime": 2219038, + "maintenance_mode": false, + "nsfw": true, + "trusted": true, + "flagged": false, + "uncompleted_jobs": 55, + "models": [ + "Anything Diffusion" + ], + "team": { + "name": null, + "id": null + }, + "bridge_agent": "AI Horde Worker:23:https://github.com/db0/AI-Horde-Worker", + "max_pixels": 524288, + "megapixelsteps_generated": 2375740, + "img2img": false, + "painting": false, + "post-processing": true, + "lora": true, + "type": "image", + "name": "LameDuckDream0", + "id": "d0b2cb3b-8e50-4c2e-bac1-22afeef00b5e", + "online": true + }, + { + "requests_fulfilled": 71274, + "kudos_rewards": 1140322, + "kudos_details": { + "generated": 989173, + "uptime": 151416 + }, + "performance": "0.6 megapixelsteps per second", + "threads": 1, + "uptime": 1723992, + "maintenance_mode": false, + "nsfw": true, + "trusted": true, + "flagged": false, + "uncompleted_jobs": 107, + "models": [ + "Anything Diffusion", + "Deliberate" + ], + "team": { + "name": null, + "id": null + }, + "bridge_agent": "AI Horde Worker:21:https://github.com/db0/AI-Horde-Worker", + "max_pixels": 262144, + "megapixelsteps_generated": 701393, + "img2img": true, + "painting": true, + "post-processing": true, + "lora": false, + "type": "image", + "name": "Infermatic.ai08", + "id": "c827056d-ac26-4684-89ef-0d4c5e3f2de3", + "online": true + }, + { + "requests_fulfilled": 70266, + "kudos_rewards": 2243348, + "kudos_details": { + "generated": 2028924, + "uptime": 214424 + }, + "performance": "1.1 megapixelsteps per second", + "threads": 1, + "uptime": 1510134, + "maintenance_mode": false, + "nsfw": true, + "trusted": true, + "flagged": false, + "uncompleted_jobs": 387, + "models": [ + "stable_diffusion", + "ICBINP - I Can't Believe It's Not Photography", + "Deliberate", + "Anything Diffusion" + ], + "team": { + "name": null, + "id": null + }, + "bridge_agent": "AI Horde Worker:22:https://github.com/db0/AI-Horde-Worker", + "max_pixels": 1572864, + "megapixelsteps_generated": 1611426, + "img2img": true, + "painting": true, + "post-processing": true, + "lora": true, + "type": "image", + "name": "DigitalDream.io_2", + "id": "cf864212-98d8-4b54-9539-0869bf1a04fb", + "online": true + }, + { + "requests_fulfilled": 561591, + "kudos_rewards": 13009570, + "kudos_details": { + "generated": 12523918, + "uptime": 552628 + }, + "performance": "1.5 megapixelsteps per second", + "threads": 1, + "uptime": 5088324, + "maintenance_mode": false, + "nsfw": true, + "trusted": true, + "flagged": false, + "uncompleted_jobs": 283, + "models": [ + "Epic Diffusion Inpainting", + "DreamShaper Inpainting", + "Realism Engine", + "GTA5 Artwork Diffusion", + "Dreamshaper", + "URPM", + "Deliberate", + "Perfect World", + "Western Animation Diffusion" + ], + "team": { + "name": null, + "id": null + }, + "bridge_agent": "AI Horde Worker:23:https://github.com/db0/AI-Horde-Worker", + "max_pixels": 1376256, + "megapixelsteps_generated": 11384344, + "img2img": true, + "painting": true, + "post-processing": true, + "lora": false, + "type": "image", + "name": "AiBrush-3", + "id": "a850a98b-ca44-4591-b05b-8e043695ae4e", + "online": true + }, + { + "requests_fulfilled": 18825, + "kudos_rewards": 216086, + "kudos_details": { + "generated": 188425, + "uptime": 27664 + }, + "performance": "3.9 megapixelsteps per second", + "threads": 1, + "uptime": 326143, + "maintenance_mode": true, + "info": "RTX4090, 32Gb RAM, i5-13600K", + "nsfw": true, + "trusted": false, + "flagged": false, + "uncompleted_jobs": 482, + "models": [ + "Deliberate" + ], + "team": { + "name": null, + "id": null + }, + "bridge_agent": "SD-WebUI Stable Horde Worker Bridge:4:https://github.com/sdwebui-w-horde/sd-webui-stable-horde-worker", + "max_pixels": 1048576, + "megapixelsteps_generated": 280246, + "img2img": true, + "painting": true, + "post-processing": true, + "lora": false, + "type": "image", + "name": "cvoer", + "id": "50975d63-2318-42f3-b9cd-4fa0014d4219", + "online": true + }, + { + "requests_fulfilled": 560294, + "kudos_rewards": 7278354, + "kudos_details": { + "generated": 6778665, + "uptime": 500918 + }, + "performance": "0.7 megapixelsteps per second", + "threads": 2, + "uptime": 4791702, + "maintenance_mode": false, + "nsfw": true, + "trusted": true, + "flagged": false, + "uncompleted_jobs": 145, + "models": [ + "ChilloutMix", + "stable_diffusion", + "Pretty 2.5D", + "CamelliaMix 2.5D", + "majicMIX realistic", + "Deliberate", + "ICBINP - I Can't Believe It's Not Photography", + "Anything Diffusion" + ], + "team": { + "name": "PawkyGame", + "id": "b417b070-0205-4bc3-be55-41e2516b8d50" + }, + "bridge_agent": "AI Horde Worker:22:https://github.com/db0/AI-Horde-Worker", + "max_pixels": 589824, + "megapixelsteps_generated": 6694559, + "img2img": false, + "painting": false, + "post-processing": false, + "lora": false, + "type": "image", + "name": "pawkygame_2080 Dreamer", + "id": "e650da17-c2aa-499c-b1d5-48fed2c97ab0", + "online": true + }, + { + "requests_fulfilled": 202719, + "kudos_rewards": 4088164, + "kudos_details": { + "generated": 3593378, + "uptime": 494850 + }, + "performance": "0.6 megapixelsteps per second", + "threads": 1, + "uptime": 4776883, + "maintenance_mode": false, + "nsfw": true, + "trusted": true, + "flagged": false, + "uncompleted_jobs": 220, + "models": [ + "majicMIX realistic", + "Deliberate", + "Pretty 2.5D", + "ICBINP - I Can't Believe It's Not Photography", + "CamelliaMix 2.5D", + "Anything Diffusion", + "BRA", + "ChilloutMix", + "stable_diffusion" + ], + "team": { + "name": "PawkyGame", + "id": "b417b070-0205-4bc3-be55-41e2516b8d50" + }, + "bridge_agent": "AI Horde Worker:23:https://github.com/db0/AI-Horde-Worker", + "max_pixels": 589824, + "megapixelsteps_generated": 2972777, + "img2img": true, + "painting": true, + "post-processing": false, + "lora": false, + "type": "image", + "name": "pawkygame_2060 Dreamer", + "id": "31f6d463-c96d-4421-acba-ef8139d9c640", + "online": true + }, + { + "requests_fulfilled": 346, + "kudos_rewards": 3487, + "kudos_details": { + "generated": 3219, + "uptime": 280 + }, + "performance": "0.6 megapixelsteps per second", + "threads": 1, + "uptime": 3359, + "maintenance_mode": false, + "nsfw": true, + "trusted": true, + "flagged": false, + "uncompleted_jobs": 0, + "models": [ + "iCoMix", + "stable_diffusion", + "Deliberate" + ], + "team": { + "name": null, + "id": null + }, + "bridge_agent": "AI Horde Worker:23:https://github.com/db0/AI-Horde-Worker", + "max_pixels": 262144, + "megapixelsteps_generated": 2551, + "img2img": true, + "painting": true, + "post-processing": true, + "lora": false, + "type": "image", + "name": "ComicsMaker.ai-2", + "id": "61317cdc-ce6b-4ce7-8dee-4e44b100eb25", + "online": true + }, + { + "requests_fulfilled": 12703, + "kudos_rewards": 180493, + "kudos_details": { + "generated": 161483, + "uptime": 19098 + }, + "performance": "0.5 megapixelsteps per second", + "threads": 2, + "uptime": 145187, + "maintenance_mode": false, + "nsfw": true, + "trusted": false, + "flagged": false, + "uncompleted_jobs": 65, + "models": [ + "Anything Diffusion", + "stable_diffusion", + "Deliberate", + "ICBINP - I Can't Believe It's Not Photography" + ], + "team": { + "name": null, + "id": null + }, + "bridge_agent": "AI Horde Worker:23:https://github.com/db0/AI-Horde-Worker", + "max_pixels": 262144, + "megapixelsteps_generated": 122144, + "img2img": true, + "painting": true, + "post-processing": true, + "lora": true, + "type": "image", + "name": "Photodude_2000", + "id": "db6b8f00-c97d-4e89-a727-a1947d017480", + "online": true + }, + { + "requests_fulfilled": 91271, + "kudos_rewards": 3960325, + "kudos_details": { + "generated": 2448569, + "uptime": 1512456 + }, + "performance": "0.9 megapixelsteps per second", + "threads": 1, + "uptime": 1767399, + "maintenance_mode": false, + "nsfw": true, + "trusted": true, + "flagged": false, + "uncompleted_jobs": 1291, + "models": [ + "Ghibli Diffusion", + "Furry Epoch", + "Guohua Diffusion", + "Papercutcraft", + "Disney Pixar Cartoon Type A", + "Vector Art", + "Darkest Diffusion", + "FKing SciFi", + "OrbAI", + "Woop-Woop Photo", + "Hentai Diffusion", + "Papercut Diffusion", + "Dreamlike Photoreal", + "DucHaiten Classic Anime", + "SD-Silicon", + "Anything Diffusion", + "Microscopic", + "iCoMix Inpainting", + "Grapefruit Hentai", + "Dungeons and Diffusion", + "BubblyDubbly", + "Seek.art MEGA", + "Classic Animation Diffusion", + "GuoFeng", + "Char", + "Supermarionation", + "Ranma Diffusion", + "Elldreth's Lucid Mix", + "RCNZ Gorilla With A Brick", + "Edge Of Realism", + "Western Animation Diffusion", + "ChilloutMix", + "Microworlds", + "Knollingcase", + "Colorful", + "Unstable Ink Dream", + "Protogen Infinity", + "Liberty", + "Squishmallow Diffusion", + "Sygil-Dev Diffusion", + "DucHaiten", + "Microcasing", + "Epic Diffusion", + "SynthwavePunk", + "Ultraskin", + "Dark Sushi Mix", + "PVC", + "Fluffusion", + "OpenJourney Diffusion", + "Graphic-Art", + "PPP", + "GorynichMix", + "Dreamlike Diffusion", + "TrexMix", + "CamelliaMix 2.5D", + "Van Gogh Diffusion", + "Trinart Characters", + "URPM", + "Microchars", + "Real Dos Mix", + "waifu_diffusion", + "Poison", + "PFG", + "Voxel Art Diffusion", + "Movie Diffusion", + "BPModel", + "vectorartz", + "HASDX", + "Neurogen", + "Robo-Diffusion", + "Fantasy Card Diffusion", + "Moedel", + "mo-di-diffusion", + "AIO Pixel Art", + "Pokemon3D", + "Comic-Diffusion", + "Valorant Diffusion", + "Counterfeit", + "Spider-Verse Diffusion", + "BB95 Furry Mix", + "ICBINP - I Can't Believe It's Not Photography", + "Analog Madness", + "Anything Diffusion Inpainting", + "Deliberate Inpainting", + "UMI Olympus", + "Coloring Book", + "stable_diffusion_2.1", + "Deliberate", + "Sci-Fi Diffusion", + "FaeTastic", + "Realistic Vision Inpainting", + "Sonic Diffusion", + "Anything v3", + "JWST Deep Space Diffusion", + "Clazy", + "Illuminati Diffusion", + "Reliberate", + "Nitro Diffusion", + "Zack3D", + "NeverEnding Dream", + "Babes", + "RPG", + "kurzgesagt", + "MoonMix Fantasy", + "Rachel Walker Watercolors", + "526Mix-Animated", + "ACertainThing", + "Anything v5", + "Galena Redux", + "A-Zovya RPG Inpainting", + "Henmix Real", + "BweshMix", + "Xynthii-Diffusion", + "AbyssOrangeMix-AfterDark", + "Pulp Vector Art", + "A to Zovya RPG", + "majicMIX realistic", + "stable_diffusion_inpainting", + "AnyLoRA", + "Samaritan 3d Cartoon", + "Epic Diffusion Inpainting", + "Realistic Vision", + "Rainbowpatch", + "RCNZ Dumb Monkey", + "Healy's Anime Blend", + "ChromaV5", + "3DKX", + "ToonYou", + "SweetBoys 2D", + "Pretty 2.5D", + "GTA5 Artwork Diffusion", + "CyriousMix", + "Asim Simpsons", + "PortraitPlus", + "Experience", + "JoMad Diffusion", + "Mistoon Amethyst", + "Redshift Diffusion", + "Rev Animated", + "Borderlands", + "Perfect World", + "stable_diffusion", + "Tron Legacy Diffusion", + "Anygen", + "Laolei New Berry Protogen Mix", + "Dreamshaper", + "GhostMix", + "DreamLikeSamKuvshinov", + "Dungeons n Waifus", + "PIXHELL", + "Ether Real Mix", + "Something", + "Art Of Mtg", + "Dan Mumford Style", + "Mega Merge Diffusion", + "Realism Engine", + "Abyss OrangeMix", + "Anime Pencil Diffusion", + "DnD Map Generator", + "MeinaMix", + "Concept Sheet", + "Elysium Anime", + "Kenshi", + "Funko Diffusion", + "Elldreths Retro Mix", + "DreamShaper Inpainting", + "Synthwave", + "DnD Item", + "ModernArt Diffusion", + "VinteProtogenMix", + "Korestyle", + "Min Illust Background", + "Hassaku", + "Lawlas's yiff mix", + "Double Exposure Diffusion", + "Future Diffusion", + "Eternos", + "Marvel Diffusion", + "iCoMix", + "CyberRealistic", + "Elden Ring Diffusion", + "GuFeng", + "CharHelper", + "Inkpunk Diffusion", + "Wavyfusion", + "Hassanblend", + "RealBiter", + "MoistMix", + "Realisian", + "Lyriel", + "trinart", + "App Icon Diffusion", + "Disco Elysium", + "DGSpitzer Art Diffusion", + "Protogen Anime", + "T-Shirt Print Designs", + "Pastel Mix", + "Jim Eidomode", + "T-Shirt Diffusion", + "Aurora", + "Dark Victorian Diffusion", + "Yiffy", + "Cheese Daddys Landscape Mix", + "Vivid Watercolors", + "Analog Diffusion", + "Cetus-Mix", + "Zelda BOTW", + "Smoke Diffusion", + "Arcane Diffusion", + "ProtoGen", + "Uhmami", + "PRMJ", + "Project Unreal Engine 5", + "ExpMix Line", + "HRL", + "Eimis Anime Diffusion", + "Archer Diffusion", + "Balloon Art", + "Openniji", + "Midjourney PaintArt", + "Vintedois Diffusion", + "Rodent Diffusion", + "Zeipher Female Model", + "Samdoesarts Ultmerge", + "Microcritters", + "Cyberpunk Anime Diffusion" + ], + "team": { + "name": null, + "id": null + }, + "bridge_agent": "AI Horde Worker:23:https://github.com/db0/AI-Horde-Worker", + "max_pixels": 2359296, + "megapixelsteps_generated": 2174233, + "img2img": true, + "painting": true, + "post-processing": true, + "lora": true, + "type": "image", + "name": "Fox's Desktop - RTX 3080Ti - Main Branch", + "id": "838cc80f-e652-4f5a-8abb-e22eeb85b891", + "online": true + }, + { + "requests_fulfilled": 5365, + "kudos_rewards": 104686, + "kudos_details": { + "generated": 98874, + "uptime": 5940 + }, + "performance": "0.6 megapixelsteps per second", + "threads": 2, + "uptime": 69614, + "maintenance_mode": false, + "nsfw": true, + "trusted": false, + "flagged": false, + "uncompleted_jobs": 10, + "models": [ + "Deliberate", + "Anything Diffusion" + ], + "team": { + "name": null, + "id": null + }, + "bridge_agent": "AI Horde Worker:23:https://github.com/db0/AI-Horde-Worker", + "max_pixels": 524288, + "megapixelsteps_generated": 84107, + "img2img": true, + "painting": true, + "post-processing": true, + "lora": false, + "type": "image", + "name": "The Dreamer Ninja", + "id": "bc0654b0-7322-4068-8957-b8502640ed5d", + "online": true + }, + { + "requests_fulfilled": 13187, + "kudos_rewards": 274038, + "kudos_details": { + "generated": 257553, + "uptime": 16512 + }, + "performance": "1.0 megapixelsteps per second", + "threads": 1, + "uptime": 193404, + "maintenance_mode": false, + "nsfw": true, + "trusted": false, + "flagged": false, + "uncompleted_jobs": 18, + "models": [ + "Deliberate" + ], + "team": { + "name": null, + "id": null + }, + "bridge_agent": "AI Horde Worker:23:https://github.com/db0/AI-Horde-Worker", + "max_pixels": 589824, + "megapixelsteps_generated": 196116, + "img2img": true, + "painting": true, + "post-processing": true, + "lora": false, + "type": "image", + "name": "dodi1010", + "id": "81a3e3eb-2bc4-4076-ba0d-e17d7d6403d4", + "online": true + }, + { + "requests_fulfilled": 39638, + "kudos_rewards": 514627, + "kudos_details": { + "generated": 465188, + "uptime": 49644 + }, + "performance": "0.4 megapixelsteps per second", + "threads": 1, + "uptime": 549988, + "maintenance_mode": false, + "nsfw": true, + "trusted": true, + "flagged": false, + "uncompleted_jobs": 110, + "models": [ + "Deliberate" + ], + "team": { + "name": null, + "id": null + }, + "bridge_agent": "AI Horde Worker:23:https://github.com/db0/AI-Horde-Worker", + "max_pixels": 720896, + "megapixelsteps_generated": 499257, + "img2img": true, + "painting": false, + "post-processing": false, + "lora": false, + "type": "image", + "name": "Pringly plogly sclogly", + "id": "1bb58dbb-524a-431c-9702-7db50e122c4b", + "online": true + }, + { + "requests_fulfilled": 71495, + "kudos_rewards": 1025612, + "kudos_details": { + "generated": 1003949, + "uptime": 105888 + }, + "performance": "0.7 megapixelsteps per second", + "threads": 1, + "uptime": 1105523, + "maintenance_mode": false, + "info": "Back after a bit! Hi guys!", + "nsfw": true, + "trusted": true, + "flagged": false, + "uncompleted_jobs": 192, + "models": [ + "Deliberate", + "stable_diffusion_2.1", + "ICBINP - I Can't Believe It's Not Photography", + "Anything Diffusion", + "stable_diffusion" + ], + "team": { + "name": null, + "id": null + }, + "bridge_agent": "AI Horde Worker:23:https://github.com/db0/AI-Horde-Worker", + "max_pixels": 393216, + "megapixelsteps_generated": 793145, + "img2img": true, + "painting": true, + "post-processing": true, + "lora": false, + "type": "image", + "name": "Healthy Fibers", + "id": "253f02f8-1f4a-43e9-9495-25bf269de6f1", + "online": true + }, + { + "requests_fulfilled": 70626, + "kudos_rewards": 1134191, + "kudos_details": { + "generated": 982842, + "uptime": 151470 + }, + "performance": "0.5 megapixelsteps per second", + "threads": 1, + "uptime": 1724043, + "maintenance_mode": false, + "nsfw": true, + "trusted": true, + "flagged": false, + "uncompleted_jobs": 97, + "models": [ + "Deliberate", + "Anything Diffusion" + ], + "team": { + "name": null, + "id": null + }, + "bridge_agent": "AI Horde Worker:21:https://github.com/db0/AI-Horde-Worker", + "max_pixels": 262144, + "megapixelsteps_generated": 693527, + "img2img": true, + "painting": true, + "post-processing": true, + "lora": false, + "type": "image", + "name": "Infermatic.ai10", + "id": "1874367f-cb76-4204-a87a-a5ca20b520eb", + "online": true + }, + { + "requests_fulfilled": 1230287, + "kudos_rewards": 13533951, + "kudos_details": { + "generated": 12544674, + "uptime": 999346 + }, + "performance": "0.2 megapixelsteps per second", + "threads": 4, + "uptime": 11256724, + "maintenance_mode": false, + "info": "Sharing the computing power of @Mythica https://mythica.dev/", + "nsfw": true, + "trusted": true, + "flagged": false, + "uncompleted_jobs": 8449, + "models": [ + "Deliberate", + "stable_diffusion", + "Eimis Anime Diffusion", + "Movie Diffusion", + "Hentai Diffusion", + "stable_diffusion_2.1", + "Grapefruit Hentai" + ], + "team": { + "name": null, + "id": null + }, + "bridge_agent": "AI Horde Worker:23:https://github.com/db0/AI-Horde-Worker", + "max_pixels": 262144, + "megapixelsteps_generated": 14007378, + "img2img": false, + "painting": false, + "post-processing": false, + "lora": false, + "type": "image", + "name": "Mythica-Horde-Delta", + "id": "95cfe49b-10a4-4d1d-ac6c-01872d3e1f4f", + "online": true + }, + { + "requests_fulfilled": 17955, + "kudos_rewards": 181160, + "kudos_details": { + "generated": 145060, + "uptime": 36126 + }, + "performance": "0.6 megapixelsteps per second", + "threads": 3, + "uptime": 403312, + "maintenance_mode": false, + "nsfw": true, + "trusted": false, + "flagged": false, + "uncompleted_jobs": 1, + "models": [ + "Deliberate", + "Anything Diffusion" + ], + "team": { + "name": null, + "id": null + }, + "bridge_agent": "AI Horde Worker:23:https://github.com/db0/AI-Horde-Worker", + "max_pixels": 229376, + "megapixelsteps_generated": 111704, + "img2img": true, + "painting": true, + "post-processing": true, + "lora": false, + "type": "image", + "name": "GenericName", + "id": "e72ebdef-bfec-43cf-92ce-22e7bf064478", + "online": true + }, + { + "requests_fulfilled": 13529, + "kudos_rewards": 230455, + "kudos_details": { + "generated": 205007, + "uptime": 25500 + }, + "performance": "0.2 megapixelsteps per second", + "threads": 1, + "uptime": 290950, + "maintenance_mode": false, + "nsfw": true, + "trusted": true, + "flagged": false, + "uncompleted_jobs": 51, + "models": [ + "Deliberate" + ], + "team": { + "name": "🔥🔥🐲 MalingeDragons 🔥🔥🐲", + "id": "644218d5-a85e-41a1-9b84-463d5e3499bf" + }, + "bridge_agent": "AI Horde Worker:23:https://github.com/db0/AI-Horde-Worker", + "max_pixels": 720896, + "megapixelsteps_generated": 199206, + "img2img": true, + "painting": false, + "post-processing": false, + "lora": false, + "type": "image", + "name": "MalingeSlave2", + "id": "0260a2fb-afca-473e-9718-5cebdf9a2349", + "online": true + }, + { + "requests_fulfilled": 389481, + "kudos_rewards": 4836985, + "kudos_details": { + "generated": 3748534, + "uptime": 1094152 + }, + "performance": "0.3 megapixelsteps per second", + "threads": 1, + "uptime": 13305005, + "maintenance_mode": true, + "info": "Quadro P4000 8 GB", + "nsfw": true, + "trusted": true, + "flagged": false, + "uncompleted_jobs": 728, + "models": [ + "Deliberate", + "Anything Diffusion" + ], + "team": { + "name": null, + "id": null + }, + "bridge_agent": "AI Horde Worker:23:https://github.com/db0/AI-Horde-Worker", + "max_pixels": 262144, + "megapixelsteps_generated": 3518282, + "img2img": true, + "painting": false, + "post-processing": true, + "lora": false, + "type": "image", + "name": "FiFo-002", + "id": "6e7a6c54-1204-424a-97b3-acdc022ccdb7", + "online": true + }, + { + "requests_fulfilled": 771394, + "kudos_rewards": 10819137, + "kudos_details": { + "generated": 10187732, + "uptime": 637472 + }, + "performance": "1.2 megapixelsteps per second", + "threads": 1, + "uptime": 7433682, + "maintenance_mode": false, + "info": "3060 ti 🏴󠁧󠁢󠁳󠁣󠁴󠁿 (my room cold)", + "nsfw": true, + "trusted": true, + "flagged": false, + "uncompleted_jobs": 586, + "models": [ + "Deliberate", + "DucHaiten" + ], + "team": { + "name": null, + "id": null + }, + "bridge_agent": "AI Horde Worker:21:https://github.com/db0/AI-Horde-Worker", + "max_pixels": 589824, + "megapixelsteps_generated": 9310786, + "img2img": true, + "painting": true, + "post-processing": true, + "lora": false, + "type": "image", + "name": "SHLB1", + "id": "ef7c02a7-5716-4e4e-bdac-0083218d52fb", + "online": true + }, + { + "requests_fulfilled": 31517, + "kudos_rewards": 515548, + "kudos_details": { + "generated": 488843, + "uptime": 27638 + }, + "performance": "0.6 megapixelsteps per second", + "threads": 2, + "uptime": 183279, + "maintenance_mode": true, + "nsfw": true, + "trusted": true, + "flagged": false, + "uncompleted_jobs": 52, + "models": [ + "Dreamshaper", + "Deliberate", + "Anything Diffusion", + "stable_diffusion", + "ICBINP - I Can't Believe It's Not Photography", + "Arcane Diffusion", + "Poison" + ], + "team": { + "name": null, + "id": null + }, + "bridge_agent": "AI Horde Worker:22:https://github.com/db0/AI-Horde-Worker", + "max_pixels": 327680, + "megapixelsteps_generated": 395103, + "img2img": true, + "painting": true, + "post-processing": true, + "lora": true, + "type": "image", + "name": "ComputeSheepLand_DreamerSheep1B", + "id": "f8a396c8-55af-4c97-816a-8d1023a214bf", + "online": true + }, + { + "requests_fulfilled": 1700, + "kudos_rewards": 33352, + "kudos_details": { + "generated": 28776, + "uptime": 4576 + }, + "performance": "0.4 megapixelsteps per second", + "threads": 1, + "uptime": 55996, + "maintenance_mode": false, + "nsfw": true, + "trusted": false, + "flagged": false, + "uncompleted_jobs": 8, + "models": [ + "Epic Diffusion" + ], + "team": { + "name": null, + "id": null + }, + "bridge_agent": "AI Horde Worker:23:https://github.com/db0/AI-Horde-Worker", + "max_pixels": 720896, + "megapixelsteps_generated": 37918, + "img2img": true, + "painting": false, + "post-processing": false, + "lora": false, + "type": "image", + "name": "ffffff", + "id": "bd6a4b3d-22d6-4364-9466-c34fd9c1a9da", + "online": true + }, + { + "requests_fulfilled": 29442, + "kudos_rewards": 1022487, + "kudos_details": { + "generated": 1012341, + "uptime": 10194 + }, + "performance": "0.6 megapixelsteps per second", + "threads": 1, + "uptime": 117356, + "maintenance_mode": false, + "nsfw": true, + "trusted": true, + "flagged": false, + "uncompleted_jobs": 1163, + "models": [ + "horde_special::stability.ai#6901", + "SDXL_beta::stability.ai#6901" + ], + "team": { + "name": null, + "id": null + }, + "bridge_agent": "AI Horde Worker:22:https://github.com/db0/AI-Horde-Worker", + "max_pixels": 4194304, + "megapixelsteps_generated": 1226282, + "img2img": true, + "painting": true, + "post-processing": true, + "lora": false, + "type": "image", + "name": "ControlNet_Worker_4", + "id": "436eafe1-3e46-49b6-984a-79d44a16c8d7", + "online": true + }, + { + "requests_fulfilled": 1563446, + "kudos_rewards": 30061353, + "kudos_details": { + "generated": 28466844, + "uptime": 1661086 + }, + "performance": "2.5 megapixelsteps per second", + "threads": 1, + "uptime": 14868407, + "maintenance_mode": true, + "info": "Somewhere far beyond...", + "nsfw": true, + "trusted": true, + "flagged": false, + "uncompleted_jobs": 7054, + "models": [ + "ChilloutMix", + "Deliberate", + "stable_diffusion", + "Abyss OrangeMix", + "Dreamlike Diffusion", + "NeverEnding Dream", + "Dreamshaper", + "Lawlas's yiff mix", + "BB95 Furry Mix", + "Inkpunk Diffusion", + "Hentai Diffusion", + "ICBINP - I Can't Believe It's Not Photography", + "RCNZ Gorilla With A Brick", + "iCoMix", + "Anything Diffusion" + ], + "team": { + "name": "Mutual Aid", + "id": "7a5afb3e-6d80-41f0-98bd-9be732d45944" + }, + "bridge_agent": "AI Horde Worker:22:https://github.com/db0/AI-Horde-Worker", + "max_pixels": 4194304, + "megapixelsteps_generated": 27800269, + "img2img": true, + "painting": false, + "post-processing": true, + "lora": true, + "type": "image", + "name": "The Portal of Infinite Realities", + "id": "dc0704ab-5b42-4c65-8471-561be16ad696", + "online": true + }, + { + "requests_fulfilled": 262601, + "kudos_rewards": 4054730, + "kudos_details": { + "generated": 3568605, + "uptime": 486348 + }, + "performance": "0.5 megapixelsteps per second", + "threads": 1, + "uptime": 3126607, + "maintenance_mode": false, + "nsfw": true, + "trusted": true, + "flagged": false, + "uncompleted_jobs": 311, + "models": [ + "Movie Diffusion", + "stable_diffusion", + "Abyss OrangeMix", + "GhostMix", + "AbyssOrangeMix-AfterDark", + "Analog Diffusion", + "Dreamshaper", + "Deliberate", + "Hentai Diffusion", + "ICBINP - I Can't Believe It's Not Photography", + "Anything Diffusion" + ], + "team": { + "name": null, + "id": null + }, + "bridge_agent": "AI Horde Worker:23:https://github.com/db0/AI-Horde-Worker", + "max_pixels": 262144, + "megapixelsteps_generated": 2469292, + "img2img": true, + "painting": true, + "post-processing": true, + "lora": true, + "type": "image", + "name": "TSE-Megu", + "id": "7e91c70a-fa29-4061-bdb0-f64ab57321e8", + "online": true + }, + { + "requests_fulfilled": 2127813, + "kudos_rewards": 34654279, + "kudos_details": { + "generated": 34581046, + "uptime": 816064 + }, + "performance": "1.6 megapixelsteps per second", + "threads": 1, + "uptime": 7087463, + "maintenance_mode": false, + "nsfw": true, + "trusted": true, + "flagged": false, + "uncompleted_jobs": 4506, + "models": [ + "ToonYou", + "GTA5 Artwork Diffusion", + "PFG", + "Dungeons n Waifus", + "DreamShaper Inpainting", + "ChilloutMix", + "Dreamlike Diffusion", + "FaeTastic", + "Deliberate Inpainting", + "Jim Eidomode", + "Disney Pixar Cartoon Type A", + "Anything Diffusion Inpainting", + "Epic Diffusion", + "Deliberate", + "Perfect World", + "Hentai Diffusion", + "kurzgesagt", + "Pulp Vector Art", + "Mistoon Amethyst", + "Realistic Vision Inpainting", + "iCoMix Inpainting", + "Eternos", + "Rev Animated", + "SynthwavePunk", + "Epic Diffusion Inpainting", + "Western Animation Diffusion", + "MoistMix", + "App Icon Diffusion", + "Realistic Vision", + "PIXHELL", + "CamelliaMix 2.5D", + "Reliberate", + "ICBINP - I Can't Believe It's Not Photography", + "RCNZ Gorilla With A Brick" + ], + "team": { + "name": null, + "id": null + }, + "bridge_agent": "AI Horde Worker:23:https://github.com/db0/AI-Horde-Worker", + "max_pixels": 1376256, + "megapixelsteps_generated": 31772871, + "img2img": true, + "painting": true, + "post-processing": true, + "lora": true, + "type": "image", + "name": "AiBrush", + "id": "a68c78f2-3303-4b68-b4a2-586183ce7e24", + "online": true + }, + { + "requests_fulfilled": 112845, + "kudos_rewards": 1222603, + "kudos_details": { + "generated": 1121536, + "uptime": 101332 + }, + "performance": "0.7 megapixelsteps per second", + "threads": 1, + "uptime": 1097545, + "maintenance_mode": false, + "nsfw": true, + "trusted": true, + "flagged": false, + "uncompleted_jobs": 23, + "models": [ + "Deliberate", + "stable_diffusion", + "iCoMix" + ], + "team": { + "name": "ComicsMaker.ai", + "id": "75b4a0d2-4054-4781-aa39-1292dec1f87c" + }, + "bridge_agent": "AI Horde Worker:23:https://github.com/db0/AI-Horde-Worker", + "max_pixels": 262144, + "megapixelsteps_generated": 799892, + "img2img": true, + "painting": true, + "post-processing": true, + "lora": false, + "type": "image", + "name": "ComicsMaker.ai", + "id": "74e0a02c-4089-4815-bc73-4551d9a47fcb", + "online": true + }, + { + "requests_fulfilled": 30657, + "kudos_rewards": 1065015, + "kudos_details": { + "generated": 1055301, + "uptime": 9774 + }, + "performance": "2.4 megapixelsteps per second", + "threads": 1, + "uptime": 111494, + "maintenance_mode": false, + "nsfw": true, + "trusted": true, + "flagged": false, + "uncompleted_jobs": 1081, + "models": [ + "horde_special::stability.ai#6901", + "SDXL_beta::stability.ai#6901" + ], + "team": { + "name": null, + "id": null + }, + "bridge_agent": "AI Horde Worker:22:https://github.com/db0/AI-Horde-Worker", + "max_pixels": 4194304, + "megapixelsteps_generated": 1281057, + "img2img": true, + "painting": true, + "post-processing": true, + "lora": false, + "type": "image", + "name": "ControlNet_Worker_2", + "id": "3f60c707-df27-48ad-b0f7-0c014960affd", + "online": true + }, + { + "requests_fulfilled": 31765, + "kudos_rewards": 1100030, + "kudos_details": { + "generated": 1089730, + "uptime": 10300 + }, + "performance": "2.3 megapixelsteps per second", + "threads": 1, + "uptime": 117914, + "maintenance_mode": false, + "nsfw": true, + "trusted": true, + "flagged": false, + "uncompleted_jobs": 1109, + "models": [ + "horde_special::stability.ai#6901", + "SDXL_beta::stability.ai#6901" + ], + "team": { + "name": null, + "id": null + }, + "bridge_agent": "AI Horde Worker:22:https://github.com/db0/AI-Horde-Worker", + "max_pixels": 4194304, + "megapixelsteps_generated": 1320465, + "img2img": true, + "painting": true, + "post-processing": true, + "lora": false, + "type": "image", + "name": "ControlNet_Worker_6", + "id": "b06e20aa-fb8d-4dd8-b133-6eea3e2ab9fd", + "online": true + }, + { + "requests_fulfilled": 31687, + "kudos_rewards": 1097316, + "kudos_details": { + "generated": 1087232, + "uptime": 10084 + }, + "performance": "1.9 megapixelsteps per second", + "threads": 1, + "uptime": 116143, + "maintenance_mode": false, + "nsfw": true, + "trusted": true, + "flagged": false, + "uncompleted_jobs": 1137, + "models": [ + "horde_special::stability.ai#6901", + "SDXL_beta::stability.ai#6901" + ], + "team": { + "name": null, + "id": null + }, + "bridge_agent": "AI Horde Worker:22:https://github.com/db0/AI-Horde-Worker", + "max_pixels": 4194304, + "megapixelsteps_generated": 1317993, + "img2img": true, + "painting": true, + "post-processing": true, + "lora": false, + "type": "image", + "name": "ControlNet_Worker_5", + "id": "e2a18a8c-9ad2-4cf7-9f23-8edb39388ea6", + "online": true + }, + { + "requests_fulfilled": 28932, + "kudos_rewards": 1005213, + "kudos_details": { + "generated": 995289, + "uptime": 9924 + }, + "performance": "2.7 megapixelsteps per second", + "threads": 1, + "uptime": 114544, + "maintenance_mode": false, + "nsfw": true, + "trusted": true, + "flagged": false, + "uncompleted_jobs": 1155, + "models": [ + "horde_special::stability.ai#6901", + "SDXL_beta::stability.ai#6901" + ], + "team": { + "name": null, + "id": null + }, + "bridge_agent": "AI Horde Worker:22:https://github.com/db0/AI-Horde-Worker", + "max_pixels": 4194304, + "megapixelsteps_generated": 1205868, + "img2img": true, + "painting": true, + "post-processing": true, + "lora": false, + "type": "image", + "name": "ControlNet_Worker_7", + "id": "db4a6644-434f-4825-a06e-62d53f68829f", + "online": true + }, + { + "requests_fulfilled": 30778, + "kudos_rewards": 1067515, + "kudos_details": { + "generated": 1057716, + "uptime": 9828 + }, + "performance": "2.6 megapixelsteps per second", + "threads": 1, + "uptime": 112205, + "maintenance_mode": false, + "nsfw": true, + "trusted": true, + "flagged": false, + "uncompleted_jobs": 971, + "models": [ + "horde_special::stability.ai#6901", + "SDXL_beta::stability.ai#6901" + ], + "team": { + "name": null, + "id": null + }, + "bridge_agent": "AI Horde Worker:22:https://github.com/db0/AI-Horde-Worker", + "max_pixels": 4194304, + "megapixelsteps_generated": 1283312, + "img2img": true, + "painting": true, + "post-processing": true, + "lora": false, + "type": "image", + "name": "ControlNet_Worker_3", + "id": "e81aadb1-a7d5-456e-b21f-594981399cdd", + "online": true + }, + { + "requests_fulfilled": 373625, + "kudos_rewards": 4705133, + "kudos_details": { + "generated": 3636401, + "uptime": 1074738 + }, + "performance": "0.3 megapixelsteps per second", + "threads": 1, + "uptime": 13081867, + "maintenance_mode": true, + "info": "Quadro P4000 8 GB", + "nsfw": true, + "trusted": true, + "flagged": false, + "uncompleted_jobs": 1006, + "models": [ + "Deliberate", + "Anything Diffusion" + ], + "team": { + "name": null, + "id": null + }, + "bridge_agent": "AI Horde Worker:23:https://github.com/db0/AI-Horde-Worker", + "max_pixels": 262144, + "megapixelsteps_generated": 3361741, + "img2img": true, + "painting": false, + "post-processing": true, + "lora": false, + "type": "image", + "name": "FiFo-001", + "id": "23499b5a-48d3-40a1-8ddb-75cd6e576e1f", + "online": true + }, + { + "requests_fulfilled": 22145, + "kudos_rewards": 42528, + "kudos_details": { + "generated": 22146, + "uptime": 20850 + }, + "performance": "7.4 tokens per second", + "threads": 1, + "uptime": 260541, + "maintenance_mode": false, + "nsfw": true, + "trusted": false, + "flagged": false, + "uncompleted_jobs": 259, + "models": [ + "koboldcpp/airoboros-65b-1.4.1-PI-8192" + ], + "team": { + "name": null, + "id": null + }, + "bridge_agent": "KoboldAI Bridge:10:https://github.com/db0/KoboldAI-Horde-Bridge", + "max_length": 512, + "max_context_length": 8192, + "type": "text", + "name": "jiggle", + "id": "10ae485a-a490-4544-a74c-a1b599e65cf6", + "online": true + }, + { + "requests_fulfilled": 19453, + "kudos_rewards": 508909, + "kudos_details": { + "generated": 241011, + "uptime": 267900 + }, + "performance": "12.2 tokens per second", + "threads": 1, + "uptime": 3220989, + "maintenance_mode": false, + "nsfw": true, + "trusted": true, + "flagged": false, + "uncompleted_jobs": 0, + "models": [ + "asmodeus" + ], + "team": { + "name": null, + "id": null + }, + "bridge_agent": "KoboldAI Bridge:10:https://github.com/db0/KoboldAI-Horde-Bridge", + "max_length": 512, + "max_context_length": 4096, + "type": "text", + "name": "Smurf 4", + "id": "be1f034b-38e4-426c-a9a2-e6b587e4fdc2", + "online": true + }, + { + "requests_fulfilled": 448, + "kudos_rewards": 1098, + "kudos_details": { + "generated": 448, + "uptime": 650 + }, + "performance": "7.8 tokens per second", + "threads": 1, + "uptime": 8850, + "maintenance_mode": false, + "nsfw": true, + "trusted": false, + "flagged": false, + "uncompleted_jobs": 14, + "models": [ + "Wizard-Vicuna-30B-Uncensored-GPTQ" + ], + "team": { + "name": null, + "id": null + }, + "bridge_agent": "KoboldAI Bridge:10:https://github.com/db0/KoboldAI-Horde-Bridge", + "max_length": 204, + "max_context_length": 1496, + "type": "text", + "name": "Frost Meadow GPU", + "id": "a2b931e0-b6a5-43c9-96ec-c1a0cb32680b", + "online": true + }, + { + "requests_fulfilled": 97904, + "kudos_rewards": 2194837, + "kudos_details": { + "generated": 2112027, + "uptime": 82950 + }, + "performance": "18.1 tokens per second", + "threads": 1, + "uptime": 1011474, + "maintenance_mode": false, + "nsfw": true, + "trusted": true, + "flagged": false, + "uncompleted_jobs": 1166, + "models": [ + "PygmalionAI/pygmalion-6b" + ], + "team": { + "name": null, + "id": null + }, + "bridge_agent": "KoboldAI Bridge:10:https://github.com/db0/KoboldAI-Horde-Bridge", + "max_length": 512, + "max_context_length": 2048, + "type": "text", + "name": "AzureBlack6", + "id": "75ce261e-306d-4638-afe9-e408cf803177", + "online": true + }, + { + "requests_fulfilled": 77200, + "kudos_rewards": 1046362, + "kudos_details": { + "generated": 853122, + "uptime": 193250 + }, + "performance": "6.4 tokens per second", + "threads": 1, + "uptime": 2373140, + "maintenance_mode": false, + "info": "RTX 3070 4bit. Uptime may not be consistent due to usage for Gaming or Streaming. https://twitch.tv/LogicismTV", + "nsfw": true, + "trusted": true, + "flagged": false, + "uncompleted_jobs": 144, + "models": [ + "Pygmalion-7b-4bit-GPTQ-Safetensors" + ], + "team": { + "name": null, + "id": null + }, + "bridge_agent": "KoboldAI Bridge:10:https://github.com/db0/KoboldAI-Horde-Bridge", + "max_length": 80, + "max_context_length": 1024, + "type": "text", + "name": "Logicism - Mando's Starfighter", + "id": "425ec99a-3602-40c3-9e4c-bdec2f480abd", + "online": true + }, + { + "requests_fulfilled": 119251, + "kudos_rewards": 3828729, + "kudos_details": { + "generated": 3570511, + "uptime": 258350 + }, + "performance": "8.7 tokens per second", + "threads": 1, + "uptime": 3210587, + "maintenance_mode": false, + "nsfw": true, + "trusted": true, + "flagged": false, + "uncompleted_jobs": 87, + "models": [ + "PygmalionAI/pygmalion-6b" + ], + "team": { + "name": null, + "id": null + }, + "bridge_agent": "KoboldAI Bridge:10:https://github.com/db0/KoboldAI-Horde-Bridge", + "max_length": 512, + "max_context_length": 2048, + "type": "text", + "name": "Sceuick", + "id": "f261b430-cb81-4b60-b8eb-771532024007", + "online": true + }, + { + "requests_fulfilled": 19, + "kudos_rewards": 69, + "kudos_details": { + "generated": 20, + "uptime": 50 + }, + "performance": "4.2 tokens per second", + "threads": 1, + "uptime": 868, + "maintenance_mode": false, + "nsfw": true, + "trusted": false, + "flagged": false, + "uncompleted_jobs": 3, + "models": [ + "koboldcpp/airoboros-65b-gpt4-1.4.ggmlv3.q3_K-M" + ], + "team": { + "name": null, + "id": null + }, + "bridge_agent": "KoboldAI Bridge:10:https://github.com/db0/KoboldAI-Horde-Bridge", + "max_length": 160, + "max_context_length": 2048, + "type": "text", + "name": "Very Raven", + "id": "f0301549-6169-420f-a08a-3bddde56458d", + "online": true + }, + { + "requests_fulfilled": 226280, + "kudos_rewards": 4618772, + "kudos_details": { + "generated": 4309912, + "uptime": 308950 + }, + "performance": "41.1 tokens per second", + "threads": 1, + "uptime": 3791691, + "maintenance_mode": false, + "nsfw": true, + "trusted": true, + "flagged": false, + "uncompleted_jobs": 1479, + "models": [ + "Pygmalion-7b-4bit-GPTQ-Safetensors" + ], + "team": { + "name": null, + "id": null + }, + "bridge_agent": "KoboldAI Bridge:10:https://github.com/db0/KoboldAI-Horde-Bridge", + "max_length": 512, + "max_context_length": 2048, + "type": "text", + "name": "Bird up! 0", + "id": "77add8ce-1a39-4edd-96a5-19140063676d", + "online": true + }, + { + "requests_fulfilled": 738071, + "kudos_rewards": 56663306, + "kudos_details": { + "generated": 55879528, + "uptime": 881800 + }, + "performance": "6.1 tokens per second", + "threads": 1, + "uptime": 10790952, + "maintenance_mode": false, + "info": "RTX3090", + "nsfw": true, + "trusted": true, + "flagged": false, + "uncompleted_jobs": 2645, + "models": [ + "KoboldAI/OPT-13B-Erebus" + ], + "team": { + "name": null, + "id": null + }, + "bridge_agent": "AI Horde Worker:22:https://github.com/db0/AI-Horde-Worker", + "max_length": 512, + "max_context_length": 2048, + "type": "text", + "name": "Nisse", + "id": "14a9a534-d46c-406c-abfa-f845779b1983", + "online": true + }, + { + "requests_fulfilled": 6032, + "kudos_rewards": 19682, + "kudos_details": { + "generated": 6034, + "uptime": 13650 + }, + "performance": "6.9 tokens per second", + "threads": 1, + "uptime": 168986, + "maintenance_mode": false, + "nsfw": true, + "trusted": false, + "flagged": false, + "uncompleted_jobs": 42, + "models": [ + "Pygmalion-7b-4bit-GPTQ-Safetensors" + ], + "team": { + "name": null, + "id": null + }, + "bridge_agent": "KoboldAI Bridge:10:https://github.com/db0/KoboldAI-Horde-Bridge", + "max_length": 200, + "max_context_length": 2048, + "type": "text", + "name": "Pygbot", + "id": "5a8bce48-dfef-4b95-8aae-b024a9248ac5", + "online": true + }, + { + "requests_fulfilled": 84679, + "kudos_rewards": 1022640, + "kudos_details": { + "generated": 816700, + "uptime": 205950 + }, + "performance": "5.3 tokens per second", + "threads": 1, + "uptime": 2514398, + "maintenance_mode": false, + "info": "GTX 1070 4bit. Uptime may not be consistent due to usage for Streaming. https://twitch.tv/LogicismTV", + "nsfw": true, + "trusted": true, + "flagged": false, + "uncompleted_jobs": 97, + "models": [ + "Pygmalion-7b-4bit-GPTQ-Safetensors" + ], + "team": { + "name": null, + "id": null + }, + "bridge_agent": "KoboldAI Bridge:10:https://github.com/db0/KoboldAI-Horde-Bridge", + "max_length": 80, + "max_context_length": 1024, + "type": "text", + "name": "Logicism - Rey's Jakku", + "id": "7d97ece4-ea76-480e-8f70-100391f9d519", + "online": true + }, + { + "requests_fulfilled": 1212853, + "kudos_rewards": 37146838, + "kudos_details": { + "generated": 36337739, + "uptime": 877000 + }, + "performance": "9.3 tokens per second", + "threads": 1, + "uptime": 10666449, + "maintenance_mode": false, + "info": "RTX3060", + "nsfw": true, + "trusted": true, + "flagged": false, + "uncompleted_jobs": 3097, + "models": [ + "PygmalionAI/pygmalion-6b" + ], + "team": { + "name": null, + "id": null + }, + "bridge_agent": "AI Horde Worker:22:https://github.com/db0/AI-Horde-Worker", + "max_length": 512, + "max_context_length": 2048, + "type": "text", + "name": "Tufte", + "id": "5702e22d-b548-4020-9913-1e6535302d51", + "online": true + }, + { + "requests_fulfilled": 97615, + "kudos_rewards": 602133, + "kudos_details": { + "generated": 456133, + "uptime": 146000 + }, + "performance": "11.0 tokens per second", + "threads": 1, + "uptime": 1786057, + "maintenance_mode": false, + "info": "RTX3060", + "nsfw": true, + "trusted": true, + "flagged": false, + "uncompleted_jobs": 1654, + "models": [ + "manticore-13b-chat-pyg-GPTQ" + ], + "team": { + "name": null, + "id": null + }, + "bridge_agent": "KoboldAI Bridge:10:https://github.com/db0/KoboldAI-Horde-Bridge", + "max_length": 256, + "max_context_length": 2048, + "type": "text", + "name": "MarsupialDisco", + "id": "15c53bc4-fec0-4cd3-9431-a9b245e583ae", + "online": true + }, + { + "requests_fulfilled": 510955, + "kudos_rewards": 34567947, + "kudos_details": { + "generated": 34166220, + "uptime": 450700 + }, + "performance": "7.3 tokens per second", + "threads": 1, + "uptime": 5516063, + "maintenance_mode": false, + "info": "Text Worker", + "nsfw": true, + "trusted": true, + "flagged": false, + "uncompleted_jobs": 2359, + "models": [ + "KoboldAI/OPT-13B-Nerybus-Mix" + ], + "team": { + "name": null, + "id": null + }, + "bridge_agent": "AI Horde Worker:22:https://github.com/db0/AI-Horde-Worker", + "max_length": 512, + "max_context_length": 2048, + "type": "text", + "name": "Vittra", + "id": "3f0edbf2-f195-4662-a801-572700b7ba90", + "online": true + }, + { + "requests_fulfilled": 19337, + "kudos_rewards": 509034, + "kudos_details": { + "generated": 241134, + "uptime": 267900 + }, + "performance": "6.4 tokens per second", + "threads": 1, + "uptime": 3220911, + "maintenance_mode": false, + "nsfw": true, + "trusted": true, + "flagged": false, + "uncompleted_jobs": 0, + "models": [ + "asmodeus" + ], + "team": { + "name": null, + "id": null + }, + "bridge_agent": "KoboldAI Bridge:10:https://github.com/db0/KoboldAI-Horde-Bridge", + "max_length": 512, + "max_context_length": 4096, + "type": "text", + "name": "Smurf 3", + "id": "f9698428-a9f9-4cdf-bc70-a1b753ebbcd5", + "online": true + }, + { + "requests_fulfilled": 19546, + "kudos_rewards": 511416, + "kudos_details": { + "generated": 243572, + "uptime": 267850 + }, + "performance": "4.9 tokens per second", + "threads": 1, + "uptime": 3220652, + "maintenance_mode": false, + "nsfw": true, + "trusted": true, + "flagged": false, + "uncompleted_jobs": 0, + "models": [ + "asmodeus" + ], + "team": { + "name": null, + "id": null + }, + "bridge_agent": "KoboldAI Bridge:10:https://github.com/db0/KoboldAI-Horde-Bridge", + "max_length": 512, + "max_context_length": 4096, + "type": "text", + "name": "Smurf 5", + "id": "d8873c0d-a1d8-47d6-8b18-3328535482bd", + "online": true + }, + { + "requests_fulfilled": 35240, + "kudos_rewards": 467859, + "kudos_details": { + "generated": 299612, + "uptime": 168250 + }, + "performance": "14.9 tokens per second", + "threads": 1, + "uptime": 2053530, + "maintenance_mode": false, + "info": "RTX 2080 6GB Ryzen 7 64GB", + "nsfw": true, + "trusted": true, + "flagged": false, + "uncompleted_jobs": 72, + "models": [ + "PygmalionAI/pygmalion-1.3b" + ], + "team": { + "name": null, + "id": null + }, + "bridge_agent": "KoboldAI Bridge:10:https://github.com/db0/KoboldAI-Horde-Bridge", + "max_length": 80, + "max_context_length": 1024, + "type": "text", + "name": "WolfySoy's PC", + "id": "65c99111-cbd1-4cdc-b25e-29c93f22af87", + "online": true + }, + { + "requests_fulfilled": 45027, + "kudos_rewards": 1293550, + "kudos_details": { + "generated": 481250, + "uptime": 812300 + }, + "performance": "28.3 tokens per second", + "threads": 1, + "uptime": 9780223, + "maintenance_mode": false, + "info": "Titan X Maxwell", + "nsfw": true, + "trusted": true, + "flagged": false, + "uncompleted_jobs": 69, + "models": [ + "Gustavosta/MagicPrompt-Stable-Diffusion" + ], + "team": { + "name": null, + "id": null + }, + "bridge_agent": "KoboldAI Bridge:10:https://github.com/db0/KoboldAI-Horde-Bridge", + "max_length": 80, + "max_context_length": 1024, + "type": "text", + "name": "a_weird_titanx", + "id": "78330b07-29e8-4e29-9ce5-28c172883352", + "online": true + }, + { + "requests_fulfilled": 47969, + "kudos_rewards": 706059, + "kudos_details": { + "generated": 333060, + "uptime": 373000 + }, + "performance": "1.1 tokens per second", + "threads": 1, + "uptime": 4699214, + "maintenance_mode": false, + "nsfw": true, + "trusted": true, + "flagged": false, + "uncompleted_jobs": 34, + "models": [ + "ehartford/WizardLM-13B-Uncensored" + ], + "team": { + "name": null, + "id": null + }, + "bridge_agent": "KoboldAI Bridge:10:https://github.com/db0/KoboldAI-Horde-Bridge", + "max_length": 256, + "max_context_length": 512, + "type": "text", + "name": "slower cpu", + "id": "0f382d12-8fa6-4253-bcf8-3ed5749a9e1f", + "online": true + }, + { + "requests_fulfilled": 19362, + "kudos_rewards": 508233, + "kudos_details": { + "generated": 240383, + "uptime": 267850 + }, + "performance": "19.9 tokens per second", + "threads": 1, + "uptime": 3220416, + "maintenance_mode": false, + "nsfw": true, + "trusted": true, + "flagged": false, + "uncompleted_jobs": 1, + "models": [ + "asmodeus" + ], + "team": { + "name": null, + "id": null + }, + "bridge_agent": "KoboldAI Bridge:10:https://github.com/db0/KoboldAI-Horde-Bridge", + "max_length": 512, + "max_context_length": 4096, + "type": "text", + "name": "Smurf 2", + "id": "37cc1633-e241-4cc7-9bea-e9a4d29b16e5", + "online": true + }, + { + "requests_fulfilled": 29245, + "kudos_rewards": 613374, + "kudos_details": { + "generated": null, + "uptime": 579360 + }, + "performance": "10.5 seconds per form", + "threads": 1, + "uptime": 8731711, + "maintenance_mode": false, + "nsfw": false, + "trusted": true, + "flagged": false, + "uncompleted_jobs": 5263, + "forms": [ + "caption", + "interrogation", + "nsfw" + ], + "team": { + "name": null, + "id": null + }, + "bridge_agent": "AI Horde Worker:20:https://github.com/db0/AI-Horde-Worker", + "type": "interrogation", + "name": "Bordn #-49291740", + "id": "43ab74bb-ed39-41c1-9dcf-4b59ae2ae882", + "online": true + }, + { + "requests_fulfilled": 7767, + "kudos_rewards": 378289, + "kudos_details": { + "generated": null, + "uptime": 369080 + }, + "performance": "3.8 seconds per form", + "threads": 1, + "uptime": 5575889, + "maintenance_mode": false, + "nsfw": false, + "trusted": true, + "flagged": false, + "uncompleted_jobs": 126, + "forms": [ + "4x_AnimeSharp", + "caption", + "CodeFormers", + "GFPGAN", + "interrogation", + "NMKD_Siax", + "nsfw", + "RealESRGAN_x2plus", + "RealESRGAN_x4plus", + "RealESRGAN_x4plus_anime_6B", + "strip_background" + ], + "team": { + "name": null, + "id": null + }, + "bridge_agent": "AI Horde Worker:23:https://github.com/db0/AI-Horde-Worker", + "type": "interrogation", + "name": "kal9002", + "id": "f2a4892a-09ba-4ac1-a262-0e661511c97e", + "online": true + }, + { + "requests_fulfilled": 0, + "kudos_rewards": 200, + "kudos_details": { + "generated": null, + "uptime": 240 + }, + "performance": "No requests fulfilled yet", + "threads": 1, + "uptime": 3597, + "maintenance_mode": false, + "nsfw": false, + "trusted": false, + "flagged": false, + "uncompleted_jobs": 0, + "forms": [ + "4x_AnimeSharp", + "caption", + "CodeFormers", + "GFPGAN", + "interrogation", + "NMKD_Siax", + "nsfw", + "RealESRGAN_x2plus", + "RealESRGAN_x4plus", + "RealESRGAN_x4plus_anime_6B", + "strip_background" + ], + "team": { + "name": null, + "id": null + }, + "bridge_agent": "AI Horde Worker:23:https://github.com/db0/AI-Horde-Worker", + "type": "interrogation", + "name": "Jade Alchemist", + "id": "3cd28515-113e-40a1-a4f8-3424d2302389", + "online": true + }, + { + "requests_fulfilled": 5591, + "kudos_rewards": 242387, + "kudos_details": { + "generated": null, + "uptime": 235240 + }, + "performance": "7.7 seconds per form", + "threads": 1, + "uptime": 3536614, + "maintenance_mode": false, + "nsfw": false, + "trusted": true, + "flagged": false, + "uncompleted_jobs": 171, + "forms": [ + "4x_AnimeSharp", + "caption", + "CodeFormers", + "GFPGAN", + "interrogation", + "NMKD_Siax", + "nsfw", + "RealESRGAN_x2plus", + "RealESRGAN_x4plus", + "RealESRGAN_x4plus_anime_6B", + "strip_background" + ], + "team": { + "name": null, + "id": null + }, + "bridge_agent": "AI Horde Worker:21:https://github.com/db0/AI-Horde-Worker", + "type": "interrogation", + "name": "lommax94", + "id": "ea9f1ae8-c130-4e12-afec-51efbdb25160", + "online": true + }, + { + "requests_fulfilled": 2006, + "kudos_rewards": 75059, + "kudos_details": { + "generated": null, + "uptime": 72440 + }, + "performance": "9.5 seconds per form", + "threads": 1, + "uptime": 1091328, + "maintenance_mode": false, + "nsfw": false, + "trusted": true, + "flagged": false, + "uncompleted_jobs": 6, + "forms": [ + "4x_AnimeSharp", + "caption", + "CodeFormers", + "GFPGAN", + "interrogation", + "NMKD_Siax", + "nsfw", + "RealESRGAN_x2plus", + "RealESRGAN_x4plus", + "RealESRGAN_x4plus_anime_6B", + "strip_background" + ], + "team": { + "name": null, + "id": null + }, + "bridge_agent": "AI Horde Worker:23:https://github.com/db0/AI-Horde-Worker", + "type": "interrogation", + "name": "AiBrush-2-Alchemist", + "id": "8f79175f-9e6f-4559-a148-49ffd2275595", + "online": true + }, + { + "requests_fulfilled": 1076, + "kudos_rewards": 45539, + "kudos_details": { + "generated": null, + "uptime": 44200 + }, + "performance": "5.4 seconds per form", + "threads": 1, + "uptime": 665755, + "maintenance_mode": false, + "nsfw": false, + "trusted": true, + "flagged": false, + "uncompleted_jobs": 22, + "forms": [ + "4x_AnimeSharp", + "caption", + "CodeFormers", + "GFPGAN", + "interrogation", + "NMKD_Siax", + "nsfw", + "RealESRGAN_x2plus", + "RealESRGAN_x4plus", + "RealESRGAN_x4plus_anime_6B", + "strip_background" + ], + "team": { + "name": null, + "id": null + }, + "bridge_agent": "AI Horde Worker:23:https://github.com/db0/AI-Horde-Worker", + "type": "interrogation", + "name": "kal9006", + "id": "d96854f8-0964-4895-8f3c-a1e859264e92", + "online": true + }, + { + "requests_fulfilled": 7612, + "kudos_rewards": 322979, + "kudos_details": { + "generated": null, + "uptime": 314240 + }, + "performance": "5.0 seconds per form", + "threads": 1, + "uptime": 4751959, + "maintenance_mode": false, + "nsfw": false, + "trusted": true, + "flagged": false, + "uncompleted_jobs": 148, + "forms": [ + "4x_AnimeSharp", + "caption", + "CodeFormers", + "GFPGAN", + "interrogation", + "NMKD_Siax", + "nsfw", + "RealESRGAN_x2plus", + "RealESRGAN_x4plus", + "RealESRGAN_x4plus_anime_6B", + "strip_background" + ], + "team": { + "name": null, + "id": null + }, + "bridge_agent": "AI Horde Worker:23:https://github.com/db0/AI-Horde-Worker", + "type": "interrogation", + "name": "kal9001", + "id": "fa8157e1-5f14-492f-ae92-a3b70d420223", + "online": true + }, + { + "requests_fulfilled": 13223, + "kudos_rewards": 383914, + "kudos_details": { + "generated": null, + "uptime": 381160 + }, + "performance": "4.0 seconds per form", + "threads": 4, + "uptime": 5388211, + "maintenance_mode": false, + "nsfw": false, + "trusted": true, + "flagged": false, + "uncompleted_jobs": 184, + "forms": [ + "caption", + "nsfw" + ], + "team": { + "name": null, + "id": null + }, + "bridge_agent": "AI Horde Worker:22:https://github.com/db0/AI-Horde-Worker", + "type": "interrogation", + "name": "stablehorde-fs-worker", + "id": "8f084136-3824-4e77-a265-2918e23a71c8", + "online": true + }, + { + "requests_fulfilled": 6, + "kudos_rewards": 368, + "kudos_details": { + "generated": null, + "uptime": 360 + }, + "performance": "11.7 seconds per form", + "threads": 1, + "uptime": 6072, + "maintenance_mode": false, + "nsfw": false, + "trusted": true, + "flagged": false, + "uncompleted_jobs": 1, + "forms": [ + "4x_AnimeSharp", + "caption", + "CodeFormers", + "GFPGAN", + "interrogation", + "NMKD_Siax", + "nsfw", + "RealESRGAN_x2plus", + "RealESRGAN_x4plus", + "RealESRGAN_x4plus_anime_6B", + "strip_background" + ], + "team": { + "name": null, + "id": null + }, + "bridge_agent": "AI Horde Worker:23:https://github.com/db0/AI-Horde-Worker", + "type": "interrogation", + "name": "Automated Instance #-6984875", + "id": "2eab3073-bb3d-4bf8-9240-bd2912d72bf6", + "online": true + }, + { + "requests_fulfilled": 37, + "kudos_rewards": 3415, + "kudos_details": { + "generated": null, + "uptime": 3360 + }, + "performance": "5.0 seconds per form", + "threads": 1, + "uptime": 50971, + "maintenance_mode": false, + "nsfw": false, + "trusted": true, + "flagged": false, + "uncompleted_jobs": 0, + "forms": [ + "4x_AnimeSharp", + "caption", + "CodeFormers", + "GFPGAN", + "interrogation", + "NMKD_Siax", + "nsfw", + "RealESRGAN_x2plus", + "RealESRGAN_x4plus", + "RealESRGAN_x4plus_anime_6B", + "strip_background" + ], + "team": { + "name": null, + "id": null + }, + "bridge_agent": "AI Horde Worker:23:https://github.com/db0/AI-Horde-Worker", + "type": "interrogation", + "name": "kal9007", + "id": "68cdc28b-6004-438b-ad5a-fc661b41eb22", + "online": true + }, + { + "requests_fulfilled": 6372, + "kudos_rewards": 341860, + "kudos_details": { + "generated": null, + "uptime": 334280 + }, + "performance": "5.9 seconds per form", + "threads": 1, + "uptime": 5052466, + "maintenance_mode": false, + "nsfw": false, + "trusted": true, + "flagged": false, + "uncompleted_jobs": 123, + "forms": [ + "4x_AnimeSharp", + "caption", + "CodeFormers", + "GFPGAN", + "interrogation", + "NMKD_Siax", + "nsfw", + "RealESRGAN_x2plus", + "RealESRGAN_x4plus", + "RealESRGAN_x4plus_anime_6B", + "strip_background" + ], + "team": { + "name": null, + "id": null + }, + "bridge_agent": "AI Horde Worker:23:https://github.com/db0/AI-Horde-Worker", + "type": "interrogation", + "name": "kal9004", + "id": "1e77f09c-1219-4fda-a859-7483544acf3c", + "online": true + }, + { + "requests_fulfilled": 1366, + "kudos_rewards": 56091, + "kudos_details": { + "generated": null, + "uptime": 54200 + }, + "performance": "4.9 seconds per form", + "threads": 1, + "uptime": 816195, + "maintenance_mode": false, + "nsfw": false, + "trusted": true, + "flagged": false, + "uncompleted_jobs": 2, + "forms": [ + "4x_AnimeSharp", + "caption", + "CodeFormers", + "GFPGAN", + "interrogation", + "NMKD_Siax", + "nsfw", + "RealESRGAN_x2plus", + "RealESRGAN_x4plus", + "RealESRGAN_x4plus_anime_6B", + "strip_background" + ], + "team": { + "name": null, + "id": null + }, + "bridge_agent": "AI Horde Worker:23:https://github.com/db0/AI-Horde-Worker", + "type": "interrogation", + "name": "AiBrush-3-Alchemist", + "id": "a353b83d-2239-4af3-8808-188f265daf12", + "online": true + }, + { + "requests_fulfilled": 1239, + "kudos_rewards": 68009, + "kudos_details": { + "generated": null, + "uptime": 66440 + }, + "performance": "5.9 seconds per form", + "threads": 1, + "uptime": 999072, + "maintenance_mode": false, + "nsfw": false, + "trusted": true, + "flagged": false, + "uncompleted_jobs": 1, + "forms": [ + "4x_AnimeSharp", + "caption", + "CodeFormers", + "GFPGAN", + "interrogation", + "NMKD_Siax", + "nsfw", + "RealESRGAN_x2plus", + "RealESRGAN_x4plus", + "RealESRGAN_x4plus_anime_6B", + "strip_background" + ], + "team": { + "name": null, + "id": null + }, + "bridge_agent": "AI Horde Worker:23:https://github.com/db0/AI-Horde-Worker", + "type": "interrogation", + "name": "AiBrush-4-Alchemist", + "id": "0b0bd149-9e7e-477b-830e-8a7b1f0796af", + "online": true + }, + { + "requests_fulfilled": 11377, + "kudos_rewards": 444217, + "kudos_details": { + "generated": null, + "uptime": 430605 + }, + "performance": "6.7 seconds per form", + "threads": 2, + "uptime": 6893173, + "maintenance_mode": false, + "nsfw": false, + "trusted": true, + "flagged": false, + "uncompleted_jobs": 1416, + "forms": [ + "caption", + "interrogation", + "nsfw" + ], + "team": { + "name": null, + "id": null + }, + "bridge_agent": "AI Horde Worker:20:https://github.com/db0/AI-Horde-Worker", + "type": "interrogation", + "name": "The Azure Happiness", + "id": "d9e2e140-3622-417a-973f-4a26315ec987", + "online": true + }, + { + "requests_fulfilled": 7491, + "kudos_rewards": 149393, + "kudos_details": { + "generated": null, + "uptime": 138000 + }, + "performance": "3.9 seconds per form", + "threads": 1, + "uptime": 2078523, + "maintenance_mode": false, + "nsfw": false, + "trusted": true, + "flagged": false, + "uncompleted_jobs": 53, + "forms": [ + "4x_AnimeSharp", + "caption", + "CodeFormers", + "GFPGAN", + "interrogation", + "NMKD_Siax", + "nsfw", + "RealESRGAN_x2plus", + "RealESRGAN_x4plus", + "RealESRGAN_x4plus_anime_6B", + "strip_background" + ], + "team": { + "name": null, + "id": null + }, + "bridge_agent": "AI Horde Worker:23:https://github.com/db0/AI-Horde-Worker", + "type": "interrogation", + "name": "AiBrush-Alchemist", + "id": "5daebf7c-3cd7-4002-a4cc-221721809161", + "online": true + }, + { + "requests_fulfilled": 6434, + "kudos_rewards": 358240, + "kudos_details": { + "generated": null, + "uptime": 350760 + }, + "performance": "5.3 seconds per form", + "threads": 1, + "uptime": 5300553, + "maintenance_mode": false, + "nsfw": false, + "trusted": true, + "flagged": false, + "uncompleted_jobs": 94, + "forms": [ + "4x_AnimeSharp", + "caption", + "CodeFormers", + "GFPGAN", + "interrogation", + "NMKD_Siax", + "nsfw", + "RealESRGAN_x2plus", + "RealESRGAN_x4plus", + "RealESRGAN_x4plus_anime_6B", + "strip_background" + ], + "team": { + "name": null, + "id": null + }, + "bridge_agent": "AI Horde Worker:23:https://github.com/db0/AI-Horde-Worker", + "type": "interrogation", + "name": "kal9003", + "id": "2fafdbc0-2bd8-4171-be82-057d69b85f2c", + "online": true + }, + { + "requests_fulfilled": 4795, + "kudos_rewards": 260778, + "kudos_details": { + "generated": null, + "uptime": 254880 + }, + "performance": "3.7 seconds per form", + "threads": 1, + "uptime": 3843859, + "maintenance_mode": false, + "nsfw": false, + "trusted": true, + "flagged": false, + "uncompleted_jobs": 87, + "forms": [ + "4x_AnimeSharp", + "caption", + "CodeFormers", + "GFPGAN", + "interrogation", + "NMKD_Siax", + "nsfw", + "RealESRGAN_x2plus", + "RealESRGAN_x4plus", + "RealESRGAN_x4plus_anime_6B", + "strip_background" + ], + "team": { + "name": null, + "id": null + }, + "bridge_agent": "AI Horde Worker:23:https://github.com/db0/AI-Horde-Worker", + "type": "interrogation", + "name": "kal9005", + "id": "a3aacaf6-a3ef-4577-8f10-68daac0f1694", + "online": true + }, + { + "requests_fulfilled": 11734, + "kudos_rewards": 515731, + "kudos_details": { + "generated": null, + "uptime": 504240 + }, + "performance": "10.8 seconds per form", + "threads": 3, + "uptime": 7797953, + "maintenance_mode": false, + "nsfw": false, + "trusted": true, + "flagged": false, + "uncompleted_jobs": 2724, + "forms": [ + "caption", + "nsfw" + ], + "team": { + "name": null, + "id": null + }, + "bridge_agent": "AI Horde Worker:20:https://github.com/db0/AI-Horde-Worker", + "type": "interrogation", + "name": "Mach2", + "id": "cbbe7972-e415-4018-8633-2f9d879550a8", + "online": true + } +] diff --git a/tests/test_data/ai_horde_api/example_responses/ImageGenerateAsyncResponse.json b/tests/test_data/ai_horde_api/example_responses/ImageGenerateAsyncResponse.json deleted file mode 100644 index 0d269e1..0000000 --- a/tests/test_data/ai_horde_api/example_responses/ImageGenerateAsyncResponse.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "id": "string", - "kudos": 0, - "message": "string" -} diff --git a/tests/test_data/ai_horde_api/example_responses/ImageGenerateJobResponse.json b/tests/test_data/ai_horde_api/example_responses/ImageGenerateJobResponse.json deleted file mode 100644 index 03e11d8..0000000 --- a/tests/test_data/ai_horde_api/example_responses/ImageGenerateJobResponse.json +++ /dev/null @@ -1,64 +0,0 @@ -{ - "payload": { - "sampler_name": "k_lms", - "cfg_scale": 7.5, - "denoising_strength": 0.75, - "seed": "The little seed that could", - "height": 512, - "width": 512, - "seed_variation": 1, - "post_processing": [ - "GFPGAN" - ], - "karras": false, - "tiling": false, - "hires_fix": false, - "clip_skip": 1, - "control_type": "canny", - "image_is_control": false, - "return_control_map": false, - "facefixer_strength": 0.75, - "loras": [ - { - "name": "GlowingRunesAIV6", - "model": 1, - "clip": 1, - "inject_trigger": "string" - } - ], - "special": { - "*": { - "additionalProp1": {}, - "additionalProp2": {}, - "additionalProp3": {} - } - }, - "prompt": "string", - "ddim_steps": 30, - "n_iter": 1, - "use_nsfw_censor": true - }, - "id": "00000000-0000-0000-0000-000000000000", - "skipped": { - "worker_id": 0, - "performance": 0, - "nsfw": 0, - "blacklist": 0, - "untrusted": 0, - "models": 0, - "bridge_version": 0, - "kudos": 0, - "max_pixels": 0, - "unsafe_ip": 0, - "img2img": 0, - "painting": 0, - "post-processing": 0, - "lora": 0, - "controlnet": 0 - }, - "model": "string", - "source_image": "string", - "source_processing": "img2img", - "source_mask": "string", - "r2_upload": "string" - } diff --git a/tests/test_data/ai_horde_api/example_responses/ImageGenerateStatusResponse.json b/tests/test_data/ai_horde_api/example_responses/ImageGenerateStatusResponse.json deleted file mode 100644 index c376397..0000000 --- a/tests/test_data/ai_horde_api/example_responses/ImageGenerateStatusResponse.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "finished": 0, - "processing": 0, - "restarted": 0, - "waiting": 0, - "done": true, - "faulted": false, - "wait_time": 0, - "queue_position": 0, - "kudos": 0, - "is_possible": true, - "generations": [ - { - "worker_id": "string", - "worker_name": "string", - "model": "string", - "state": "ok", - "img": "string", - "seed": "string", - "id": "string", - "censored": true - } - ], - "shared": true -} diff --git a/tests/test_data/ai_horde_api/example_responses/ImageGenerationJobSubmitRequest.json b/tests/test_data/ai_horde_api/example_responses/ImageGenerationJobSubmitRequest.json deleted file mode 100644 index 02f4b2d..0000000 --- a/tests/test_data/ai_horde_api/example_responses/ImageGenerationJobSubmitRequest.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "id": "00000000-0000-0000-0000-000000000000", - "generation": "R2", - "state": "ok", - "seed": 0, - "censored": false -} diff --git a/tests/test_data/ai_horde_api/example_responses/ImageGenerationJobSubmitResponse.json b/tests/test_data/ai_horde_api/example_responses/ImageGenerationJobSubmitResponse.json deleted file mode 100644 index df1be44..0000000 --- a/tests/test_data/ai_horde_api/example_responses/ImageGenerationJobSubmitResponse.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "reward": 10 -} diff --git a/tests/test_data/ai_horde_api/example_responses/StatsModelsResponse.json b/tests/test_data/ai_horde_api/example_responses/StatsModelsResponse.json deleted file mode 100644 index 3d2446d..0000000 --- a/tests/test_data/ai_horde_api/example_responses/StatsModelsResponse.json +++ /dev/null @@ -1,590 +0,0 @@ -{ - "day": { - "Zelda BOTW": 52, - "Zeipher Female Model": 7093, - "Zack3D": 257, - "Yiffy": 1918, - "Xynthii-Diffusion": 41, - "Woop-Woop Photo": 926, - "Wavyfusion": 102, - "waifu_diffusion": 3895, - "Voxel Art Diffusion": 71, - "Vivid Watercolors": 65, - "VinteProtogenMix": 86, - "Vintedois Diffusion": 398, - "vectorartz": 33, - "Vector Art": 92, - "Van Gogh Diffusion": 88, - "Valorant Diffusion": 296, - "URPM": 8370, - "Unstable Ink Dream": 256, - "UMI Olympus": 237, - "Ultraskin": 145, - "Uhmami": 263, - "T-Shirt Print Designs": 68, - "T-Shirt Diffusion": 67, - "Tron Legacy Diffusion": 80, - "Trinart Characters": 265, - "trinart": 110, - "TrexMix": 60, - "SynthwavePunk": 39, - "Synthwave": 82, - "Sygil-Dev Diffusion": 264, - "Supermarionation": 39, - "stable_diffusion_inpainting": 266, - "stable_diffusion_2_inpainting": 52, - "stable_diffusion_2.1": 5435, - "stable_diffusion": 50067, - "Squishmallow Diffusion": 48, - "Spider-Verse Diffusion": 48, - "Sonic Diffusion": 139, - "Something": 1657, - "Smoke Diffusion": 81, - "Seek.art MEGA": 163, - "SD-Silicon": 774, - "Sci-Fi Diffusion": 104, - "Samdoesarts Ultmerge": 297, - "RPG": 509, - "Rodent Diffusion": 172, - "Robo-Diffusion": 61, - "Rev Animated": 8381, - "Redshift Diffusion": 721, - "Realistic Vision": 9196, - "Realism Engine": 786, - "RealBiter": 722, - "RCNZ Gorilla With A Brick": 187, - "RCNZ Dumb Monkey": 133, - "Ranma Diffusion": 406, - "Rainbowpatch": 50, - "Rachel Walker Watercolors": 39, - "PVC": 97, - "Pulp Vector Art": 36, - "Protogen Infinity": 512, - "Protogen Anime": 197, - "ProtoGen": 774, - "Project Unreal Engine 5": 17297, - "PRMJ": 114, - "Pretty 2.5D": 1911, - "PPP": 204, - "PortraitPlus": 648, - "Pokemon3D": 68, - "Poison": 509, - "PIXHELL": 79, - "pix2pix": 36, - "PFG": 436, - "Perfect World": 1635, - "Pastel Mix": 1042, - "Papercut Diffusion": 151, - "Papercutcraft": 67, - "OrbAI": 59, - "Openniji": 873, - "Nitro Diffusion": 222, - "NeverEnding Dream": 398, - "Movie Diffusion": 187, - "MoistMix": 257, - "Moedel": 164, - "mo-di-diffusion": 469, - "ModernArt Diffusion": 191, - "Min Illust Background": 96, - "Midjourney PaintArt": 217, - "Midjourney Diffusion": 6696, - "Microworlds": 462, - "Microscopic": 85, - "Microcritters": 38, - "Microchars": 78, - "Microcasing": 57, - "Mega Merge Diffusion": 202, - "Marvel Diffusion": 121, - "Liberty": 3035, - "Lawlas's yiff mix": 2924, - "Laolei New Berry Protogen Mix": 193, - "kurzgesagt": 81, - "Korestyle": 225, - "Knollingcase": 86, - "Kenshi": 106, - "JWST Deep Space Diffusion": 183, - "Jim Eidomode": 694, - "Inkpunk Diffusion": 419, - "Illuminati Diffusion": 778, - "iCoMix": 469, - "HRL": 397, - "Hentai Diffusion": 9627, - "Healy's Anime Blend": 539, - "Hassanblend": 1292, - "HASDX": 1022, - "Guohua Diffusion": 273, - "GuoFeng": 811, - "GTA5 Artwork Diffusion": 188, - "Graphic-Art": 129, - "Grapefruit Hentai": 6964, - "GorynichMix": 583, - "Ghibli Diffusion": 429, - "Future Diffusion": 177, - "Furry Epoch": 603, - "Funko Diffusion": 105, - "FKing SciFi": 102, - "Fantasy Card Diffusion": 506, - "FaeTastic": 412, - "ExpMix Line": 667, - "Experience": 1053, - "Eternos": 43, - "Epic Diffusion": 7752, - "Elldreths Retro Mix": 169, - "Elldreth's Lucid Mix": 349, - "Elden Ring Diffusion": 292, - "Eimis Anime Diffusion": 1227, - "Dungeons n Waifus": 1105, - "Dungeons and Diffusion": 193, - "DucHaiten Classic Anime": 126, - "DucHaiten": 370, - "Dreamshaper": 6579, - "DreamLikeSamKuvshinov": 213, - "Dreamlike Photoreal": 1900, - "dreamlike_diffusion_inpainting": 115, - "Dreamlike Diffusion": 1559, - "Double Exposure Diffusion": 144, - "DnD Item": 82, - "Disco Elysium": 107, - "DGSpitzer Art Diffusion": 122, - "Deliberate": 100398, - "Dark Victorian Diffusion": 182, - "Darkest Diffusion": 108, - "Dan Mumford Style": 97, - "CyriousMix": 1070, - "Cyberpunk Anime Diffusion": 368, - "Counterfeit": 12031, - "Concept Sheet": 86, - "Comic-Diffusion": 271, - "Coloring Book": 159, - "Colorful": 1412, - "Clazy": 243, - "Classic Animation Diffusion": 317, - "ChromaV5": 313, - "ChilloutMix": 6976, - "Cheese Daddys Landscape Mix": 487, - "CharHelper": 88, - "Char": 121, - "BubblyDubbly": 189, - "BPModel": 111, - "Borderlands": 166, - "Balloon Art": 105, - "A to Zovya RPG": 179, - "Asim Simpsons": 134, - "Archer Diffusion": 140, - "Arcane Diffusion": 271, - "App Icon Diffusion": 168, - "anything_v4_inpainting": 220, - "Anything v3": 1244, - "Anything Diffusion": 35516, - "Anygen": 1159, - "Anime Pencil Diffusion": 249, - "Analog Diffusion": 1164, - "AIO Pixel Art": 272, - "ACertainThing": 1052, - "AbyssOrangeMix-AfterDark": 2206, - "Abyss OrangeMix": 5324, - "3DKX": 543 - }, - "month": { - "Zelda BOTW": 2545, - "Zeipher Female Model": 199364, - "Zack3D": 9513, - "Yiffy": 60025, - "Xynthii-Diffusion": 1739, - "Woop-Woop Photo": 33123, - "Wavyfusion": 2573, - "Waifu Diffusion Beta": 1963, - "waifu_diffusion": 180673, - "Voxel Art Diffusion": 2044, - "Vivid Watercolors": 3439, - "VinteProtogenMix": 7801, - "Vintedois Diffusion": 18223, - "vectorartz": 3070, - "Vector Art": 3189, - "Van Gogh Diffusion": 2123, - "Valorant Diffusion": 5569, - "URPM": 261227, - "Unstable Ink Dream": 4882, - "UMI Olympus": 8631, - "Ultraskin": 5351, - "Uhmami": 7780, - "T-Shirt Print Designs": 4878, - "T-Shirt Diffusion": 3258, - "Tron Legacy Diffusion": 2571, - "Trinart Characters": 9287, - "trinart": 7035, - "TrexMix": 3093, - "SynthwavePunk": 2067, - "Synthwave": 3214, - "Sygil-Dev Diffusion": 2791, - "Supermarionation": 1513, - "stable_diffusion_inpainting": 19478, - "stable_diffusion_2_inpainting": 1174, - "Stable Diffusion 2 Depth": 42, - "stable_diffusion_2.1_512": 1099, - "stable_diffusion_2.1": 90131, - "stable_diffusion_2.0_512": 577, - "stable_diffusion_2.0": 788, - "stable_diffusion_1.4": 393, - "stable_diffusion": 1641740, - "Squishmallow Diffusion": 1858, - "Spider-Verse Diffusion": 2059, - "Sonic Diffusion": 3735, - "Something": 30352, - "Smoke Diffusion": 2152, - "Seek.art MEGA": 19849, - "SD-Silicon": 11816, - "Sci-Fi Diffusion": 4786, - "Samdoesarts Ultmerge": 14503, - "RPG": 15562, - "Rodent Diffusion": 4414, - "Robo-Diffusion": 2948, - "Rev Animated": 154606, - "Redshift Diffusion": 28999, - "Realistic Vision": 319098, - "Realism Engine": 26505, - "RealBiter": 23136, - "RCNZ Gorilla With A Brick": 5482, - "RCNZ Dumb Monkey": 4633, - "Ranma Diffusion": 13352, - "Rainbowpatch": 2535, - "Rachel Walker Watercolors": 3035, - "PVC": 992, - "Pulp Vector Art": 2381, - "Protogen Infinity": 36252, - "Protogen Anime": 7434, - "ProtoGen": 27768, - "Project Unreal Engine 5": 347413, - "PRMJ": 3016, - "Pretty 2.5D": 70488, - "PPP": 16159, - "PortraitPlus": 18649, - "Pokemon3D": 2310, - "Poison": 25023, - "PIXHELL": 960, - "pix2pix": 2293, - "PFG": 20834, - "Perfect World": 17117, - "Pastel Mix": 37940, - "Papercut Diffusion": 4721, - "Papercutcraft": 6535, - "OrbAI": 1705, - "Openniji": 28838, - "Open Journey Beta": 248, - "Nitro Diffusion": 4310, - "NeverEnding Dream": 51690, - "Movie Diffusion": 7000, - "MoistMix": 27590, - "Moedel": 4248, - "mo-di-diffusion": 13538, - "ModernArt Diffusion": 3370, - "Min Illust Background": 2588, - "Midjourney PaintArt": 33792, - "Midjourney Diffusion": 142024, - "Microworlds": 5480, - "Microscopic": 1655, - "Microcritters": 2072, - "Microchars": 2197, - "Microcasing": 2081, - "Mega Merge Diffusion": 5062, - "Marvel Diffusion": 2599, - "Liberty": 96651, - "Lawlas's yiff mix": 141521, - "Laolei New Berry Protogen Mix": 9336, - "kurzgesagt": 2501, - "Korestyle": 3912, - "Knollingcase": 2966, - "Kenshi": 35173, - "JWST Deep Space Diffusion": 5862, - "Jim Eidomode": 5862, - "Inkpunk Diffusion": 17695, - "Illuminati Diffusion": 23517, - "iCoMix": 51140, - "HRL": 10759, - "Hentai Diffusion": 422334, - "Healy's Anime Blend": 11265, - "Hassanblend": 42319, - "HASDX": 21817, - "Guohua Diffusion": 3227, - "GuoFeng": 14487, - "GTM Ultimate Blend": 6032, - "GTA5 Artwork Diffusion": 16263, - "Graphic-Art": 4071, - "Grapefruit Hentai": 133812, - "GorynichMix": 19641, - "Ghibli Diffusion": 4973, - "Future Diffusion": 3937, - "Furry Epoch": 16458, - "Funko Diffusion": 3871, - "FKing SciFi": 5213, - "Fantasy Card Diffusion": 8121, - "FaeTastic": 45979, - "ExpMix Line": 55321, - "Experience": 38247, - "Eternos": 1798, - "Epic Diffusion": 183511, - "Elldreths Retro Mix": 5015, - "Elldreth's Lucid Mix": 7128, - "Elden Ring Diffusion": 10925, - "Eimis Anime Diffusion": 52751, - "Dungeons n Waifus": 19613, - "Dungeons and Diffusion": 10620, - "DucHaiten Classic Anime": 7347, - "DucHaiten": 8763, - "Dreamshaper": 200083, - "DreamLikeSamKuvshinov": 6395, - "Dreamlike Photoreal": 104329, - "dreamlike_diffusion_inpainting": 999, - "Dreamlike Diffusion": 28496, - "Double Exposure Diffusion": 2948, - "DnD Item": 3855, - "Disco Elysium": 2467, - "DGSpitzer Art Diffusion": 2407, - "Deliberate": 2589127, - "Dark Victorian Diffusion": 6057, - "Darkest Diffusion": 18151, - "Dan Mumford Style": 3005, - "CyriousMix": 52430, - "Cyberpunk Anime Diffusion": 11244, - "Counterfeit": 333516, - "Concept Sheet": 3497, - "Comic-Diffusion": 12000, - "Coloring Book": 1230, - "Colorful": 23262, - "colorbook": 1892, - "Clazy": 2872, - "Classic Animation Diffusion": 7914, - "ChromaV5": 7587, - "ChilloutMix": 161293, - "Cheese Daddys Landscape Mix": 8201, - "CharHelper": 2531, - "Char": 1516, - "BubblyDubbly": 3788, - "BPModel": 4303, - "Borderlands": 4604, - "Balloon Art": 2276, - "A to Zovya RPG": 3727, - "Asim Simpsons": 2303, - "Archer Diffusion": 6105, - "Arcane Diffusion": 9302, - "App Icon Diffusion": 6404, - "anything_v4_inpainting": 2771, - "Anything v3": 95710, - "Anything Diffusion": 1106052, - "Anygen": 30998, - "Anime Pencil Diffusion": 5167, - "Analog Diffusion": 53315, - "AIO Pixel Art": 9202, - "ACertainThing": 21136, - "AbyssOrangeMix-AfterDark": 42635, - "Abyss OrangeMix": 214407, - "3DKX": 27279, - "": 22 - }, - "total": { - "Zelda BOTW": 4377, - "Zeipher Female Model": 329889, - "Zack3D": 17510, - "Yiffy": 102798, - "Xynthii-Diffusion": 3190, - "Woop-Woop Photo": 57546, - "Wavyfusion": 4490, - "Waifu Diffusion Beta": 5639, - "waifu_diffusion": 334479, - "Voxel Art Diffusion": 3974, - "Vivid Watercolors": 6479, - "VinteProtogenMix": 14474, - "Vintedois Diffusion": 31009, - "vectorartz": 5130, - "Vector Art": 6256, - "Van Gogh Diffusion": 5079, - "Valorant Diffusion": 10121, - "URPM": 481273, - "Unstable Ink Dream": 9521, - "UMI Olympus": 10052, - "Ultraskin": 8080, - "Uhmami": 9246, - "T-Shirt Print Designs": 6915, - "T-Shirt Diffusion": 5938, - "Tron Legacy Diffusion": 4124, - "Trinart Characters": 13906, - "trinart": 13070, - "TrexMix": 3093, - "SynthwavePunk": 2673, - "Synthwave": 7708, - "Sygil-Dev Diffusion": 4143, - "Supermarionation": 2668, - "stable_diffusion_inpainting": 36649, - "stable_diffusion_2_inpainting": 1174, - "Stable Diffusion 2 Depth": 1168, - "stable_diffusion_2.1_512": 2048, - "stable_diffusion_2.1": 122923, - "stable_diffusion_2.0_512": 870, - "stable_diffusion_2.0": 3313, - "stable_diffusion_1.4": 2526, - "stable_diffusion": 2756847, - "Squishmallow Diffusion": 3005, - "Spider-Verse Diffusion": 3339, - "Sonic Diffusion": 6872, - "Something": 30352, - "Smoke Diffusion": 3497, - "Seek.art MEGA": 27239, - "SD-Silicon": 29673, - "Sci-Fi Diffusion": 8301, - "Samdoesarts Ultmerge": 17269, - "RPG": 25281, - "Rodent Diffusion": 6038, - "Robo-Diffusion": 6145, - "Rev Animated": 177622, - "Redshift Diffusion": 51475, - "Realistic Vision": 547467, - "Realism Engine": 26505, - "RealBiter": 23136, - "RCNZ Gorilla With A Brick": 5482, - "RCNZ Dumb Monkey": 4633, - "Ranma Diffusion": 23770, - "Rainbowpatch": 3962, - "Rachel Walker Watercolors": 5254, - "PVC": 992, - "Pulp Vector Art": 4156, - "Protogen Infinity": 75488, - "Protogen Anime": 9573, - "ProtoGen": 44300, - "Project Unreal Engine 5": 400939, - "PRMJ": 4567, - "Pretty 2.5D": 70488, - "PPP": 29400, - "PortraitPlus": 43778, - "Pokemon3D": 3619, - "Poison": 54120, - "PIXHELL": 960, - "pix2pix": 5828, - "PFG": 36170, - "Perfect World": 17117, - "Pastel Mix": 69063, - "Papercut Diffusion": 8782, - "Papercutcraft": 8171, - "OrbAI": 1705, - "Openniji": 53331, - "Open Journey Beta": 2797, - "Nitro Diffusion": 6245, - "NeverEnding Dream": 74372, - "Movie Diffusion": 8914, - "MoistMix": 40330, - "Moedel": 6724, - "mo-di-diffusion": 27105, - "ModernArt Diffusion": 4587, - "Min Illust Background": 4030, - "Midjourney PaintArt": 69336, - "Midjourney Diffusion": 312230, - "Microworlds": 8602, - "Microscopic": 2898, - "Microcritters": 3161, - "Microchars": 6256, - "Microcasing": 3161, - "Mega Merge Diffusion": 7296, - "Marvel Diffusion": 4110, - "Liberty": 148398, - "Lawlas's yiff mix": 229340, - "Laolei New Berry Protogen Mix": 19472, - "kurzgesagt": 4638, - "Korestyle": 3912, - "Knollingcase": 4773, - "Kenshi": 61021, - "JWST Deep Space Diffusion": 7445, - "Jim Eidomode": 5862, - "Inkpunk Diffusion": 25160, - "Illuminati Diffusion": 28235, - "iCoMix": 51140, - "HRL": 14403, - "Hentai Diffusion": 758158, - "Healy's Anime Blend": 16388, - "Hassanblend": 69955, - "HASDX": 39056, - "Guohua Diffusion": 5919, - "GuoFeng": 16369, - "GTM Ultimate Blend": 20022, - "GTA5 Artwork Diffusion": 31221, - "Graphic-Art": 5343, - "Grapefruit Hentai": 161508, - "GorynichMix": 26071, - "Ghibli Diffusion": 8260, - "Future Diffusion": 6279, - "Furry Epoch": 27019, - "Funko Diffusion": 5350, - "FKing SciFi": 5213, - "Fantasy Card Diffusion": 13770, - "FaeTastic": 45979, - "ExpMix Line": 55321, - "Experience": 55050, - "Eternos": 2962, - "Epic Diffusion": 275496, - "Elldreths Retro Mix": 7193, - "Elldreth's Lucid Mix": 15903, - "Elden Ring Diffusion": 20127, - "Eimis Anime Diffusion": 78564, - "Dungeons n Waifus": 19613, - "Dungeons and Diffusion": 23395, - "DucHaiten Classic Anime": 8738, - "DucHaiten": 22377, - "Dreamshaper": 284399, - "DreamLikeSamKuvshinov": 9916, - "Dreamlike Photoreal": 183066, - "dreamlike_diffusion_inpainting": 999, - "Dreamlike Diffusion": 61130, - "Double Exposure Diffusion": 5190, - "DnD Item": 6870, - "Disco Elysium": 2467, - "DGSpitzer Art Diffusion": 4199, - "Deliberate": 3667871, - "Dark Victorian Diffusion": 9444, - "Darkest Diffusion": 29349, - "Dan Mumford Style": 4968, - "CyriousMix": 65087, - "Cyberpunk Anime Diffusion": 19234, - "Counterfeit": 451366, - "ControlNet - Seg": 21, - "ControlNet - Scribble": 48, - "ControlNet - Pose": 525, - "ControlNet - Normal": 6, - "ControlNet - MLSD": 1, - "ControlNet - HED": 2, - "ControlNet - Depth": 176, - "ControlNet - Canny - Delib": 192, - "ControlNet - Canny - AnyV3": 99, - "ControlNet - Canny": 333, - "Concept Sheet": 4853, - "Comic-Diffusion": 19438, - "Coloring Book": 1230, - "Colorful": 25303, - "colorbook": 7730, - "Clazy": 4331, - "Classic Animation Diffusion": 12177, - "ChromaV5": 16110, - "ChilloutMix": 181632, - "Cheese Daddys Landscape Mix": 11314, - "CharHelper": 3684, - "Char": 1516, - "BubblyDubbly": 7776, - "BPModel": 5960, - "Borderlands": 7289, - "Balloon Art": 3112, - "A to Zovya RPG": 4608, - "Asim Simpsons": 3895, - "Archer Diffusion": 8454, - "Arcane Diffusion": 16690, - "App Icon Diffusion": 10135, - "anything_v4_inpainting": 2771, - "Anything v3": 156787, - "Anything Diffusion": 2027396, - "Anygen": 74125, - "Anime Pencil Diffusion": 6200, - "Analog Diffusion": 112564, - "AIO Pixel Art": 15243, - "ACertainThing": 32890, - "AbyssOrangeMix-AfterDark": 69555, - "Abyss OrangeMix": 326624, - "3DKX": 45183, - "": 102 - } - } diff --git a/tests/test_data/ai_horde_api/example_responses/_v2_filters_filter_id_delete_200.json b/tests/test_data/ai_horde_api/example_responses/_v2_filters_filter_id_delete_200.json new file mode 100644 index 0000000..3a3319e --- /dev/null +++ b/tests/test_data/ai_horde_api/example_responses/_v2_filters_filter_id_delete_200.json @@ -0,0 +1,3 @@ +{ + "message": "OK" +} diff --git a/tests/test_data/ai_horde_api/example_responses/_v2_filters_filter_id_get_200.json b/tests/test_data/ai_horde_api/example_responses/_v2_filters_filter_id_get_200.json new file mode 100644 index 0000000..5b99b75 --- /dev/null +++ b/tests/test_data/ai_horde_api/example_responses/_v2_filters_filter_id_get_200.json @@ -0,0 +1,10 @@ +[ + { + "id": "", + "regex": "ac.*", + "filter_type": 10, + "description": "", + "replacement": "", + "user": "" + } +] diff --git a/tests/test_data/ai_horde_api/example_responses/_v2_filters_filter_id_patch_200.json b/tests/test_data/ai_horde_api/example_responses/_v2_filters_filter_id_patch_200.json new file mode 100644 index 0000000..518b530 --- /dev/null +++ b/tests/test_data/ai_horde_api/example_responses/_v2_filters_filter_id_patch_200.json @@ -0,0 +1,8 @@ +{ + "id": "", + "regex": "ac.*", + "filter_type": 10, + "description": "", + "replacement": "", + "user": "" +} diff --git a/tests/test_data/ai_horde_api/example_responses/_v2_filters_get_200.json b/tests/test_data/ai_horde_api/example_responses/_v2_filters_get_200.json new file mode 100644 index 0000000..5b99b75 --- /dev/null +++ b/tests/test_data/ai_horde_api/example_responses/_v2_filters_get_200.json @@ -0,0 +1,10 @@ +[ + { + "id": "", + "regex": "ac.*", + "filter_type": 10, + "description": "", + "replacement": "", + "user": "" + } +] diff --git a/tests/test_data/ai_horde_api/example_responses/_v2_filters_post_200.json b/tests/test_data/ai_horde_api/example_responses/_v2_filters_post_200.json new file mode 100644 index 0000000..e15b07f --- /dev/null +++ b/tests/test_data/ai_horde_api/example_responses/_v2_filters_post_200.json @@ -0,0 +1,4 @@ +{ + "suspicion": 0, + "matches": [] +} diff --git a/tests/test_data/ai_horde_api/example_responses/_v2_filters_put_201.json b/tests/test_data/ai_horde_api/example_responses/_v2_filters_put_201.json new file mode 100644 index 0000000..518b530 --- /dev/null +++ b/tests/test_data/ai_horde_api/example_responses/_v2_filters_put_201.json @@ -0,0 +1,8 @@ +{ + "id": "", + "regex": "ac.*", + "filter_type": 10, + "description": "", + "replacement": "", + "user": "" +} diff --git a/tests/test_data/ai_horde_api/example_responses/_v2_filters_regex_get_200.json b/tests/test_data/ai_horde_api/example_responses/_v2_filters_regex_get_200.json new file mode 100644 index 0000000..b1706c3 --- /dev/null +++ b/tests/test_data/ai_horde_api/example_responses/_v2_filters_regex_get_200.json @@ -0,0 +1,6 @@ +[ + { + "filter_type": 10, + "regex": "" + } +] diff --git a/tests/test_data/ai_horde_api/example_responses/_v2_find_user_get_200.json b/tests/test_data/ai_horde_api/example_responses/_v2_find_user_get_200.json new file mode 100644 index 0000000..e866114 --- /dev/null +++ b/tests/test_data/ai_horde_api/example_responses/_v2_find_user_get_200.json @@ -0,0 +1,60 @@ +{ + "username": "", + "id": 0, + "kudos": 0.0, + "evaluating_kudos": 0.0, + "concurrency": 0, + "worker_invited": 0, + "moderator": false, + "kudos_details": { + "accumulated": 0, + "gifted": 0, + "admin": 0, + "received": 0, + "recurring": 0, + "awarded": 0 + }, + "worker_count": 0, + "worker_ids": [], + "sharedkey_ids": [], + "monthly_kudos": { + "amount": 0, + "last_received": "2021-01-01T00:00:00Z" + }, + "trusted": false, + "flagged": false, + "vpn": false, + "special": false, + "suspicious": 0, + "pseudonymous": false, + "contact": "email@example.com", + "account_age": 60, + "usage": { + "megapixelsteps": 0.0, + "requests": 0 + }, + "contributions": { + "megapixelsteps": 0.0, + "fulfillments": 0 + }, + "records": { + "usage": { + "megapixelsteps": 0, + "tokens": 0 + }, + "contribution": { + "megapixelsteps": 0, + "tokens": 0 + }, + "fulfillment": { + "image": 0, + "text": 0, + "interrogation": 0 + }, + "request": { + "image": 0, + "text": 0, + "interrogation": 0 + } + } +} diff --git a/tests/test_data/ai_horde_api/example_responses/_v2_generate_async_post_202.json b/tests/test_data/ai_horde_api/example_responses/_v2_generate_async_post_202.json new file mode 100644 index 0000000..4f03856 --- /dev/null +++ b/tests/test_data/ai_horde_api/example_responses/_v2_generate_async_post_202.json @@ -0,0 +1,5 @@ +{ + "id": "", + "kudos": 0, + "message": "" +} diff --git a/tests/test_data/ai_horde_api/example_responses/ImageGenerateCheckResponse.json b/tests/test_data/ai_horde_api/example_responses/_v2_generate_check_id_get_200.json similarity index 82% rename from tests/test_data/ai_horde_api/example_responses/ImageGenerateCheckResponse.json rename to tests/test_data/ai_horde_api/example_responses/_v2_generate_check_id_get_200.json index 07a8bb1..3d8e12c 100644 --- a/tests/test_data/ai_horde_api/example_responses/ImageGenerateCheckResponse.json +++ b/tests/test_data/ai_horde_api/example_responses/_v2_generate_check_id_get_200.json @@ -3,10 +3,10 @@ "processing": 0, "restarted": 0, "waiting": 0, - "done": true, + "done": false, "faulted": false, "wait_time": 0, "queue_position": 0, - "kudos": 0, + "kudos": 0.0, "is_possible": true } diff --git a/tests/test_data/ai_horde_api/example_responses/_v2_generate_pop_post_200.json b/tests/test_data/ai_horde_api/example_responses/_v2_generate_pop_post_200.json new file mode 100644 index 0000000..768a32b --- /dev/null +++ b/tests/test_data/ai_horde_api/example_responses/_v2_generate_pop_post_200.json @@ -0,0 +1,60 @@ +{ + "payload": { + "sampler_name": "k_lms", + "cfg_scale": 7.5, + "denoising_strength": 0.75, + "seed": "The little seed that could", + "height": 512, + "width": 512, + "seed_variation": 1, + "post_processing": [], + "karras": false, + "tiling": false, + "hires_fix": false, + "clip_skip": 1, + "control_type": "canny", + "image_is_control": false, + "return_control_map": false, + "facefixer_strength": 0.75, + "loras": [ + { + "name": "GlowingRunesAIV6", + "model": 1.0, + "clip": 1.0, + "inject_trigger": "a" + } + ], + "special": { + "additionalProp1": {}, + "additionalProp2": {}, + "additionalProp3": {} + }, + "prompt": "", + "ddim_steps": 30, + "n_iter": 1, + "use_nsfw_censor": false + }, + "id": "", + "skipped": { + "worker_id": 0.0, + "performance": 0.0, + "nsfw": 0.0, + "blacklist": 0.0, + "untrusted": 0.0, + "models": 0, + "bridge_version": 0, + "kudos": 0, + "max_pixels": 0, + "unsafe_ip": 0, + "img2img": 0, + "painting": 0, + "post-processing": 0, + "lora": 0, + "controlnet": 0 + }, + "model": "", + "source_image": "", + "source_processing": "img2img", + "source_mask": "", + "r2_upload": "" +} diff --git a/tests/test_data/ai_horde_api/example_responses/_v2_generate_rate_id_post_200.json b/tests/test_data/ai_horde_api/example_responses/_v2_generate_rate_id_post_200.json new file mode 100644 index 0000000..8338787 --- /dev/null +++ b/tests/test_data/ai_horde_api/example_responses/_v2_generate_rate_id_post_200.json @@ -0,0 +1,3 @@ +{ + "reward": 10.0 +} diff --git a/tests/test_data/ai_horde_api/example_responses/_v2_generate_status_id_delete_200.json b/tests/test_data/ai_horde_api/example_responses/_v2_generate_status_id_delete_200.json new file mode 100644 index 0000000..9700fca --- /dev/null +++ b/tests/test_data/ai_horde_api/example_responses/_v2_generate_status_id_delete_200.json @@ -0,0 +1,25 @@ +{ + "finished": 0, + "processing": 0, + "restarted": 0, + "waiting": 0, + "done": false, + "faulted": false, + "wait_time": 0, + "queue_position": 0, + "kudos": 0.0, + "is_possible": true, + "generations": [ + { + "worker_id": "", + "worker_name": "", + "model": "", + "state": "ok", + "img": "", + "seed": "", + "id": "", + "censored": false + } + ], + "shared": false +} diff --git a/tests/test_data/ai_horde_api/example_responses/_v2_generate_status_id_get_200.json b/tests/test_data/ai_horde_api/example_responses/_v2_generate_status_id_get_200.json new file mode 100644 index 0000000..9700fca --- /dev/null +++ b/tests/test_data/ai_horde_api/example_responses/_v2_generate_status_id_get_200.json @@ -0,0 +1,25 @@ +{ + "finished": 0, + "processing": 0, + "restarted": 0, + "waiting": 0, + "done": false, + "faulted": false, + "wait_time": 0, + "queue_position": 0, + "kudos": 0.0, + "is_possible": true, + "generations": [ + { + "worker_id": "", + "worker_name": "", + "model": "", + "state": "ok", + "img": "", + "seed": "", + "id": "", + "censored": false + } + ], + "shared": false +} diff --git a/tests/test_data/ai_horde_api/example_responses/_v2_generate_submit_post_200.json b/tests/test_data/ai_horde_api/example_responses/_v2_generate_submit_post_200.json new file mode 100644 index 0000000..8338787 --- /dev/null +++ b/tests/test_data/ai_horde_api/example_responses/_v2_generate_submit_post_200.json @@ -0,0 +1,3 @@ +{ + "reward": 10.0 +} diff --git a/tests/test_data/ai_horde_api/example_responses/_v2_generate_text_async_post_202.json b/tests/test_data/ai_horde_api/example_responses/_v2_generate_text_async_post_202.json new file mode 100644 index 0000000..4f03856 --- /dev/null +++ b/tests/test_data/ai_horde_api/example_responses/_v2_generate_text_async_post_202.json @@ -0,0 +1,5 @@ +{ + "id": "", + "kudos": 0, + "message": "" +} diff --git a/tests/test_data/ai_horde_api/example_responses/_v2_generate_text_pop_post_200.json b/tests/test_data/ai_horde_api/example_responses/_v2_generate_text_pop_post_200.json new file mode 100644 index 0000000..daa3917 --- /dev/null +++ b/tests/test_data/ai_horde_api/example_responses/_v2_generate_text_pop_post_200.json @@ -0,0 +1,39 @@ +{ + "payload": { + "n": 1, + "frmtadsnsp": false, + "frmtrmblln": false, + "frmtrmspch": false, + "frmttriminc": false, + "max_context_length": 1024, + "max_length": 80, + "rep_pen": 1.0, + "rep_pen_range": 0.0, + "rep_pen_slope": 0.0, + "singleline": false, + "temperature": 0.0, + "tfs": 0.0, + "top_a": 0.0, + "top_k": 0.0, + "top_p": 0.001, + "typical": 0.0, + "sampler_order": [], + "prompt": "" + }, + "id": "", + "skipped": { + "worker_id": 0.0, + "performance": 0.0, + "nsfw": 0.0, + "blacklist": 0.0, + "untrusted": 0.0, + "models": 0, + "bridge_version": 0, + "kudos": 0, + "max_context_length": 0, + "max_length": 0, + "matching_softprompt": 0 + }, + "softprompt": "", + "model": "" +} diff --git a/tests/test_data/ai_horde_api/example_responses/_v2_generate_text_status_id_delete_200.json b/tests/test_data/ai_horde_api/example_responses/_v2_generate_text_status_id_delete_200.json new file mode 100644 index 0000000..d2a8e3c --- /dev/null +++ b/tests/test_data/ai_horde_api/example_responses/_v2_generate_text_status_id_delete_200.json @@ -0,0 +1,22 @@ +{ + "finished": 0, + "processing": 0, + "restarted": 0, + "waiting": 0, + "done": false, + "faulted": false, + "wait_time": 0, + "queue_position": 0, + "kudos": 0.0, + "is_possible": true, + "generations": [ + { + "worker_id": "", + "worker_name": "", + "model": "", + "state": "ok", + "text": "", + "seed": 0 + } + ] +} diff --git a/tests/test_data/ai_horde_api/example_responses/_v2_generate_text_status_id_get_200.json b/tests/test_data/ai_horde_api/example_responses/_v2_generate_text_status_id_get_200.json new file mode 100644 index 0000000..d2a8e3c --- /dev/null +++ b/tests/test_data/ai_horde_api/example_responses/_v2_generate_text_status_id_get_200.json @@ -0,0 +1,22 @@ +{ + "finished": 0, + "processing": 0, + "restarted": 0, + "waiting": 0, + "done": false, + "faulted": false, + "wait_time": 0, + "queue_position": 0, + "kudos": 0.0, + "is_possible": true, + "generations": [ + { + "worker_id": "", + "worker_name": "", + "model": "", + "state": "ok", + "text": "", + "seed": 0 + } + ] +} diff --git a/tests/test_data/ai_horde_api/example_responses/_v2_generate_text_submit_post_200.json b/tests/test_data/ai_horde_api/example_responses/_v2_generate_text_submit_post_200.json new file mode 100644 index 0000000..8338787 --- /dev/null +++ b/tests/test_data/ai_horde_api/example_responses/_v2_generate_text_submit_post_200.json @@ -0,0 +1,3 @@ +{ + "reward": 10.0 +} diff --git a/tests/test_data/ai_horde_api/example_responses/_v2_interrogate_async_post_202.json b/tests/test_data/ai_horde_api/example_responses/_v2_interrogate_async_post_202.json new file mode 100644 index 0000000..e7a3f04 --- /dev/null +++ b/tests/test_data/ai_horde_api/example_responses/_v2_interrogate_async_post_202.json @@ -0,0 +1,4 @@ +{ + "id": "", + "message": "" +} diff --git a/tests/test_data/ai_horde_api/example_responses/_v2_interrogate_pop_post_200.json b/tests/test_data/ai_horde_api/example_responses/_v2_interrogate_pop_post_200.json new file mode 100644 index 0000000..6efc014 --- /dev/null +++ b/tests/test_data/ai_horde_api/example_responses/_v2_interrogate_pop_post_200.json @@ -0,0 +1,20 @@ +{ + "forms": [ + { + "id": "", + "form": "caption", + "payload": { + "additionalProp1": "", + "additionalProp2": "", + "additionalProp3": "" + }, + "source_image": "", + "r2_upload": "" + } + ], + "skipped": { + "worker_id": 0.0, + "untrusted": 0.0, + "bridge_version": 0 + } +} diff --git a/tests/test_data/ai_horde_api/example_responses/_v2_interrogate_status_id_delete_200.json b/tests/test_data/ai_horde_api/example_responses/_v2_interrogate_status_id_delete_200.json new file mode 100644 index 0000000..6e4659b --- /dev/null +++ b/tests/test_data/ai_horde_api/example_responses/_v2_interrogate_status_id_delete_200.json @@ -0,0 +1,14 @@ +{ + "state": "", + "forms": [ + { + "form": "", + "state": "", + "result": { + "additionalProp1": {}, + "additionalProp2": {}, + "additionalProp3": {} + } + } + ] +} diff --git a/tests/test_data/ai_horde_api/example_responses/_v2_interrogate_status_id_get_200.json b/tests/test_data/ai_horde_api/example_responses/_v2_interrogate_status_id_get_200.json new file mode 100644 index 0000000..6e4659b --- /dev/null +++ b/tests/test_data/ai_horde_api/example_responses/_v2_interrogate_status_id_get_200.json @@ -0,0 +1,14 @@ +{ + "state": "", + "forms": [ + { + "form": "", + "state": "", + "result": { + "additionalProp1": {}, + "additionalProp2": {}, + "additionalProp3": {} + } + } + ] +} diff --git a/tests/test_data/ai_horde_api/example_responses/_v2_interrogate_submit_post_200.json b/tests/test_data/ai_horde_api/example_responses/_v2_interrogate_submit_post_200.json new file mode 100644 index 0000000..8338787 --- /dev/null +++ b/tests/test_data/ai_horde_api/example_responses/_v2_interrogate_submit_post_200.json @@ -0,0 +1,3 @@ +{ + "reward": 10.0 +} diff --git a/tests/test_data/ai_horde_api/example_responses/_v2_kudos_award_post_200.json b/tests/test_data/ai_horde_api/example_responses/_v2_kudos_award_post_200.json new file mode 100644 index 0000000..646c864 --- /dev/null +++ b/tests/test_data/ai_horde_api/example_responses/_v2_kudos_award_post_200.json @@ -0,0 +1,3 @@ +{ + "awarded": 100 +} diff --git a/tests/test_data/ai_horde_api/example_responses/_v2_kudos_transfer_post_200.json b/tests/test_data/ai_horde_api/example_responses/_v2_kudos_transfer_post_200.json new file mode 100644 index 0000000..42a8db6 --- /dev/null +++ b/tests/test_data/ai_horde_api/example_responses/_v2_kudos_transfer_post_200.json @@ -0,0 +1,3 @@ +{ + "transferred": 100 +} diff --git a/tests/test_data/ai_horde_api/example_responses/_v2_operations_ipaddr_delete_200.json b/tests/test_data/ai_horde_api/example_responses/_v2_operations_ipaddr_delete_200.json new file mode 100644 index 0000000..3a3319e --- /dev/null +++ b/tests/test_data/ai_horde_api/example_responses/_v2_operations_ipaddr_delete_200.json @@ -0,0 +1,3 @@ +{ + "message": "OK" +} diff --git a/tests/test_data/ai_horde_api/example_responses/_v2_sharedkeys_put_200.json b/tests/test_data/ai_horde_api/example_responses/_v2_sharedkeys_put_200.json new file mode 100644 index 0000000..3b4a461 --- /dev/null +++ b/tests/test_data/ai_horde_api/example_responses/_v2_sharedkeys_put_200.json @@ -0,0 +1,10 @@ +{ + "id": "", + "username": "", + "kudos": 0, + "expiry": "2021-01-01T00:00:00Z", + "utilized": 0, + "max_image_pixels": 0, + "max_image_steps": 0, + "max_text_tokens": 0 +} diff --git a/tests/test_data/ai_horde_api/example_responses/_v2_sharedkeys_sharedkey_id_delete_200.json b/tests/test_data/ai_horde_api/example_responses/_v2_sharedkeys_sharedkey_id_delete_200.json new file mode 100644 index 0000000..3a3319e --- /dev/null +++ b/tests/test_data/ai_horde_api/example_responses/_v2_sharedkeys_sharedkey_id_delete_200.json @@ -0,0 +1,3 @@ +{ + "message": "OK" +} diff --git a/tests/test_data/ai_horde_api/example_responses/_v2_sharedkeys_sharedkey_id_get_200.json b/tests/test_data/ai_horde_api/example_responses/_v2_sharedkeys_sharedkey_id_get_200.json new file mode 100644 index 0000000..3b4a461 --- /dev/null +++ b/tests/test_data/ai_horde_api/example_responses/_v2_sharedkeys_sharedkey_id_get_200.json @@ -0,0 +1,10 @@ +{ + "id": "", + "username": "", + "kudos": 0, + "expiry": "2021-01-01T00:00:00Z", + "utilized": 0, + "max_image_pixels": 0, + "max_image_steps": 0, + "max_text_tokens": 0 +} diff --git a/tests/test_data/ai_horde_api/example_responses/_v2_sharedkeys_sharedkey_id_patch_200.json b/tests/test_data/ai_horde_api/example_responses/_v2_sharedkeys_sharedkey_id_patch_200.json new file mode 100644 index 0000000..3b4a461 --- /dev/null +++ b/tests/test_data/ai_horde_api/example_responses/_v2_sharedkeys_sharedkey_id_patch_200.json @@ -0,0 +1,10 @@ +{ + "id": "", + "username": "", + "kudos": 0, + "expiry": "2021-01-01T00:00:00Z", + "utilized": 0, + "max_image_pixels": 0, + "max_image_steps": 0, + "max_text_tokens": 0 +} diff --git a/tests/test_data/ai_horde_api/example_responses/_v2_stats_img_models_get_200.json b/tests/test_data/ai_horde_api/example_responses/_v2_stats_img_models_get_200.json new file mode 100644 index 0000000..315cb0a --- /dev/null +++ b/tests/test_data/ai_horde_api/example_responses/_v2_stats_img_models_get_200.json @@ -0,0 +1,17 @@ +{ + "day": { + "additionalProp1": 0, + "additionalProp2": 0, + "additionalProp3": 0 + }, + "month": { + "additionalProp1": 0, + "additionalProp2": 0, + "additionalProp3": 0 + }, + "total": { + "additionalProp1": 0, + "additionalProp2": 0, + "additionalProp3": 0 + } +} diff --git a/tests/test_data/ai_horde_api/example_responses/_v2_stats_img_totals_get_200.json b/tests/test_data/ai_horde_api/example_responses/_v2_stats_img_totals_get_200.json new file mode 100644 index 0000000..446d752 --- /dev/null +++ b/tests/test_data/ai_horde_api/example_responses/_v2_stats_img_totals_get_200.json @@ -0,0 +1,22 @@ +{ + "minute": { + "requests": 0, + "tokens": 0 + }, + "hour": { + "requests": 0, + "tokens": 0 + }, + "day": { + "requests": 0, + "tokens": 0 + }, + "month": { + "requests": 0, + "tokens": 0 + }, + "total": { + "requests": 0, + "tokens": 0 + } +} diff --git a/tests/test_data/ai_horde_api/example_responses/_v2_stats_text_models_get_200.json b/tests/test_data/ai_horde_api/example_responses/_v2_stats_text_models_get_200.json new file mode 100644 index 0000000..315cb0a --- /dev/null +++ b/tests/test_data/ai_horde_api/example_responses/_v2_stats_text_models_get_200.json @@ -0,0 +1,17 @@ +{ + "day": { + "additionalProp1": 0, + "additionalProp2": 0, + "additionalProp3": 0 + }, + "month": { + "additionalProp1": 0, + "additionalProp2": 0, + "additionalProp3": 0 + }, + "total": { + "additionalProp1": 0, + "additionalProp2": 0, + "additionalProp3": 0 + } +} diff --git a/tests/test_data/ai_horde_api/example_responses/_v2_stats_text_totals_get_200.json b/tests/test_data/ai_horde_api/example_responses/_v2_stats_text_totals_get_200.json new file mode 100644 index 0000000..446d752 --- /dev/null +++ b/tests/test_data/ai_horde_api/example_responses/_v2_stats_text_totals_get_200.json @@ -0,0 +1,22 @@ +{ + "minute": { + "requests": 0, + "tokens": 0 + }, + "hour": { + "requests": 0, + "tokens": 0 + }, + "day": { + "requests": 0, + "tokens": 0 + }, + "month": { + "requests": 0, + "tokens": 0 + }, + "total": { + "requests": 0, + "tokens": 0 + } +} diff --git a/tests/test_data/ai_horde_api/example_responses/_v2_status_models_get_200.json b/tests/test_data/ai_horde_api/example_responses/_v2_status_models_get_200.json new file mode 100644 index 0000000..79e65e6 --- /dev/null +++ b/tests/test_data/ai_horde_api/example_responses/_v2_status_models_get_200.json @@ -0,0 +1,11 @@ +[ + { + "name": "", + "count": 0, + "performance": 0.0, + "queued": 0.0, + "jobs": 0.0, + "eta": 0, + "type": "image" + } +] diff --git a/tests/test_data/ai_horde_api/example_responses/_v2_status_models_model_name_get_200.json b/tests/test_data/ai_horde_api/example_responses/_v2_status_models_model_name_get_200.json new file mode 100644 index 0000000..5985064 --- /dev/null +++ b/tests/test_data/ai_horde_api/example_responses/_v2_status_models_model_name_get_200.json @@ -0,0 +1,9 @@ +{ + "name": "", + "count": 0, + "performance": 0.0, + "queued": 0.0, + "jobs": 0.0, + "eta": 0, + "type": "image" +} diff --git a/tests/test_data/ai_horde_api/example_responses/_v2_status_modes_get_200.json b/tests/test_data/ai_horde_api/example_responses/_v2_status_modes_get_200.json new file mode 100644 index 0000000..a43138a --- /dev/null +++ b/tests/test_data/ai_horde_api/example_responses/_v2_status_modes_get_200.json @@ -0,0 +1,5 @@ +{ + "maintenance_mode": false, + "invite_only_mode": false, + "raid_mode": false +} diff --git a/tests/test_data/ai_horde_api/example_responses/_v2_status_modes_put_200.json b/tests/test_data/ai_horde_api/example_responses/_v2_status_modes_put_200.json new file mode 100644 index 0000000..a43138a --- /dev/null +++ b/tests/test_data/ai_horde_api/example_responses/_v2_status_modes_put_200.json @@ -0,0 +1,5 @@ +{ + "maintenance_mode": false, + "invite_only_mode": false, + "raid_mode": false +} diff --git a/tests/test_data/ai_horde_api/example_responses/_v2_status_news_get_200.json b/tests/test_data/ai_horde_api/example_responses/_v2_status_news_get_200.json new file mode 100644 index 0000000..ba53384 --- /dev/null +++ b/tests/test_data/ai_horde_api/example_responses/_v2_status_news_get_200.json @@ -0,0 +1,7 @@ +[ + { + "date_published": "", + "newspiece": "", + "importance": "Information" + } +] diff --git a/tests/test_data/ai_horde_api/example_responses/_v2_status_performance_get_200.json b/tests/test_data/ai_horde_api/example_responses/_v2_status_performance_get_200.json new file mode 100644 index 0000000..a478078 --- /dev/null +++ b/tests/test_data/ai_horde_api/example_responses/_v2_status_performance_get_200.json @@ -0,0 +1,15 @@ +{ + "queued_requests": 0, + "queued_text_requests": 0, + "worker_count": 0, + "text_worker_count": 0, + "thread_count": 0, + "text_thread_count": 0, + "queued_megapixelsteps": 0.0, + "past_minute_megapixelsteps": 0.0, + "queued_forms": 0.0, + "interrogator_count": 0, + "interrogator_thread_count": 0, + "queued_tokens": 0.0, + "past_minute_tokens": 0.0 +} diff --git a/tests/test_data/ai_horde_api/example_responses/_v2_teams_get_200.json b/tests/test_data/ai_horde_api/example_responses/_v2_teams_get_200.json new file mode 100644 index 0000000..8dc89dc --- /dev/null +++ b/tests/test_data/ai_horde_api/example_responses/_v2_teams_get_200.json @@ -0,0 +1,26 @@ +[ + { + "name": "", + "id": "", + "info": "Anarchy is emergent order.", + "requests_fulfilled": 0, + "kudos": 0.0, + "uptime": 0, + "creator": "db0#1", + "worker_count": 10, + "workers": [ + { + "type": "image", + "name": "", + "id": "", + "online": false + } + ], + "models": [ + { + "name": "", + "count": 0 + } + ] + } +] diff --git a/tests/test_data/ai_horde_api/example_responses/_v2_teams_post_200.json b/tests/test_data/ai_horde_api/example_responses/_v2_teams_post_200.json new file mode 100644 index 0000000..75a70c1 --- /dev/null +++ b/tests/test_data/ai_horde_api/example_responses/_v2_teams_post_200.json @@ -0,0 +1,5 @@ +{ + "id": "", + "name": "", + "info": "" +} diff --git a/tests/test_data/ai_horde_api/example_responses/_v2_teams_team_id_delete_200.json b/tests/test_data/ai_horde_api/example_responses/_v2_teams_team_id_delete_200.json new file mode 100644 index 0000000..3577c34 --- /dev/null +++ b/tests/test_data/ai_horde_api/example_responses/_v2_teams_team_id_delete_200.json @@ -0,0 +1,4 @@ +{ + "deleted_id": "", + "deleted_name": "" +} diff --git a/tests/test_data/ai_horde_api/example_responses/_v2_teams_team_id_get_200.json b/tests/test_data/ai_horde_api/example_responses/_v2_teams_team_id_get_200.json new file mode 100644 index 0000000..15d7aff --- /dev/null +++ b/tests/test_data/ai_horde_api/example_responses/_v2_teams_team_id_get_200.json @@ -0,0 +1,24 @@ +{ + "name": "", + "id": "", + "info": "Anarchy is emergent order.", + "requests_fulfilled": 0, + "kudos": 0.0, + "uptime": 0, + "creator": "db0#1", + "worker_count": 10, + "workers": [ + { + "type": "image", + "name": "", + "id": "", + "online": false + } + ], + "models": [ + { + "name": "", + "count": 0 + } + ] +} diff --git a/tests/test_data/ai_horde_api/example_responses/_v2_teams_team_id_patch_200.json b/tests/test_data/ai_horde_api/example_responses/_v2_teams_team_id_patch_200.json new file mode 100644 index 0000000..75a70c1 --- /dev/null +++ b/tests/test_data/ai_horde_api/example_responses/_v2_teams_team_id_patch_200.json @@ -0,0 +1,5 @@ +{ + "id": "", + "name": "", + "info": "" +} diff --git a/tests/test_data/ai_horde_api/example_responses/_v2_users_get_200.json b/tests/test_data/ai_horde_api/example_responses/_v2_users_get_200.json new file mode 100644 index 0000000..e866114 --- /dev/null +++ b/tests/test_data/ai_horde_api/example_responses/_v2_users_get_200.json @@ -0,0 +1,60 @@ +{ + "username": "", + "id": 0, + "kudos": 0.0, + "evaluating_kudos": 0.0, + "concurrency": 0, + "worker_invited": 0, + "moderator": false, + "kudos_details": { + "accumulated": 0, + "gifted": 0, + "admin": 0, + "received": 0, + "recurring": 0, + "awarded": 0 + }, + "worker_count": 0, + "worker_ids": [], + "sharedkey_ids": [], + "monthly_kudos": { + "amount": 0, + "last_received": "2021-01-01T00:00:00Z" + }, + "trusted": false, + "flagged": false, + "vpn": false, + "special": false, + "suspicious": 0, + "pseudonymous": false, + "contact": "email@example.com", + "account_age": 60, + "usage": { + "megapixelsteps": 0.0, + "requests": 0 + }, + "contributions": { + "megapixelsteps": 0.0, + "fulfillments": 0 + }, + "records": { + "usage": { + "megapixelsteps": 0, + "tokens": 0 + }, + "contribution": { + "megapixelsteps": 0, + "tokens": 0 + }, + "fulfillment": { + "image": 0, + "text": 0, + "interrogation": 0 + }, + "request": { + "image": 0, + "text": 0, + "interrogation": 0 + } + } +} diff --git a/tests/test_data/ai_horde_api/example_responses/_v2_users_user_id_get_200.json b/tests/test_data/ai_horde_api/example_responses/_v2_users_user_id_get_200.json new file mode 100644 index 0000000..e866114 --- /dev/null +++ b/tests/test_data/ai_horde_api/example_responses/_v2_users_user_id_get_200.json @@ -0,0 +1,60 @@ +{ + "username": "", + "id": 0, + "kudos": 0.0, + "evaluating_kudos": 0.0, + "concurrency": 0, + "worker_invited": 0, + "moderator": false, + "kudos_details": { + "accumulated": 0, + "gifted": 0, + "admin": 0, + "received": 0, + "recurring": 0, + "awarded": 0 + }, + "worker_count": 0, + "worker_ids": [], + "sharedkey_ids": [], + "monthly_kudos": { + "amount": 0, + "last_received": "2021-01-01T00:00:00Z" + }, + "trusted": false, + "flagged": false, + "vpn": false, + "special": false, + "suspicious": 0, + "pseudonymous": false, + "contact": "email@example.com", + "account_age": 60, + "usage": { + "megapixelsteps": 0.0, + "requests": 0 + }, + "contributions": { + "megapixelsteps": 0.0, + "fulfillments": 0 + }, + "records": { + "usage": { + "megapixelsteps": 0, + "tokens": 0 + }, + "contribution": { + "megapixelsteps": 0, + "tokens": 0 + }, + "fulfillment": { + "image": 0, + "text": 0, + "interrogation": 0 + }, + "request": { + "image": 0, + "text": 0, + "interrogation": 0 + } + } +} diff --git a/tests/test_data/ai_horde_api/example_responses/_v2_users_user_id_put_200.json b/tests/test_data/ai_horde_api/example_responses/_v2_users_user_id_put_200.json new file mode 100644 index 0000000..61d2359 --- /dev/null +++ b/tests/test_data/ai_horde_api/example_responses/_v2_users_user_id_put_200.json @@ -0,0 +1,17 @@ +{ + "new_kudos": 0.0, + "concurrency": 30, + "usage_multiplier": 1.0, + "worker_invited": 1, + "moderator": false, + "public_workers": false, + "username": "username#1", + "monthly_kudos": 0, + "trusted": false, + "flagged": false, + "customizer": false, + "vpn": false, + "special": false, + "new_suspicion": 0, + "contact": "email@example.com" +} diff --git a/tests/test_data/ai_horde_api/example_responses/_v2_workers_get_200.json b/tests/test_data/ai_horde_api/example_responses/_v2_workers_get_200.json new file mode 100644 index 0000000..13639a0 --- /dev/null +++ b/tests/test_data/ai_horde_api/example_responses/_v2_workers_get_200.json @@ -0,0 +1,43 @@ +[ + { + "type": "image", + "name": "", + "id": "", + "online": false, + "requests_fulfilled": 0, + "kudos_rewards": 0.0, + "kudos_details": { + "generated": 0.0, + "uptime": 0 + }, + "performance": "", + "threads": 0, + "uptime": 0, + "maintenance_mode": false, + "paused": false, + "info": "https://dbzer0.com", + "nsfw": false, + "owner": "username#1", + "trusted": false, + "flagged": false, + "suspicious": 0, + "uncompleted_jobs": 0, + "models": [], + "forms": [], + "team": { + "name": "", + "id": "" + }, + "contact": "email@example.com", + "bridge_agent": "AI Horde Worker:11:https://github.com/db0/AI-Horde-Worker", + "max_pixels": 262144, + "megapixelsteps_generated": 0.0, + "img2img": false, + "painting": false, + "post-processing": false, + "lora": false, + "max_length": 80, + "max_context_length": 80, + "tokens_generated": 0.0 + } +] diff --git a/tests/test_data/ai_horde_api/example_responses/_v2_workers_worker_id_delete_200.json b/tests/test_data/ai_horde_api/example_responses/_v2_workers_worker_id_delete_200.json new file mode 100644 index 0000000..3577c34 --- /dev/null +++ b/tests/test_data/ai_horde_api/example_responses/_v2_workers_worker_id_delete_200.json @@ -0,0 +1,4 @@ +{ + "deleted_id": "", + "deleted_name": "" +} diff --git a/tests/test_data/ai_horde_api/example_responses/_v2_workers_worker_id_get_200.json b/tests/test_data/ai_horde_api/example_responses/_v2_workers_worker_id_get_200.json new file mode 100644 index 0000000..fcde858 --- /dev/null +++ b/tests/test_data/ai_horde_api/example_responses/_v2_workers_worker_id_get_200.json @@ -0,0 +1,41 @@ +{ + "type": "image", + "name": "", + "id": "", + "online": false, + "requests_fulfilled": 0, + "kudos_rewards": 0.0, + "kudos_details": { + "generated": 0.0, + "uptime": 0 + }, + "performance": "", + "threads": 0, + "uptime": 0, + "maintenance_mode": false, + "paused": false, + "info": "https://dbzer0.com", + "nsfw": false, + "owner": "username#1", + "trusted": false, + "flagged": false, + "suspicious": 0, + "uncompleted_jobs": 0, + "models": [], + "forms": [], + "team": { + "name": "", + "id": "" + }, + "contact": "email@example.com", + "bridge_agent": "AI Horde Worker:11:https://github.com/db0/AI-Horde-Worker", + "max_pixels": 262144, + "megapixelsteps_generated": 0.0, + "img2img": false, + "painting": false, + "post-processing": false, + "lora": false, + "max_length": 80, + "max_context_length": 80, + "tokens_generated": 0.0 +} diff --git a/tests/test_data/ai_horde_api/example_responses/_v2_workers_worker_id_put_200.json b/tests/test_data/ai_horde_api/example_responses/_v2_workers_worker_id_put_200.json new file mode 100644 index 0000000..707f4fb --- /dev/null +++ b/tests/test_data/ai_horde_api/example_responses/_v2_workers_worker_id_put_200.json @@ -0,0 +1,7 @@ +{ + "maintenance": false, + "paused": false, + "info": "", + "name": "", + "team": "Direct Action" +} diff --git a/tests/test_data/ai_horde_api/production_responses/_v2_workers_get_200_production.json b/tests/test_data/ai_horde_api/production_responses/_v2_workers_get_200_production.json new file mode 100644 index 0000000..bd189c0 --- /dev/null +++ b/tests/test_data/ai_horde_api/production_responses/_v2_workers_get_200_production.json @@ -0,0 +1,5041 @@ +[ + { + "type": "image", + "name": "AiBrush-3", + "id": "a850a98b-ca44-4591-b05b-8e043695ae4e", + "online": true, + "requests_fulfilled": 562405, + "kudos_rewards": 13039178.0, + "kudos_details": { + "generated": 12552178.0, + "uptime": 554260 + }, + "performance": "2.1 megapixelsteps per second", + "threads": 1, + "uptime": 5103223, + "maintenance_mode": false, + "nsfw": true, + "trusted": true, + "flagged": false, + "uncompleted_jobs": 283, + "models": [ + "Epic Diffusion Inpainting", + "DreamShaper Inpainting", + "Realism Engine", + "GTA5 Artwork Diffusion", + "Dreamshaper", + "URPM", + "Deliberate", + "Perfect World", + "Western Animation Diffusion" + ], + "team": {}, + "bridge_agent": "AI Horde Worker:23:https://github.com/db0/AI-Horde-Worker", + "max_pixels": 1376256, + "megapixelsteps_generated": 11411715, + "img2img": true, + "painting": true, + "lora": false + }, + { + "type": "image", + "name": "ImageHoarder", + "id": "5bdbfaa1-83a4-4b27-a479-2316a2a5925a", + "online": true, + "requests_fulfilled": 54858, + "kudos_rewards": 841400.0, + "kudos_details": { + "generated": 411908.0, + "uptime": 429752 + }, + "performance": "0.1 megapixelsteps per second", + "threads": 1, + "uptime": 5651062, + "maintenance_mode": false, + "nsfw": true, + "trusted": true, + "flagged": false, + "uncompleted_jobs": 1815, + "models": [ + "Deliberate" + ], + "team": { + "name": "boobtopia", + "id": "77c4f378-944e-4471-9db0-b56054c8ef23" + }, + "bridge_agent": "SD-WebUI Stable Horde Worker Bridge:4:https://github.com/sdwebui-w-horde/sd-webui-stable-horde-worker", + "max_pixels": 286720, + "megapixelsteps_generated": 482596, + "img2img": true, + "painting": true, + "lora": false + }, + { + "type": "image", + "name": "MalingeSlave1", + "id": "4d4a8c83-2ff7-4495-b233-40e7afba7687", + "online": true, + "requests_fulfilled": 23861, + "kudos_rewards": 383129.0, + "kudos_details": { + "generated": 339363.0, + "uptime": 43978 + }, + "performance": "0.2 megapixelsteps per second", + "threads": 1, + "uptime": 469432, + "maintenance_mode": false, + "nsfw": true, + "trusted": true, + "flagged": false, + "uncompleted_jobs": 69, + "models": [ + "Deliberate" + ], + "team": { + "name": "\ud83d\udd25\ud83d\udd25\ud83d\udc32 MalingeDragons \ud83d\udd25\ud83d\udd25\ud83d\udc32", + "id": "644218d5-a85e-41a1-9b84-463d5e3499bf" + }, + "bridge_agent": "AI Horde Worker:23:https://github.com/db0/AI-Horde-Worker", + "max_pixels": 720896, + "megapixelsteps_generated": 328503, + "img2img": true, + "painting": false, + "lora": false + }, + { + "type": "image", + "name": "CFManuelSimple12", + "id": "b6ae12ed-4dd0-468c-86f7-a9fdcc91580a", + "online": true, + "requests_fulfilled": 3, + "kudos_rewards": 89.0, + "kudos_details": { + "generated": 89.0 + }, + "performance": "0.6 megapixelsteps per second", + "threads": 1, + "uptime": 116, + "maintenance_mode": false, + "nsfw": true, + "trusted": true, + "flagged": false, + "uncompleted_jobs": 0, + "models": [ + "Deliberate" + ], + "team": {}, + "bridge_agent": "AI Horde Worker:23:https://github.com/db0/AI-Horde-Worker", + "max_pixels": 753664, + "megapixelsteps_generated": 71, + "img2img": true, + "painting": false, + "lora": true + }, + { + "type": "image", + "name": "CFManuelSimple11", + "id": "7b093d52-6638-437a-80a7-748b29060744", + "online": true, + "requests_fulfilled": 12739, + "kudos_rewards": 169215.0, + "kudos_details": { + "generated": 151255.0, + "uptime": 18054 + }, + "performance": "0.4 megapixelsteps per second", + "threads": 1, + "uptime": 181921, + "maintenance_mode": false, + "nsfw": true, + "trusted": true, + "flagged": false, + "uncompleted_jobs": 83, + "models": [ + "Deliberate" + ], + "team": { + "name": "IncompetentSquadZA", + "id": "b118f2d0-e187-4673-a67a-c196f29b1b11" + }, + "bridge_agent": "AI Horde Worker:23:https://github.com/db0/AI-Horde-Worker", + "max_pixels": 753664, + "megapixelsteps_generated": 159620, + "img2img": true, + "painting": false, + "lora": true + }, + { + "type": "image", + "name": "a_dreamer_eh", + "id": "81bd2d4a-aaef-4b98-a9fc-dceb29d356bf", + "online": true, + "requests_fulfilled": 5980, + "kudos_rewards": 106735.0, + "kudos_details": { + "generated": 93867.0, + "uptime": 12868 + }, + "performance": "0.2 megapixelsteps per second", + "threads": 1, + "uptime": 125152, + "maintenance_mode": false, + "nsfw": true, + "trusted": true, + "flagged": false, + "uncompleted_jobs": 20, + "models": [ + "Deliberate" + ], + "team": {}, + "bridge_agent": "AI Horde Worker:23:https://github.com/db0/AI-Horde-Worker", + "max_pixels": 720896, + "megapixelsteps_generated": 88143, + "img2img": true, + "painting": false, + "lora": false + }, + { + "type": "image", + "name": "CFManuelSimple10", + "id": "0bbd6f28-c8a7-4162-b7e3-f3fc7ec9009f", + "online": true, + "requests_fulfilled": 7870, + "kudos_rewards": 104213.0, + "kudos_details": { + "generated": 89919.0, + "uptime": 14294 + }, + "performance": "0.6 megapixelsteps per second", + "threads": 1, + "uptime": 124143, + "maintenance_mode": false, + "nsfw": true, + "trusted": true, + "flagged": false, + "uncompleted_jobs": 44, + "models": [ + "Deliberate" + ], + "team": { + "name": "IncompetentSquadZA", + "id": "b118f2d0-e187-4673-a67a-c196f29b1b11" + }, + "bridge_agent": "AI Horde Worker:23:https://github.com/db0/AI-Horde-Worker", + "max_pixels": 753664, + "megapixelsteps_generated": 92337, + "img2img": true, + "painting": false, + "lora": true + }, + { + "type": "image", + "name": "cool_worker", + "id": "3c659dff-2e75-4fbe-87a1-867430503d82", + "online": true, + "requests_fulfilled": 18556, + "kudos_rewards": 283103.0, + "kudos_details": { + "generated": 245583.0, + "uptime": 37520 + }, + "performance": "0.2 megapixelsteps per second", + "threads": 1, + "uptime": 338337, + "maintenance_mode": false, + "nsfw": true, + "trusted": true, + "flagged": false, + "uncompleted_jobs": 73, + "models": [ + "Anything Diffusion", + "Deliberate" + ], + "team": {}, + "bridge_agent": "AI Horde Worker:23:https://github.com/db0/AI-Horde-Worker", + "max_pixels": 720896, + "megapixelsteps_generated": 252881, + "img2img": true, + "painting": false, + "lora": false + }, + { + "type": "image", + "name": "MalingeSlave2", + "id": "0260a2fb-afca-473e-9718-5cebdf9a2349", + "online": true, + "requests_fulfilled": 13750, + "kudos_rewards": 243793.0, + "kudos_details": { + "generated": 217097.0, + "uptime": 26748 + }, + "performance": "0.2 megapixelsteps per second", + "threads": 1, + "uptime": 305900, + "maintenance_mode": false, + "nsfw": true, + "trusted": true, + "flagged": false, + "uncompleted_jobs": 51, + "models": [ + "Deliberate" + ], + "team": { + "name": "\ud83d\udd25\ud83d\udd25\ud83d\udc32 MalingeDragons \ud83d\udd25\ud83d\udd25\ud83d\udc32", + "id": "644218d5-a85e-41a1-9b84-463d5e3499bf" + }, + "bridge_agent": "AI Horde Worker:23:https://github.com/db0/AI-Horde-Worker", + "max_pixels": 720896, + "megapixelsteps_generated": 205571, + "img2img": true, + "painting": false, + "lora": false + }, + { + "type": "image", + "name": "MalingeDreamer", + "id": "6d0b5c21-6de7-4101-a8e7-e83b6cd19101", + "online": true, + "requests_fulfilled": 11133, + "kudos_rewards": 272900.0, + "kudos_details": { + "generated": 196816.0, + "uptime": 76126 + }, + "performance": "0.2 megapixelsteps per second", + "threads": 1, + "uptime": 583599, + "maintenance_mode": false, + "nsfw": true, + "trusted": true, + "flagged": false, + "uncompleted_jobs": 203, + "models": [ + "ICBINP - I Can't Believe It's Not Photography", + "stable_diffusion", + "Lyriel", + "Deliberate" + ], + "team": { + "name": "\ud83d\udd25\ud83d\udd25\ud83d\udc32 MalingeDragons \ud83d\udd25\ud83d\udd25\ud83d\udc32", + "id": "644218d5-a85e-41a1-9b84-463d5e3499bf" + }, + "bridge_agent": "AI Horde Worker:22:https://github.com/db0/AI-Horde-Worker", + "max_pixels": 262144, + "megapixelsteps_generated": 145477, + "img2img": true, + "painting": true, + "lora": true + }, + { + "type": "image", + "name": "CFManuelSimple3", + "id": "2eb3befd-5e03-4084-b6bf-4296cab48c3e", + "online": true, + "requests_fulfilled": 57590, + "kudos_rewards": 695375.0, + "kudos_details": { + "generated": 610491.0, + "uptime": 85254 + }, + "performance": "0.3 megapixelsteps per second", + "threads": 1, + "uptime": 899573, + "maintenance_mode": false, + "nsfw": true, + "trusted": true, + "flagged": false, + "uncompleted_jobs": 333, + "models": [ + "Deliberate" + ], + "team": { + "name": "IncompetentSquadZA", + "id": "b118f2d0-e187-4673-a67a-c196f29b1b11" + }, + "bridge_agent": "AI Horde Worker:23:https://github.com/db0/AI-Horde-Worker", + "max_pixels": 753664, + "megapixelsteps_generated": 658115, + "img2img": true, + "painting": false, + "lora": true + }, + { + "type": "image", + "name": "Infermatic.ai07", + "id": "4a94c354-cfba-44eb-8d3e-b90033033216", + "online": true, + "requests_fulfilled": 71770, + "kudos_rewards": 1150884.0, + "kudos_details": { + "generated": 998351.0, + "uptime": 152766 + }, + "performance": "0.5 megapixelsteps per second", + "threads": 1, + "uptime": 1740633, + "maintenance_mode": false, + "nsfw": true, + "trusted": true, + "flagged": false, + "uncompleted_jobs": 100, + "models": [ + "Deliberate", + "Anything Diffusion" + ], + "team": {}, + "bridge_agent": "AI Horde Worker:21:https://github.com/db0/AI-Horde-Worker", + "max_pixels": 262144, + "megapixelsteps_generated": 704212, + "img2img": true, + "painting": true, + "lora": false + }, + { + "type": "image", + "name": "CFManuelSimple9", + "id": "904e3ef9-8ead-4634-812e-6ea34d061b90", + "online": true, + "requests_fulfilled": 9233, + "kudos_rewards": 111709.0, + "kudos_details": { + "generated": 98510.0, + "uptime": 13288 + }, + "performance": "0.5 megapixelsteps per second", + "threads": 1, + "uptime": 126053, + "maintenance_mode": false, + "nsfw": true, + "trusted": true, + "flagged": false, + "uncompleted_jobs": 79, + "models": [ + "Deliberate" + ], + "team": { + "name": "IncompetentSquadZA", + "id": "b118f2d0-e187-4673-a67a-c196f29b1b11" + }, + "bridge_agent": "AI Horde Worker:23:https://github.com/db0/AI-Horde-Worker", + "max_pixels": 753664, + "megapixelsteps_generated": 106513, + "img2img": true, + "painting": false, + "lora": true + }, + { + "type": "image", + "name": "MalingeSlave4", + "id": "0b93830f-a583-4b62-a476-5649a7461c1b", + "online": true, + "requests_fulfilled": 7961, + "kudos_rewards": 135843.0, + "kudos_details": { + "generated": 119729.0, + "uptime": 16114 + }, + "performance": "0.2 megapixelsteps per second", + "threads": 1, + "uptime": 176218, + "maintenance_mode": false, + "nsfw": true, + "trusted": true, + "flagged": false, + "uncompleted_jobs": 28, + "models": [ + "Deliberate" + ], + "team": { + "name": "\ud83d\udd25\ud83d\udd25\ud83d\udc32 MalingeDragons \ud83d\udd25\ud83d\udd25\ud83d\udc32", + "id": "644218d5-a85e-41a1-9b84-463d5e3499bf" + }, + "bridge_agent": "AI Horde Worker:23:https://github.com/db0/AI-Horde-Worker", + "max_pixels": 720896, + "megapixelsteps_generated": 110447, + "img2img": true, + "painting": false, + "lora": false + }, + { + "type": "image", + "name": "CFManuelSimple4", + "id": "775beba9-d205-40af-a73c-fcc576554594", + "online": true, + "requests_fulfilled": 57112, + "kudos_rewards": 666400.0, + "kudos_details": { + "generated": 598909.0, + "uptime": 67694 + }, + "performance": "0.3 megapixelsteps per second", + "threads": 1, + "uptime": 773590, + "maintenance_mode": false, + "nsfw": true, + "trusted": true, + "flagged": false, + "uncompleted_jobs": 316, + "models": [ + "Deliberate" + ], + "team": { + "name": "IncompetentSquadZA", + "id": "b118f2d0-e187-4673-a67a-c196f29b1b11" + }, + "bridge_agent": "AI Horde Worker:23:https://github.com/db0/AI-Horde-Worker", + "max_pixels": 753664, + "megapixelsteps_generated": 646737, + "img2img": true, + "painting": false, + "lora": true + }, + { + "type": "image", + "name": "Pringly plogly sclogly", + "id": "1bb58dbb-524a-431c-9702-7db50e122c4b", + "online": true, + "requests_fulfilled": 39852, + "kudos_rewards": 527402.0, + "kudos_details": { + "generated": 476767.0, + "uptime": 50840 + }, + "performance": "0.2 megapixelsteps per second", + "threads": 1, + "uptime": 564584, + "maintenance_mode": false, + "nsfw": true, + "trusted": true, + "flagged": false, + "uncompleted_jobs": 112, + "models": [ + "Deliberate" + ], + "team": {}, + "bridge_agent": "AI Horde Worker:23:https://github.com/db0/AI-Horde-Worker", + "max_pixels": 720896, + "megapixelsteps_generated": 505362, + "img2img": true, + "painting": false, + "lora": false + }, + { + "type": "image", + "name": "Infermatic.ai08", + "id": "c827056d-ac26-4684-89ef-0d4c5e3f2de3", + "online": true, + "requests_fulfilled": 71922, + "kudos_rewards": 1149682.0, + "kudos_details": { + "generated": 997183.0, + "uptime": 152766 + }, + "performance": "0.3 megapixelsteps per second", + "threads": 1, + "uptime": 1738978, + "maintenance_mode": false, + "nsfw": true, + "trusted": true, + "flagged": false, + "uncompleted_jobs": 107, + "models": [ + "Anything Diffusion", + "Deliberate" + ], + "team": {}, + "bridge_agent": "AI Horde Worker:21:https://github.com/db0/AI-Horde-Worker", + "max_pixels": 262144, + "megapixelsteps_generated": 707162, + "img2img": true, + "painting": true, + "lora": false + }, + { + "type": "image", + "name": "Infermatic.ai06", + "id": "5c55ebc3-1ba0-44fe-8cf7-0e5273f9d560", + "online": true, + "requests_fulfilled": 71998, + "kudos_rewards": 1154275.0, + "kudos_details": { + "generated": 1001772.0, + "uptime": 152712 + }, + "performance": "0.5 megapixelsteps per second", + "threads": 1, + "uptime": 1737717, + "maintenance_mode": false, + "nsfw": true, + "trusted": true, + "flagged": false, + "uncompleted_jobs": 88, + "models": [ + "Deliberate", + "Anything Diffusion" + ], + "team": {}, + "bridge_agent": "AI Horde Worker:21:https://github.com/db0/AI-Horde-Worker", + "max_pixels": 262144, + "megapixelsteps_generated": 706245, + "img2img": true, + "painting": true, + "lora": false + }, + { + "type": "image", + "name": "ffffff", + "id": "bd6a4b3d-22d6-4364-9466-c34fd9c1a9da", + "online": true, + "requests_fulfilled": 2180, + "kudos_rewards": 43590.0, + "kudos_details": { + "generated": 37818.0, + "uptime": 5772 + }, + "performance": "0.4 megapixelsteps per second", + "threads": 1, + "uptime": 70422, + "maintenance_mode": false, + "nsfw": true, + "trusted": false, + "flagged": false, + "uncompleted_jobs": 10, + "models": [ + "Epic Diffusion" + ], + "team": {}, + "bridge_agent": "AI Horde Worker:23:https://github.com/db0/AI-Horde-Worker", + "max_pixels": 720896, + "megapixelsteps_generated": 50407, + "img2img": true, + "painting": false, + "lora": false + }, + { + "type": "image", + "name": "CFManuelSimple8", + "id": "e1abbc97-9d4f-49fb-9c7d-4e8f413fc980", + "online": true, + "requests_fulfilled": 12815, + "kudos_rewards": 163025.0, + "kudos_details": { + "generated": 142771.0, + "uptime": 20418 + }, + "performance": "0.4 megapixelsteps per second", + "threads": 1, + "uptime": 193110, + "maintenance_mode": false, + "nsfw": true, + "trusted": true, + "flagged": false, + "uncompleted_jobs": 56, + "models": [ + "Deliberate" + ], + "team": { + "name": "IncompetentSquadZA", + "id": "b118f2d0-e187-4673-a67a-c196f29b1b11" + }, + "bridge_agent": "AI Horde Worker:23:https://github.com/db0/AI-Horde-Worker", + "max_pixels": 753664, + "megapixelsteps_generated": 152225, + "img2img": true, + "painting": false, + "lora": true + }, + { + "type": "image", + "name": "Infermatic.ai09", + "id": "667bffdd-c8c5-49bc-b374-130beac76734", + "online": true, + "requests_fulfilled": 71209, + "kudos_rewards": 1144233.0, + "kudos_details": { + "generated": 991638.0, + "uptime": 152712 + }, + "performance": "0.6 megapixelsteps per second", + "threads": 1, + "uptime": 1739391, + "maintenance_mode": false, + "nsfw": true, + "trusted": true, + "flagged": false, + "uncompleted_jobs": 90, + "models": [ + "Deliberate", + "Anything Diffusion" + ], + "team": {}, + "bridge_agent": "AI Horde Worker:21:https://github.com/db0/AI-Horde-Worker", + "max_pixels": 262144, + "megapixelsteps_generated": 699620, + "img2img": true, + "painting": true, + "lora": false + }, + { + "type": "image", + "name": "CFManuelSimple7", + "id": "20efd1e7-eb4f-4a3d-83cb-4ac1c6abe6cf", + "online": true, + "requests_fulfilled": 20041, + "kudos_rewards": 249840.0, + "kudos_details": { + "generated": 223238.0, + "uptime": 26714 + }, + "performance": "0.5 megapixelsteps per second", + "threads": 1, + "uptime": 281270, + "maintenance_mode": false, + "nsfw": true, + "trusted": true, + "flagged": false, + "uncompleted_jobs": 216, + "models": [ + "Deliberate" + ], + "team": { + "name": "IncompetentSquadZA", + "id": "b118f2d0-e187-4673-a67a-c196f29b1b11" + }, + "bridge_agent": "AI Horde Worker:23:https://github.com/db0/AI-Horde-Worker", + "max_pixels": 753664, + "megapixelsteps_generated": 235763, + "img2img": true, + "painting": false, + "lora": true + }, + { + "type": "image", + "name": "TuringAI 1", + "id": "bfb21d9f-0be5-45ed-bfd8-788d45d9910c", + "online": true, + "requests_fulfilled": 73994, + "kudos_rewards": 1868188.0, + "kudos_details": { + "generated": 1778995.0, + "uptime": 92084 + }, + "performance": "1.4 megapixelsteps per second", + "threads": 1, + "uptime": 724771, + "maintenance_mode": false, + "info": "https://discord.gg/turing\nNVIDIA RTX A6000", + "nsfw": true, + "trusted": true, + "flagged": false, + "uncompleted_jobs": 195, + "models": [ + "ChilloutMix", + "stable_diffusion", + "Dreamshaper", + "BB95 Furry Mix", + "Deliberate", + "Hentai Diffusion", + "ICBINP - I Can't Believe It's Not Photography", + "iCoMix", + "Anything Diffusion" + ], + "team": {}, + "bridge_agent": "AI Horde Worker:23:https://github.com/db0/AI-Horde-Worker", + "max_pixels": 1572864, + "megapixelsteps_generated": 1614954, + "img2img": true, + "painting": true, + "lora": false + }, + { + "type": "image", + "name": "pawkygame_3090_office Dreamer", + "id": "6439db02-f99d-4816-a2e7-29ea0fb3f723", + "online": true, + "requests_fulfilled": 65968, + "kudos_rewards": 2144940.0, + "kudos_details": { + "generated": 2035125.0, + "uptime": 112772 + }, + "performance": "0.6 megapixelsteps per second", + "threads": 2, + "uptime": 1071360, + "maintenance_mode": false, + "nsfw": true, + "trusted": true, + "flagged": false, + "uncompleted_jobs": 96, + "models": [ + "ChilloutMix", + "BRA", + "CamelliaMix 2.5D", + "Pretty 2.5D", + "stable_diffusion", + "Anything Diffusion", + "Deliberate", + "ICBINP - I Can't Believe It's Not Photography" + ], + "team": {}, + "bridge_agent": "AI Horde Worker:22:https://github.com/db0/AI-Horde-Worker", + "max_pixels": 1048576, + "megapixelsteps_generated": 1681332, + "img2img": true, + "painting": true, + "lora": false + }, + { + "type": "image", + "name": "Infermatic.ai03", + "id": "cf1fae07-f72d-4f47-9612-89b8634149dd", + "online": true, + "requests_fulfilled": 303800, + "kudos_rewards": 3923470.0, + "kudos_details": { + "generated": 3633258.0, + "uptime": 290520 + }, + "performance": "0.2 megapixelsteps per second", + "threads": 1, + "uptime": 3277848, + "maintenance_mode": false, + "nsfw": true, + "trusted": true, + "flagged": false, + "uncompleted_jobs": 105, + "models": [ + "Deliberate", + "Anything Diffusion" + ], + "team": {}, + "bridge_agent": "AI Horde Worker:21:https://github.com/db0/AI-Horde-Worker", + "max_pixels": 262144, + "megapixelsteps_generated": 2699849, + "img2img": true, + "painting": true, + "lora": false + }, + { + "type": "image", + "name": "CFManuelSimple5", + "id": "581a7085-0509-4e54-a10b-0b2103941eab", + "online": true, + "requests_fulfilled": 29246, + "kudos_rewards": 334691.0, + "kudos_details": { + "generated": 295094.0, + "uptime": 39746 + }, + "performance": "0.4 megapixelsteps per second", + "threads": 1, + "uptime": 427313, + "maintenance_mode": false, + "nsfw": true, + "trusted": true, + "flagged": false, + "uncompleted_jobs": 219, + "models": [ + "Deliberate" + ], + "team": { + "name": "IncompetentSquadZA", + "id": "b118f2d0-e187-4673-a67a-c196f29b1b11" + }, + "bridge_agent": "AI Horde Worker:23:https://github.com/db0/AI-Horde-Worker", + "max_pixels": 753664, + "megapixelsteps_generated": 315656, + "img2img": true, + "painting": false, + "lora": true + }, + { + "type": "image", + "name": "JBertok-TitanV-2", + "id": "ec06eeb7-4c6a-43e3-8eaf-d28799530964", + "online": true, + "requests_fulfilled": 660458, + "kudos_rewards": 8601488.0, + "kudos_details": { + "generated": 7790711.0, + "uptime": 812850 + }, + "performance": "0.8 megapixelsteps per second", + "threads": 1, + "uptime": 8944009, + "maintenance_mode": false, + "info": "Titan V 12GB x4, Xeon Gold 6258R x2, 192GB", + "nsfw": true, + "trusted": true, + "flagged": false, + "uncompleted_jobs": 4229, + "models": [ + "Deliberate", + "Realisian", + "BB95 Furry Mix", + "Anything Diffusion" + ], + "team": {}, + "bridge_agent": "AI Horde Worker:23:https://github.com/db0/AI-Horde-Worker", + "max_pixels": 393216, + "megapixelsteps_generated": 7595527, + "img2img": true, + "painting": true, + "lora": false + }, + { + "type": "image", + "name": "Pizza delivery tonight, yes? - Your uncle", + "id": "eb4cee37-2d18-43ab-984a-1f2c9c4379ca", + "online": true, + "requests_fulfilled": 28041, + "kudos_rewards": 377475.0, + "kudos_details": { + "generated": 338659.0, + "uptime": 38930 + }, + "performance": "0.2 megapixelsteps per second", + "threads": 1, + "uptime": 427448, + "maintenance_mode": false, + "nsfw": true, + "trusted": true, + "flagged": false, + "uncompleted_jobs": 89, + "models": [ + "Deliberate" + ], + "team": {}, + "bridge_agent": "AI Horde Worker:23:https://github.com/db0/AI-Horde-Worker", + "max_pixels": 720896, + "megapixelsteps_generated": 357568, + "img2img": true, + "painting": false, + "lora": false + }, + { + "type": "image", + "name": "DigitalDream.io_2", + "id": "cf864212-98d8-4b54-9539-0869bf1a04fb", + "online": true, + "requests_fulfilled": 70979, + "kudos_rewards": 2266391.0, + "kudos_details": { + "generated": 2049855.0, + "uptime": 216536 + }, + "performance": "1.4 megapixelsteps per second", + "threads": 1, + "uptime": 1525110, + "maintenance_mode": false, + "nsfw": true, + "trusted": true, + "flagged": false, + "uncompleted_jobs": 387, + "models": [ + "stable_diffusion", + "ICBINP - I Can't Believe It's Not Photography", + "Deliberate", + "Anything Diffusion" + ], + "team": {}, + "bridge_agent": "AI Horde Worker:22:https://github.com/db0/AI-Horde-Worker", + "max_pixels": 1572864, + "megapixelsteps_generated": 1628886, + "img2img": true, + "painting": true, + "lora": true + }, + { + "type": "image", + "name": "LameDuckDream99", + "id": "e9090e45-24d6-4377-ad38-a0dd4711fa21", + "online": true, + "requests_fulfilled": 4285, + "kudos_rewards": 67072.0, + "kudos_details": { + "generated": 58164.0, + "uptime": 8908 + }, + "performance": "0.4 megapixelsteps per second", + "threads": 1, + "uptime": 83169, + "maintenance_mode": false, + "nsfw": true, + "trusted": true, + "flagged": false, + "uncompleted_jobs": 35, + "models": [ + "Anything v5", + "Anything Diffusion" + ], + "team": {}, + "bridge_agent": "AI Horde Worker:23:https://github.com/db0/AI-Horde-Worker", + "max_pixels": 720896, + "megapixelsteps_generated": 60513, + "img2img": true, + "painting": false, + "lora": false + }, + { + "type": "image", + "name": "epic1234", + "id": "4217d66f-2b97-49db-a43b-e871191bd67d", + "online": true, + "requests_fulfilled": 308, + "kudos_rewards": 18426.0, + "kudos_details": { + "generated": 16710.0, + "uptime": 1716 + }, + "performance": "0.2 megapixelsteps per second", + "threads": 1, + "uptime": 21776, + "maintenance_mode": false, + "nsfw": true, + "trusted": false, + "flagged": false, + "uncompleted_jobs": 1, + "models": [ + "Deliberate" + ], + "team": {}, + "bridge_agent": "AI Horde Worker:23:https://github.com/db0/AI-Horde-Worker", + "max_pixels": 720896, + "megapixelsteps_generated": 8809, + "img2img": true, + "painting": false, + "lora": false + }, + { + "type": "image", + "name": "Infermatic.ai4", + "id": "029c8bd9-69b6-42eb-b5f3-f34525b56d4b", + "online": true, + "requests_fulfilled": 69027, + "kudos_rewards": 1114428.0, + "kudos_details": { + "generated": 961776.0, + "uptime": 152928 + }, + "performance": "0.6 megapixelsteps per second", + "threads": 1, + "uptime": 1739481, + "maintenance_mode": false, + "nsfw": true, + "trusted": true, + "flagged": false, + "uncompleted_jobs": 88, + "models": [ + "Deliberate", + "Anything Diffusion" + ], + "team": {}, + "bridge_agent": "AI Horde Worker:21:https://github.com/db0/AI-Horde-Worker", + "max_pixels": 262144, + "megapixelsteps_generated": 677403, + "img2img": true, + "painting": true, + "lora": false + }, + { + "type": "image", + "name": "MalingeSlave3", + "id": "24990bf2-9caa-47ea-917d-d64470935f40", + "online": true, + "requests_fulfilled": 4464, + "kudos_rewards": 87358.0, + "kudos_details": { + "generated": 78108.0, + "uptime": 9256 + }, + "performance": "0.2 megapixelsteps per second", + "threads": 1, + "uptime": 114814, + "maintenance_mode": false, + "nsfw": true, + "trusted": true, + "flagged": false, + "uncompleted_jobs": 18, + "models": [ + "Deliberate" + ], + "team": { + "name": "\ud83d\udd25\ud83d\udd25\ud83d\udc32 MalingeDragons \ud83d\udd25\ud83d\udd25\ud83d\udc32", + "id": "644218d5-a85e-41a1-9b84-463d5e3499bf" + }, + "bridge_agent": "AI Horde Worker:23:https://github.com/db0/AI-Horde-Worker", + "max_pixels": 720896, + "megapixelsteps_generated": 66851, + "img2img": true, + "painting": false, + "lora": false + }, + { + "type": "image", + "name": "JBertok-TitanV-1", + "id": "645c3e0a-01ac-4804-90ad-a5c479a56d5e", + "online": true, + "requests_fulfilled": 625998, + "kudos_rewards": 9207337.0, + "kudos_details": { + "generated": 8453654.0, + "uptime": 755536 + }, + "performance": "0.6 megapixelsteps per second", + "threads": 1, + "uptime": 8779221, + "maintenance_mode": false, + "info": "Titan V 12GB x4, Xeon 6258R x2, 192GB", + "nsfw": true, + "trusted": true, + "flagged": false, + "uncompleted_jobs": 2618, + "models": [ + "Realisian", + "BB95 Furry Mix", + "Deliberate", + "Dreamshaper", + "Anything Diffusion" + ], + "team": {}, + "bridge_agent": "AI Horde Worker:23:https://github.com/db0/AI-Horde-Worker", + "max_pixels": 393216, + "megapixelsteps_generated": 8123312, + "img2img": true, + "painting": true, + "lora": false + }, + { + "type": "image", + "name": "ControlNet_Worker_5", + "id": "e2a18a8c-9ad2-4cf7-9f23-8edb39388ea6", + "online": true, + "requests_fulfilled": 32050, + "kudos_rewards": 1114795.0, + "kudos_details": { + "generated": 1103390.0, + "uptime": 11434 + }, + "performance": "2.0 megapixelsteps per second", + "threads": 1, + "uptime": 131565, + "maintenance_mode": false, + "nsfw": true, + "trusted": true, + "flagged": false, + "uncompleted_jobs": 1174, + "models": [ + "horde_special::stability.ai#6901", + "SDXL_beta::stability.ai#6901" + ], + "team": {}, + "bridge_agent": "AI Horde Worker:22:https://github.com/db0/AI-Horde-Worker", + "max_pixels": 4194304, + "megapixelsteps_generated": 1332069, + "img2img": true, + "painting": true, + "lora": false + }, + { + "type": "image", + "name": "JR402", + "id": "a880a150-1819-41f7-953e-4ac04b24de3a", + "online": true, + "requests_fulfilled": 18539, + "kudos_rewards": 261890.0, + "kudos_details": { + "generated": 237110.0, + "uptime": 24792 + }, + "performance": "0.4 megapixelsteps per second", + "threads": 1, + "uptime": 307339, + "maintenance_mode": false, + "nsfw": true, + "trusted": true, + "flagged": false, + "uncompleted_jobs": 87, + "models": [ + "Deliberate" + ], + "team": {}, + "bridge_agent": "AI Horde Worker:23:https://github.com/db0/AI-Horde-Worker", + "max_pixels": 524288, + "megapixelsteps_generated": 247030, + "img2img": true, + "painting": false, + "lora": false + }, + { + "type": "image", + "name": "Infermatic.ai05", + "id": "7b4ef5fc-5f02-4564-ace6-9c04b759ca62", + "online": true, + "requests_fulfilled": 72216, + "kudos_rewards": 1156894.0, + "kudos_details": { + "generated": 1004352.0, + "uptime": 152874 + }, + "performance": "0.5 megapixelsteps per second", + "threads": 1, + "uptime": 1738896, + "maintenance_mode": false, + "nsfw": true, + "trusted": true, + "flagged": false, + "uncompleted_jobs": 94, + "models": [ + "Deliberate", + "Anything Diffusion" + ], + "team": {}, + "bridge_agent": "AI Horde Worker:21:https://github.com/db0/AI-Horde-Worker", + "max_pixels": 262144, + "megapixelsteps_generated": 707691, + "img2img": true, + "painting": true, + "lora": false + }, + { + "type": "image", + "name": "indigo_sky_by_moonlight", + "id": "d5d0da0e-6340-44f5-a53f-c4da19b88468", + "online": true, + "requests_fulfilled": 29, + "kudos_rewards": 1552.0, + "kudos_details": { + "generated": 1448.0, + "uptime": 104 + }, + "performance": "0.3 megapixelsteps per second", + "threads": 1, + "uptime": 1780, + "maintenance_mode": false, + "nsfw": true, + "trusted": false, + "flagged": false, + "uncompleted_jobs": 0, + "models": [ + "Deliberate" + ], + "team": {}, + "bridge_agent": "AI Horde Worker:23:https://github.com/db0/AI-Horde-Worker", + "max_pixels": 720896, + "megapixelsteps_generated": 822, + "img2img": true, + "painting": false, + "lora": false + }, + { + "type": "image", + "name": "AASD02", + "id": "1d3ba385-904d-4f69-ab1a-f341c4c233d9", + "online": true, + "requests_fulfilled": 40240, + "kudos_rewards": 1039066.0, + "kudos_details": { + "generated": 380586.0, + "uptime": 658480 + }, + "performance": "0.2 megapixelsteps per second", + "threads": 1, + "uptime": 8281285, + "maintenance_mode": false, + "nsfw": false, + "trusted": true, + "flagged": false, + "uncompleted_jobs": 876, + "models": [ + "Deliberate" + ], + "team": {}, + "bridge_agent": "SD-WebUI Stable Horde Worker Bridge:4:https://github.com/sdwebui-w-horde/sd-webui-stable-horde-worker", + "max_pixels": 589824, + "megapixelsteps_generated": 477873, + "img2img": true, + "painting": true, + "lora": false + }, + { + "type": "image", + "name": "Fox's Desktop - RTX 3080Ti - Main Branch", + "id": "838cc80f-e652-4f5a-8abb-e22eeb85b891", + "online": true, + "requests_fulfilled": 92128, + "kudos_rewards": 3991390.0, + "kudos_details": { + "generated": 2466334.0, + "uptime": 1525756 + }, + "performance": "0.4 megapixelsteps per second", + "threads": 1, + "uptime": 1782395, + "maintenance_mode": false, + "nsfw": true, + "trusted": true, + "flagged": false, + "uncompleted_jobs": 1294, + "models": [ + "Protogen Anime", + "Squishmallow Diffusion", + "VinteProtogenMix", + "BB95 Furry Mix", + "Robo-Diffusion", + "Disney Pixar Cartoon Type A", + "Deliberate", + "Van Gogh Diffusion", + "BweshMix", + "Valorant Diffusion", + "Disco Elysium", + "Trinart Characters", + "iCoMix", + "Fluffusion", + "vectorartz", + "Marvel Diffusion", + "Henmix Real", + "Comic-Diffusion", + "Grapefruit Hentai", + "Papercut Diffusion", + "Healy's Anime Blend", + "UMI Olympus", + "Microcasing", + "Coloring Book", + "HASDX", + "Arcane Diffusion", + "Uhmami", + "Microcritters", + "NeverEnding Dream", + "Elldreths Retro Mix", + "trinart", + "Sygil-Dev Diffusion", + "Movie Diffusion", + "GuoFeng", + "Min Illust Background", + "kurzgesagt", + "Dreamshaper", + "Aurora", + "Protogen Infinity", + "Clazy", + "Eimis Anime Diffusion", + "Cyberpunk Anime Diffusion", + "Papercutcraft", + "stable_diffusion_inpainting", + "T-Shirt Diffusion", + "Anything v3", + "Yiffy", + "Vector Art", + "Dark Sushi Mix", + "Babes", + "Ghibli Diffusion", + "Jim Eidomode", + "Anything Diffusion", + "PVC", + "Colorful", + "Voxel Art Diffusion", + "Cetus-Mix", + "Spider-Verse Diffusion", + "Borderlands", + "Galena Redux", + "Char", + "stable_diffusion_2.1", + "Balloon Art", + "T-Shirt Print Designs", + "PIXHELL", + "Lawlas's yiff mix", + "majicMIX realistic", + "ToonYou", + "Zeipher Female Model", + "CharHelper", + "ModernArt Diffusion", + "OpenJourney Diffusion", + "DreamShaper Inpainting", + "ExpMix Line", + "Real Dos Mix", + "FKing SciFi", + "Realisian", + "526Mix-Animated", + "Something", + "PPP", + "DnD Item", + "Microworlds", + "Rodent Diffusion", + "Vintedois Diffusion", + "Counterfeit", + "Project Unreal Engine 5", + "Deliberate Inpainting", + "Kenshi", + "Redshift Diffusion", + "Western Animation Diffusion", + "Samdoesarts Ultmerge", + "Microchars", + "SynthwavePunk", + "Lyriel", + "Korestyle", + "Anything Diffusion Inpainting", + "Dark Victorian Diffusion", + "Sci-Fi Diffusion", + "Anygen", + "Vivid Watercolors", + "Illuminati Diffusion", + "A to Zovya RPG", + "DGSpitzer Art Diffusion", + "HRL", + "DnD Map Generator", + "Moedel", + "Rainbowpatch", + "Reliberate", + "Dreamlike Diffusion", + "Guohua Diffusion", + "Abyss OrangeMix", + "BubblyDubbly", + "RCNZ Gorilla With A Brick", + "Microscopic", + "GhostMix", + "Midjourney PaintArt", + "Funko Diffusion", + "MoistMix", + "Experience", + "CamelliaMix 2.5D", + "PFG", + "JoMad Diffusion", + "MoonMix Fantasy", + "Knollingcase", + "Ultraskin", + "SD-Silicon", + "Hassanblend", + "Hassaku", + "BPModel", + "Pretty 2.5D", + "AnyLoRA", + "AbyssOrangeMix-AfterDark", + "PortraitPlus", + "Ether Real Mix", + "ICBINP - I Can't Believe It's Not Photography", + "Elldreth's Lucid Mix", + "Mistoon Amethyst", + "Pokemon3D", + "Realistic Vision Inpainting", + "Anime Pencil Diffusion", + "Neurogen", + "3DKX", + "Asim Simpsons", + "Elden Ring Diffusion", + "Seek.art MEGA", + "Fantasy Card Diffusion", + "Archer Diffusion", + "Nitro Diffusion", + "Openniji", + "GuFeng", + "waifu_diffusion", + "ProtoGen", + "Furry Epoch", + "DreamLikeSamKuvshinov", + "Mega Merge Diffusion", + "Laolei New Berry Protogen Mix", + "Dreamlike Photoreal", + "DucHaiten Classic Anime", + "Ranma Diffusion", + "Dungeons and Diffusion", + "Double Exposure Diffusion", + "Rachel Walker Watercolors", + "Analog Diffusion", + "Tron Legacy Diffusion", + "Cheese Daddys Landscape Mix", + "Pastel Mix", + "MeinaMix", + "CyriousMix", + "GTA5 Artwork Diffusion", + "RCNZ Dumb Monkey", + "Classic Animation Diffusion", + "Realism Engine", + "Eternos", + "stable_diffusion", + "RPG", + "RealBiter", + "Pulp Vector Art", + "Concept Sheet", + "Graphic-Art", + "Poison", + "AIO Pixel Art", + "Perfect World", + "Hentai Diffusion", + "FaeTastic", + "Samaritan 3d Cartoon", + "JWST Deep Space Diffusion", + "PRMJ", + "ACertainThing", + "Woop-Woop Photo", + "Future Diffusion", + "Epic Diffusion", + "A-Zovya RPG Inpainting", + "Sonic Diffusion", + "Darkest Diffusion", + "Dan Mumford Style", + "OrbAI", + "Art Of Mtg", + "Epic Diffusion Inpainting", + "App Icon Diffusion", + "Edge Of Realism", + "GorynichMix", + "CyberRealistic", + "Supermarionation", + "Liberty", + "DucHaiten", + "Realistic Vision", + "TrexMix", + "ChilloutMix", + "Dungeons n Waifus", + "Anything v5", + "Inkpunk Diffusion", + "Zack3D", + "Smoke Diffusion", + "Xynthii-Diffusion", + "Elysium Anime", + "Unstable Ink Dream", + "URPM", + "iCoMix Inpainting", + "Synthwave", + "ChromaV5", + "Wavyfusion", + "Rev Animated", + "Analog Madness", + "SweetBoys 2D", + "Zelda BOTW", + "mo-di-diffusion" + ], + "team": {}, + "bridge_agent": "AI Horde Worker:23:https://github.com/db0/AI-Horde-Worker", + "max_pixels": 2359296, + "megapixelsteps_generated": 2190390, + "img2img": true, + "painting": true, + "lora": true + }, + { + "type": "image", + "name": "Infermatic.ai1jkj", + "id": "6bbd1181-b2f5-41d1-8dfc-c7b906674f50", + "online": true, + "requests_fulfilled": 69649, + "kudos_rewards": 1119547.0, + "kudos_details": { + "generated": 967087.0, + "uptime": 152712 + }, + "performance": "0.4 megapixelsteps per second", + "threads": 1, + "uptime": 1739777, + "maintenance_mode": false, + "nsfw": true, + "trusted": true, + "flagged": false, + "uncompleted_jobs": 112, + "models": [ + "Deliberate", + "Anything Diffusion" + ], + "team": {}, + "bridge_agent": "AI Horde Worker:21:https://github.com/db0/AI-Horde-Worker", + "max_pixels": 262144, + "megapixelsteps_generated": 682698, + "img2img": true, + "painting": true, + "lora": false + }, + { + "type": "image", + "name": "LameDuckDream0", + "id": "d0b2cb3b-8e50-4c2e-bac1-22afeef00b5e", + "online": true, + "requests_fulfilled": 178425, + "kudos_rewards": 2644446.0, + "kudos_details": { + "generated": 2343721.0, + "uptime": 300768 + }, + "performance": "1.0 megapixelsteps per second", + "threads": 1, + "uptime": 2233754, + "maintenance_mode": false, + "nsfw": true, + "trusted": true, + "flagged": false, + "uncompleted_jobs": 56, + "models": [ + "Anything v5", + "Anything Diffusion" + ], + "team": {}, + "bridge_agent": "AI Horde Worker:23:https://github.com/db0/AI-Horde-Worker", + "max_pixels": 524288, + "megapixelsteps_generated": 2387661, + "img2img": false, + "painting": false, + "lora": true + }, + { + "type": "image", + "name": "ComicsMaker.ai", + "id": "74e0a02c-4089-4815-bc73-4551d9a47fcb", + "online": true, + "requests_fulfilled": 114554, + "kudos_rewards": 1239197.0, + "kudos_details": { + "generated": 1136792.0, + "uptime": 102676 + }, + "performance": "0.8 megapixelsteps per second", + "threads": 1, + "uptime": 1112548, + "maintenance_mode": false, + "nsfw": true, + "trusted": true, + "flagged": false, + "uncompleted_jobs": 23, + "models": [ + "Deliberate", + "stable_diffusion", + "iCoMix" + ], + "team": { + "name": "ComicsMaker.ai", + "id": "75b4a0d2-4054-4781-aa39-1292dec1f87c" + }, + "bridge_agent": "AI Horde Worker:23:https://github.com/db0/AI-Horde-Worker", + "max_pixels": 262144, + "megapixelsteps_generated": 812132, + "img2img": true, + "painting": true, + "lora": false + }, + { + "type": "image", + "name": "JBertok-TitanV-3", + "id": "b04c21d9-a714-4c33-b754-cdd03d7ee603", + "online": true, + "requests_fulfilled": 682666, + "kudos_rewards": 9108201.0, + "kudos_details": { + "generated": 8322077.0, + "uptime": 787846 + }, + "performance": "0.9 megapixelsteps per second", + "threads": 1, + "uptime": 9141969, + "maintenance_mode": false, + "info": "Titan V 12GB x4, Xeon Gold 6258R x2, 192GB", + "nsfw": true, + "trusted": true, + "flagged": false, + "uncompleted_jobs": 2178, + "models": [ + "PIXHELL", + "BB95 Furry Mix", + "Deliberate", + "Dreamshaper", + "Anything Diffusion" + ], + "team": {}, + "bridge_agent": "AI Horde Worker:23:https://github.com/db0/AI-Horde-Worker", + "max_pixels": 393216, + "megapixelsteps_generated": 8017456, + "img2img": true, + "painting": true, + "lora": false + }, + { + "type": "image", + "name": "pawkygame_2060 Dreamer", + "id": "31f6d463-c96d-4421-acba-ef8139d9c640", + "online": true, + "requests_fulfilled": 203393, + "kudos_rewards": 4098129.0, + "kudos_details": { + "generated": 3601721.0, + "uptime": 496482 + }, + "performance": "0.6 megapixelsteps per second", + "threads": 1, + "uptime": 4791872, + "maintenance_mode": false, + "nsfw": true, + "trusted": true, + "flagged": false, + "uncompleted_jobs": 220, + "models": [ + "majicMIX realistic", + "Deliberate", + "Pretty 2.5D", + "ICBINP - I Can't Believe It's Not Photography", + "CamelliaMix 2.5D", + "Anything Diffusion", + "BRA", + "ChilloutMix", + "stable_diffusion" + ], + "team": { + "name": "PawkyGame", + "id": "b417b070-0205-4bc3-be55-41e2516b8d50" + }, + "bridge_agent": "AI Horde Worker:23:https://github.com/db0/AI-Horde-Worker", + "max_pixels": 589824, + "megapixelsteps_generated": 2983545, + "img2img": true, + "painting": true, + "lora": false + }, + { + "type": "image", + "name": "Photodude_2000", + "id": "db6b8f00-c97d-4e89-a727-a1947d017480", + "online": true, + "requests_fulfilled": 14046, + "kudos_rewards": 215678.0, + "kudos_details": { + "generated": 194697.0, + "uptime": 21122 + }, + "performance": "0.5 megapixelsteps per second", + "threads": 2, + "uptime": 159420, + "maintenance_mode": false, + "nsfw": true, + "trusted": false, + "flagged": false, + "uncompleted_jobs": 67, + "models": [ + "Anything Diffusion", + "stable_diffusion", + "Deliberate", + "ICBINP - I Can't Believe It's Not Photography" + ], + "team": {}, + "bridge_agent": "AI Horde Worker:23:https://github.com/db0/AI-Horde-Worker", + "max_pixels": 262144, + "megapixelsteps_generated": 136058, + "img2img": true, + "painting": true, + "lora": true + }, + { + "type": "image", + "name": "Stasiade", + "id": "3a6802d6-4f22-4220-be24-ae53fdf18aca", + "online": true, + "requests_fulfilled": 82935, + "kudos_rewards": 1239908.0, + "kudos_details": { + "generated": 1128626.0, + "uptime": 112904 + }, + "performance": "1.1 megapixelsteps per second", + "threads": 1, + "uptime": 1127004, + "maintenance_mode": false, + "nsfw": true, + "trusted": true, + "flagged": false, + "uncompleted_jobs": 320, + "models": [ + "Realistic Vision", + "Analog Diffusion", + "Dreamlike Photoreal", + "stable_diffusion", + "stable_diffusion_2.1", + "Deliberate" + ], + "team": {}, + "bridge_agent": "AI Horde Worker:22:https://github.com/db0/AI-Horde-Worker", + "max_pixels": 589824, + "megapixelsteps_generated": 958409, + "img2img": true, + "painting": true, + "lora": false + }, + { + "type": "image", + "name": "pawkygame_3060 Dreamer", + "id": "1051dd84-b3ad-4760-81ee-734d659a5df0", + "online": true, + "requests_fulfilled": 58576, + "kudos_rewards": 2188091.0, + "kudos_details": { + "generated": 2045242.0, + "uptime": 143156 + }, + "performance": "0.9 megapixelsteps per second", + "threads": 1, + "uptime": 1743694, + "maintenance_mode": false, + "nsfw": true, + "trusted": true, + "flagged": false, + "uncompleted_jobs": 28, + "models": [ + "Deliberate" + ], + "team": {}, + "bridge_agent": "AI Horde Worker:22:https://github.com/db0/AI-Horde-Worker", + "max_pixels": 1048576, + "megapixelsteps_generated": 1509572, + "img2img": true, + "painting": false, + "lora": false + }, + { + "type": "image", + "name": "The Dreamer Ninja", + "id": "bc0654b0-7322-4068-8957-b8502640ed5d", + "online": true, + "requests_fulfilled": 6841, + "kudos_rewards": 127075.0, + "kudos_details": { + "generated": 120015.0, + "uptime": 7236 + }, + "performance": "0.6 megapixelsteps per second", + "threads": 2, + "uptime": 84594, + "maintenance_mode": false, + "nsfw": true, + "trusted": false, + "flagged": false, + "uncompleted_jobs": 10, + "models": [ + "Deliberate", + "Anything Diffusion" + ], + "team": {}, + "bridge_agent": "AI Horde Worker:23:https://github.com/db0/AI-Horde-Worker", + "max_pixels": 524288, + "megapixelsteps_generated": 103424, + "img2img": true, + "painting": true, + "lora": false + }, + { + "type": "image", + "name": "AiBrush", + "id": "a68c78f2-3303-4b68-b4a2-586183ce7e24", + "online": true, + "requests_fulfilled": 2128889, + "kudos_rewards": 34685076.0, + "kudos_details": { + "generated": 34608210.0, + "uptime": 819734 + }, + "performance": "1.7 megapixelsteps per second", + "threads": 1, + "uptime": 7102480, + "maintenance_mode": false, + "nsfw": true, + "trusted": true, + "flagged": false, + "uncompleted_jobs": 4522, + "models": [ + "Realistic Vision", + "ChilloutMix", + "Reliberate", + "Dungeons n Waifus", + "Dreamlike Diffusion", + "Jim Eidomode", + "RCNZ Gorilla With A Brick", + "iCoMix Inpainting", + "Rev Animated", + "CamelliaMix 2.5D", + "MoistMix", + "GTA5 Artwork Diffusion", + "PFG", + "PIXHELL", + "ToonYou", + "Eternos", + "Disney Pixar Cartoon Type A", + "Deliberate", + "Pulp Vector Art", + "DreamShaper Inpainting", + "Perfect World", + "Hentai Diffusion", + "FaeTastic", + "Western Animation Diffusion", + "Epic Diffusion", + "ICBINP - I Can't Believe It's Not Photography", + "Mistoon Amethyst", + "Realistic Vision Inpainting", + "Deliberate Inpainting", + "Epic Diffusion Inpainting", + "App Icon Diffusion", + "SynthwavePunk", + "kurzgesagt", + "Anything Diffusion Inpainting" + ], + "team": {}, + "bridge_agent": "AI Horde Worker:23:https://github.com/db0/AI-Horde-Worker", + "max_pixels": 1376256, + "megapixelsteps_generated": 31794226, + "img2img": true, + "painting": true, + "lora": true + }, + { + "type": "image", + "name": "LameDuckDream1", + "id": "195976c9-c9eb-417a-88ef-767ed9b8f9ea", + "online": true, + "requests_fulfilled": 27951, + "kudos_rewards": 533477.0, + "kudos_details": { + "generated": 417301.0, + "uptime": 116202 + }, + "performance": "0.7 megapixelsteps per second", + "threads": 1, + "uptime": 881721, + "maintenance_mode": false, + "nsfw": true, + "trusted": true, + "flagged": false, + "uncompleted_jobs": 20, + "models": [ + "Anything v5", + "Anything Diffusion" + ], + "team": {}, + "bridge_agent": "AI Horde Worker:22:https://github.com/db0/AI-Horde-Worker", + "max_pixels": 1048576, + "megapixelsteps_generated": 409349, + "img2img": true, + "painting": true, + "lora": true + }, + { + "type": "image", + "name": "Healthy Fibers", + "id": "253f02f8-1f4a-43e9-9495-25bf269de6f1", + "online": true, + "requests_fulfilled": 72418, + "kudos_rewards": 1049115.0, + "kudos_details": { + "generated": 1025943.0, + "uptime": 107388 + }, + "performance": "0.7 megapixelsteps per second", + "threads": 1, + "uptime": 1120520, + "maintenance_mode": false, + "info": "Back after a bit! Hi guys!", + "nsfw": true, + "trusted": true, + "flagged": false, + "uncompleted_jobs": 192, + "models": [ + "Deliberate", + "stable_diffusion_2.1", + "ICBINP - I Can't Believe It's Not Photography", + "Anything Diffusion", + "stable_diffusion" + ], + "team": {}, + "bridge_agent": "AI Horde Worker:23:https://github.com/db0/AI-Horde-Worker", + "max_pixels": 393216, + "megapixelsteps_generated": 804142, + "img2img": true, + "painting": true, + "lora": false + }, + { + "type": "image", + "name": "kdr10001", + "id": "22a22867-1796-4764-93f1-9d94894de12f", + "online": true, + "requests_fulfilled": 426103, + "kudos_rewards": 5791598.0, + "kudos_details": { + "generated": 5378002.0, + "uptime": 414242 + }, + "performance": "1.0 megapixelsteps per second", + "threads": 1, + "uptime": 4881526, + "maintenance_mode": false, + "nsfw": true, + "trusted": true, + "flagged": false, + "uncompleted_jobs": 1720, + "models": [ + "Deliberate", + "Anything Diffusion" + ], + "team": {}, + "bridge_agent": "AI Horde Worker:23:https://github.com/db0/AI-Horde-Worker", + "max_pixels": 589824, + "megapixelsteps_generated": 4990016, + "img2img": true, + "painting": true, + "lora": false + }, + { + "type": "image", + "name": "MMOLogin AI Dreamer", + "id": "167872f0-9332-47bb-8697-e43a4832adc4", + "online": true, + "requests_fulfilled": 32035, + "kudos_rewards": 481967.0, + "kudos_details": { + "generated": 413141.0, + "uptime": 68850 + }, + "performance": "0.6 megapixelsteps per second", + "threads": 1, + "uptime": 426832, + "maintenance_mode": false, + "nsfw": true, + "trusted": true, + "flagged": false, + "uncompleted_jobs": 20, + "models": [ + "vectorartz", + "DucHaiten Classic Anime", + "Fluffusion", + "Grapefruit Hentai", + "Elysium Anime", + "Future Diffusion", + "waifu_diffusion", + "Anything v5", + "Vector Art", + "stable_diffusion_2.1", + "stable_diffusion", + "Illuminati Diffusion", + "Midjourney PaintArt", + "stable_diffusion_inpainting", + "Anime Pencil Diffusion", + "Anything Diffusion", + "Henmix Real", + "Anything Diffusion Inpainting", + "Movie Diffusion", + "Graphic-Art", + "3DKX", + "Hentai Diffusion", + "Pretty 2.5D", + "RPG" + ], + "team": {}, + "bridge_agent": "AI Horde Worker:23:https://github.com/db0/AI-Horde-Worker", + "max_pixels": 262144, + "megapixelsteps_generated": 284690, + "img2img": true, + "painting": true, + "lora": false + }, + { + "type": "image", + "name": "Fox's Desktop - 3090 - Main Branch", + "id": "3fd1899a-76d2-463c-b9c5-69f1c9aa5380", + "online": true, + "requests_fulfilled": 168278, + "kudos_rewards": 6623165.0, + "kudos_details": { + "generated": 4475749.0, + "uptime": 2148692 + }, + "performance": "0.6 megapixelsteps per second", + "threads": 1, + "uptime": 2522542, + "maintenance_mode": false, + "info": "RTX 3090 undervolted and drawing 260 watts max.", + "nsfw": true, + "trusted": true, + "flagged": false, + "uncompleted_jobs": 1020, + "models": [ + "CyberRealistic", + "PVC", + "Anything Diffusion Inpainting", + "Henmix Real", + "DucHaiten", + "Elldreth's Lucid Mix", + "Yiffy", + "JWST Deep Space Diffusion", + "Deliberate", + "HRL", + "Protogen Infinity", + "DucHaiten Classic Anime", + "GhostMix", + "Ether Real Mix", + "Protogen Anime", + "Jim Eidomode", + "Microcritters", + "Lawlas's yiff mix", + "Smoke Diffusion", + "Poison", + "Inkpunk Diffusion", + "Eimis Anime Diffusion", + "SynthwavePunk", + "ExpMix Line", + "Rainbowpatch", + "stable_diffusion_inpainting", + "Cetus-Mix", + "Ghibli Diffusion", + "VinteProtogenMix", + "Future Diffusion", + "ChilloutMix", + "RCNZ Dumb Monkey", + "Epic Diffusion Inpainting", + "Unstable Ink Dream", + "Dark Sushi Mix", + "Real Dos Mix", + "Papercut Diffusion", + "Abyss OrangeMix", + "FaeTastic", + "Anime Pencil Diffusion", + "trinart", + "Analog Madness", + "RealBiter", + "Char", + "Valorant Diffusion", + "Voxel Art Diffusion", + "PortraitPlus", + "PIXHELL", + "Robo-Diffusion", + "Anything Diffusion", + "ModernArt Diffusion", + "MeinaMix", + "Rachel Walker Watercolors", + "Papercutcraft", + "Deliberate Inpainting", + "stable_diffusion", + "ToonYou", + "Microcasing", + "SweetBoys 2D", + "Van Gogh Diffusion", + "Microscopic", + "Graphic-Art", + "Ranma Diffusion", + "ChromaV5", + "HASDX", + "Ultraskin", + "Woop-Woop Photo", + "ProtoGen", + "Anygen", + "ACertainThing", + "Korestyle", + "vectorartz", + "PRMJ", + "Sygil-Dev Diffusion", + "Elysium Anime", + "Microworlds", + "Dungeons and Diffusion", + "Openniji", + "526Mix-Animated", + "Eternos", + "Uhmami", + "Babes", + "CharHelper", + "Vivid Watercolors", + "Elldreths Retro Mix", + "Supermarionation", + "PPP", + "Midjourney PaintArt", + "Squishmallow Diffusion", + "Pokemon3D", + "Coloring Book", + "Darkest Diffusion", + "Seek.art MEGA", + "Sonic Diffusion", + "T-Shirt Diffusion", + "URPM", + "BubblyDubbly", + "Galena Redux", + "Tron Legacy Diffusion", + "Project Unreal Engine 5", + "DreamLikeSamKuvshinov", + "NeverEnding Dream", + "Redshift Diffusion", + "Realisian", + "AnyLoRA", + "Colorful", + "CamelliaMix 2.5D", + "DnD Map Generator", + "Nitro Diffusion", + "Mistoon Amethyst", + "Mega Merge Diffusion", + "OrbAI", + "Disney Pixar Cartoon Type A", + "Art Of Mtg", + "Kenshi", + "Anything v5", + "Dreamlike Diffusion", + "Experience", + "Cyberpunk Anime Diffusion", + "Zelda BOTW", + "Lyriel", + "Edge Of Realism", + "Funko Diffusion", + "Hassaku", + "Marvel Diffusion", + "Dreamlike Photoreal", + "Liberty", + "Wavyfusion", + "Laolei New Berry Protogen Mix", + "Illuminati Diffusion", + "iCoMix Inpainting", + "PFG", + "Analog Diffusion", + "Asim Simpsons", + "GuFeng", + "Western Animation Diffusion", + "Balloon Art", + "Trinart Characters", + "Anything v3", + "Synthwave", + "Zack3D", + "Dark Victorian Diffusion", + "CyriousMix", + "GorynichMix", + "GuoFeng", + "Aurora", + "Cheese Daddys Landscape Mix", + "Clazy", + "TrexMix", + "JoMad Diffusion", + "Dreamshaper", + "FKing SciFi", + "RPG", + "A-Zovya RPG Inpainting", + "Dungeons n Waifus", + "Furry Epoch", + "3DKX", + "Knollingcase", + "mo-di-diffusion", + "Classic Animation Diffusion", + "MoistMix", + "Zeipher Female Model", + "DGSpitzer Art Diffusion", + "Realistic Vision", + "Concept Sheet", + "BPModel", + "BB95 Furry Mix", + "MoonMix Fantasy", + "Vintedois Diffusion", + "ICBINP - I Can't Believe It's Not Photography", + "Vector Art", + "Dan Mumford Style", + "Fluffusion", + "AIO Pixel Art", + "Samaritan 3d Cartoon", + "Realism Engine", + "DreamShaper Inpainting", + "Rodent Diffusion", + "Double Exposure Diffusion", + "UMI Olympus", + "Reliberate", + "Rev Animated", + "Hentai Diffusion", + "SD-Silicon", + "OpenJourney Diffusion", + "iCoMix", + "Sci-Fi Diffusion", + "Microchars", + "majicMIX realistic", + "RCNZ Gorilla With A Brick", + "Epic Diffusion", + "stable_diffusion_2.1", + "waifu_diffusion", + "kurzgesagt", + "Counterfeit", + "GTA5 Artwork Diffusion", + "Neurogen", + "Borderlands", + "Xynthii-Diffusion", + "Samdoesarts Ultmerge", + "Disco Elysium", + "Realistic Vision Inpainting", + "Pretty 2.5D", + "DnD Item", + "Spider-Verse Diffusion", + "Movie Diffusion", + "Perfect World", + "Pulp Vector Art", + "Hassanblend", + "Arcane Diffusion", + "Grapefruit Hentai", + "Fantasy Card Diffusion", + "Elden Ring Diffusion", + "Moedel", + "T-Shirt Print Designs", + "Comic-Diffusion", + "Guohua Diffusion", + "Pastel Mix", + "Min Illust Background", + "Healy's Anime Blend", + "A to Zovya RPG", + "Something", + "App Icon Diffusion", + "BweshMix", + "Archer Diffusion" + ], + "team": {}, + "bridge_agent": "AI Horde Worker:23:https://github.com/db0/AI-Horde-Worker", + "max_pixels": 2359296, + "megapixelsteps_generated": 4007678, + "img2img": true, + "painting": true, + "lora": true + }, + { + "type": "image", + "name": "pawkygame_2080 Dreamer", + "id": "e650da17-c2aa-499c-b1d5-48fed2c97ab0", + "online": true, + "requests_fulfilled": 561796, + "kudos_rewards": 7299463.0, + "kudos_details": { + "generated": 6798134.0, + "uptime": 502568 + }, + "performance": "0.7 megapixelsteps per second", + "threads": 2, + "uptime": 4806723, + "maintenance_mode": false, + "nsfw": true, + "trusted": true, + "flagged": false, + "uncompleted_jobs": 145, + "models": [ + "ChilloutMix", + "stable_diffusion", + "Pretty 2.5D", + "CamelliaMix 2.5D", + "majicMIX realistic", + "Deliberate", + "ICBINP - I Can't Believe It's Not Photography", + "Anything Diffusion" + ], + "team": { + "name": "PawkyGame", + "id": "b417b070-0205-4bc3-be55-41e2516b8d50" + }, + "bridge_agent": "AI Horde Worker:22:https://github.com/db0/AI-Horde-Worker", + "max_pixels": 589824, + "megapixelsteps_generated": 6714549, + "img2img": false, + "painting": false, + "lora": false + }, + { + "type": "image", + "name": "Mythica-Horde-Delta", + "id": "95cfe49b-10a4-4d1d-ac6c-01872d3e1f4f", + "online": true, + "requests_fulfilled": 1232348, + "kudos_rewards": 13554540.0, + "kudos_details": { + "generated": 12563720.0, + "uptime": 1000892 + }, + "performance": "0.3 megapixelsteps per second", + "threads": 4, + "uptime": 11271742, + "maintenance_mode": false, + "info": "Sharing the computing power of @Mythica https://mythica.dev/", + "nsfw": true, + "trusted": true, + "flagged": false, + "uncompleted_jobs": 8451, + "models": [ + "stable_diffusion_2.1", + "Hentai Diffusion", + "AbyssOrangeMix-AfterDark", + "Deliberate", + "stable_diffusion", + "Anything v3" + ], + "team": {}, + "bridge_agent": "AI Horde Worker:23:https://github.com/db0/AI-Horde-Worker", + "max_pixels": 262144, + "megapixelsteps_generated": 14024994, + "img2img": false, + "painting": false, + "lora": false + }, + { + "type": "image", + "name": "Dezealotl", + "id": "6b830da8-1fa0-499e-8c48-4330d6af7c26", + "online": true, + "requests_fulfilled": 5495, + "kudos_rewards": 100655.0, + "kudos_details": { + "generated": 92093.0, + "uptime": 8574 + }, + "performance": "0.7 megapixelsteps per second", + "threads": 1, + "uptime": 87946, + "maintenance_mode": false, + "nsfw": true, + "trusted": true, + "flagged": false, + "uncompleted_jobs": 25, + "models": [ + "Furry Epoch", + "stable_diffusion_inpainting", + "Yiffy", + "Fluffusion", + "Zack3D", + "Lawlas's yiff mix", + "BB95 Furry Mix" + ], + "team": {}, + "bridge_agent": "AI Horde Worker:23:https://github.com/db0/AI-Horde-Worker", + "max_pixels": 589824, + "megapixelsteps_generated": 76533, + "img2img": true, + "painting": true, + "lora": false + }, + { + "type": "image", + "name": "SomeOrdinarydudeLinuxDesktop", + "id": "431e3b61-9657-48d1-a5b3-850fc777749f", + "online": true, + "requests_fulfilled": 107863, + "kudos_rewards": 2288433.0, + "kudos_details": { + "generated": 2146380.0, + "uptime": 142494 + }, + "performance": "2.0 megapixelsteps per second", + "threads": 1, + "uptime": 1084846, + "maintenance_mode": false, + "info": "Fedora Linux system with RTX 3090 AMD 9 5950X 64GB RAM 128 GB linux swap SSD \n\nTypically runs at night when I don't need to render anything", + "nsfw": true, + "trusted": true, + "flagged": false, + "uncompleted_jobs": 484, + "models": [ + "stable_diffusion", + "stable_diffusion_2.1" + ], + "team": { + "name": "Mutual Aid", + "id": "7a5afb3e-6d80-41f0-98bd-9be732d45944" + }, + "bridge_agent": "AI Horde Worker:23:https://github.com/db0/AI-Horde-Worker", + "max_pixels": 3276800, + "megapixelsteps_generated": 1981012, + "img2img": true, + "painting": true, + "lora": true + }, + { + "type": "image", + "name": "glippy", + "id": "6e337380-9820-4d99-a154-e34867e7e724", + "online": true, + "requests_fulfilled": 167560, + "kudos_rewards": 4391799.0, + "kudos_details": { + "generated": 3921478.0, + "uptime": 470488 + }, + "performance": "0.4 megapixelsteps per second", + "threads": 1, + "uptime": 4260173, + "maintenance_mode": false, + "info": "3060 12gb", + "nsfw": true, + "trusted": true, + "flagged": false, + "uncompleted_jobs": 1241, + "models": [ + "CyberRealistic", + "Deliberate", + "Liberty" + ], + "team": {}, + "bridge_agent": "AI Horde Worker:23:https://github.com/db0/AI-Horde-Worker", + "max_pixels": 1048576, + "megapixelsteps_generated": 3447990, + "img2img": true, + "painting": true, + "lora": true + }, + { + "type": "image", + "name": "ComicsMaker.ai-2", + "id": "61317cdc-ce6b-4ce7-8dee-4e44b100eb25", + "online": true, + "requests_fulfilled": 1862, + "kudos_rewards": 18704.0, + "kudos_details": { + "generated": 17031.0, + "uptime": 1680 + }, + "performance": "0.7 megapixelsteps per second", + "threads": 1, + "uptime": 18371, + "maintenance_mode": false, + "nsfw": true, + "trusted": true, + "flagged": false, + "uncompleted_jobs": 0, + "models": [ + "iCoMix", + "stable_diffusion", + "Deliberate" + ], + "team": {}, + "bridge_agent": "AI Horde Worker:23:https://github.com/db0/AI-Horde-Worker", + "max_pixels": 262144, + "megapixelsteps_generated": 13554, + "img2img": true, + "painting": true, + "lora": false + }, + { + "type": "image", + "name": "SHLB1", + "id": "ef7c02a7-5716-4e4e-bdac-0083218d52fb", + "online": true, + "requests_fulfilled": 772457, + "kudos_rewards": 10840097.0, + "kudos_details": { + "generated": 10207406.0, + "uptime": 638768 + }, + "performance": "1.5 megapixelsteps per second", + "threads": 1, + "uptime": 7448658, + "maintenance_mode": false, + "info": "3060 ti \ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc73\udb40\udc63\udb40\udc74\udb40\udc7f (my room cold)", + "nsfw": true, + "trusted": true, + "flagged": false, + "uncompleted_jobs": 586, + "models": [ + "Deliberate", + "DucHaiten" + ], + "team": {}, + "bridge_agent": "AI Horde Worker:21:https://github.com/db0/AI-Horde-Worker", + "max_pixels": 589824, + "megapixelsteps_generated": 9328733, + "img2img": true, + "painting": true, + "lora": false + }, + { + "type": "image", + "name": "The Portal of Infinite Realities", + "id": "dc0704ab-5b42-4c65-8471-561be16ad696", + "online": true, + "requests_fulfilled": 1563450, + "kudos_rewards": 30061497.0, + "kudos_details": { + "generated": 28466988.0, + "uptime": 1661086 + }, + "performance": "3.1 megapixelsteps per second", + "threads": 1, + "uptime": 14868407, + "maintenance_mode": true, + "info": "Somewhere far beyond...", + "nsfw": true, + "trusted": true, + "flagged": false, + "uncompleted_jobs": 7054, + "models": [ + "ChilloutMix", + "Deliberate", + "stable_diffusion", + "Abyss OrangeMix", + "Dreamlike Diffusion", + "NeverEnding Dream", + "Dreamshaper", + "Lawlas's yiff mix", + "BB95 Furry Mix", + "Inkpunk Diffusion", + "Hentai Diffusion", + "ICBINP - I Can't Believe It's Not Photography", + "RCNZ Gorilla With A Brick", + "iCoMix", + "Anything Diffusion" + ], + "team": { + "name": "Mutual Aid", + "id": "7a5afb3e-6d80-41f0-98bd-9be732d45944" + }, + "bridge_agent": "AI Horde Worker:22:https://github.com/db0/AI-Horde-Worker", + "max_pixels": 4194304, + "megapixelsteps_generated": 27800449, + "img2img": true, + "painting": false, + "lora": true + }, + { + "type": "image", + "name": "JBertok-TitanV-4", + "id": "e59230a6-bb24-4887-a421-15c4ff564cf5", + "online": true, + "requests_fulfilled": 619934, + "kudos_rewards": 9114506.0, + "kudos_details": { + "generated": 8341249.0, + "uptime": 774366 + }, + "performance": "0.6 megapixelsteps per second", + "threads": 1, + "uptime": 8952994, + "maintenance_mode": false, + "info": "Titan V 12GB x4, Xeon 6258R x2, 192GB", + "nsfw": true, + "trusted": true, + "flagged": false, + "uncompleted_jobs": 2269, + "models": [ + "Realisian", + "Dreamshaper", + "BB95 Furry Mix", + "Anything Diffusion", + "Deliberate" + ], + "team": {}, + "bridge_agent": "AI Horde Worker:23:https://github.com/db0/AI-Horde-Worker", + "max_pixels": 393216, + "megapixelsteps_generated": 7970500, + "img2img": true, + "painting": true, + "lora": false + }, + { + "type": "image", + "name": "ComputeSheepLand_DreamerSheep1B", + "id": "f8a396c8-55af-4c97-816a-8d1023a214bf", + "online": true, + "requests_fulfilled": 31517, + "kudos_rewards": 515548.0, + "kudos_details": { + "generated": 488843.0, + "uptime": 27638 + }, + "performance": "0.6 megapixelsteps per second", + "threads": 2, + "uptime": 183279, + "maintenance_mode": true, + "nsfw": true, + "trusted": true, + "flagged": false, + "uncompleted_jobs": 52, + "models": [ + "Dreamshaper", + "Deliberate", + "Anything Diffusion", + "stable_diffusion", + "ICBINP - I Can't Believe It's Not Photography", + "Arcane Diffusion", + "Poison" + ], + "team": {}, + "bridge_agent": "AI Horde Worker:22:https://github.com/db0/AI-Horde-Worker", + "max_pixels": 327680, + "megapixelsteps_generated": 395103, + "img2img": true, + "painting": true, + "lora": true + }, + { + "type": "image", + "name": "AASD01", + "id": "87450d7f-26f9-4435-83a4-3fbff2d92984", + "online": true, + "requests_fulfilled": 462090, + "kudos_rewards": 5460207.0, + "kudos_details": { + "generated": 4884571.0, + "uptime": 575646 + }, + "performance": "1.7 megapixelsteps per second", + "threads": 1, + "uptime": 6853801, + "maintenance_mode": false, + "nsfw": true, + "trusted": true, + "flagged": false, + "uncompleted_jobs": 870, + "models": [ + "Deliberate", + "stable_diffusion_2.1" + ], + "team": {}, + "bridge_agent": "SD-WebUI Stable Horde Worker Bridge:4:https://github.com/sdwebui-w-horde/sd-webui-stable-horde-worker", + "max_pixels": 1048576, + "megapixelsteps_generated": 6380170, + "img2img": true, + "painting": true, + "lora": false + }, + { + "type": "image", + "name": "FiFo-001", + "id": "23499b5a-48d3-40a1-8ddb-75cd6e576e1f", + "online": true, + "requests_fulfilled": 373625, + "kudos_rewards": 4705133.0, + "kudos_details": { + "generated": 3636401.0, + "uptime": 1074738 + }, + "performance": "0.3 megapixelsteps per second", + "threads": 1, + "uptime": 13081867, + "maintenance_mode": true, + "info": "Quadro P4000 8 GB", + "nsfw": true, + "trusted": true, + "flagged": false, + "uncompleted_jobs": 1006, + "models": [ + "Deliberate", + "Anything Diffusion" + ], + "team": {}, + "bridge_agent": "AI Horde Worker:23:https://github.com/db0/AI-Horde-Worker", + "max_pixels": 262144, + "megapixelsteps_generated": 3361741, + "img2img": true, + "painting": false, + "lora": false + }, + { + "type": "image", + "name": "CFManuelSimple", + "id": "463bed18-cf2a-49ba-81e1-6d95f9ff4417", + "online": true, + "requests_fulfilled": 77702, + "kudos_rewards": 954352.0, + "kudos_details": { + "generated": 833634.0, + "uptime": 120866 + }, + "performance": "0.7 megapixelsteps per second", + "threads": 1, + "uptime": 1247144, + "maintenance_mode": false, + "nsfw": true, + "trusted": true, + "flagged": false, + "uncompleted_jobs": 377, + "models": [ + "Something" + ], + "team": { + "name": "IncompetentSquadZA", + "id": "b118f2d0-e187-4673-a67a-c196f29b1b11" + }, + "bridge_agent": "AI Horde Worker:23:https://github.com/db0/AI-Horde-Worker", + "max_pixels": 753664, + "megapixelsteps_generated": 892878, + "img2img": true, + "painting": false, + "lora": true + }, + { + "type": "image", + "name": "TSE-Megu", + "id": "7e91c70a-fa29-4061-bdb0-f64ab57321e8", + "online": true, + "requests_fulfilled": 263926, + "kudos_rewards": 4077018.0, + "kudos_details": { + "generated": 3588363.0, + "uptime": 488870 + }, + "performance": "0.4 megapixelsteps per second", + "threads": 1, + "uptime": 3141605, + "maintenance_mode": false, + "nsfw": true, + "trusted": true, + "flagged": false, + "uncompleted_jobs": 311, + "models": [ + "GhostMix", + "Analog Diffusion", + "Movie Diffusion", + "AbyssOrangeMix-AfterDark", + "stable_diffusion", + "Abyss OrangeMix", + "Hentai Diffusion", + "Dreamshaper", + "Anything Diffusion", + "Deliberate", + "ICBINP - I Can't Believe It's Not Photography" + ], + "team": {}, + "bridge_agent": "AI Horde Worker:23:https://github.com/db0/AI-Horde-Worker", + "max_pixels": 262144, + "megapixelsteps_generated": 2480536, + "img2img": true, + "painting": true, + "lora": true + }, + { + "type": "image", + "name": "ControlNet_Worker_2", + "id": "3f60c707-df27-48ad-b0f7-0c014960affd", + "online": true, + "requests_fulfilled": 31013, + "kudos_rewards": 1082316.0, + "kudos_details": { + "generated": 1071239.0, + "uptime": 11124 + }, + "performance": "2.3 megapixelsteps per second", + "threads": 1, + "uptime": 126902, + "maintenance_mode": false, + "nsfw": true, + "trusted": true, + "flagged": false, + "uncompleted_jobs": 1123, + "models": [ + "horde_special::stability.ai#6901", + "SDXL_beta::stability.ai#6901" + ], + "team": {}, + "bridge_agent": "AI Horde Worker:22:https://github.com/db0/AI-Horde-Worker", + "max_pixels": 4194304, + "megapixelsteps_generated": 1295195, + "img2img": true, + "painting": true, + "lora": false + }, + { + "type": "image", + "name": "pamagensart", + "id": "ba9937fb-8558-4d42-9059-926de5f0fe4e", + "online": true, + "requests_fulfilled": 118989, + "kudos_rewards": 2210585.0, + "kudos_details": { + "generated": 2081215.0, + "uptime": 129834 + }, + "performance": "1.1 megapixelsteps per second", + "threads": 1, + "uptime": 1398307, + "maintenance_mode": false, + "info": "A4000", + "nsfw": true, + "trusted": true, + "flagged": false, + "uncompleted_jobs": 691, + "models": [ + "stable_diffusion_2.1", + "AbyssOrangeMix-AfterDark", + "stable_diffusion", + "Anything Diffusion", + "Deliberate" + ], + "team": {}, + "bridge_agent": "AI Horde Worker:20:https://github.com/db0/AI-Horde-Worker", + "max_pixels": 1048576, + "megapixelsteps_generated": 2212436, + "img2img": true, + "painting": true, + "lora": false + }, + { + "type": "image", + "name": "Pro", + "id": "4d078ad4-5f1f-48fc-868f-05bdd0ee1ab1", + "online": true, + "requests_fulfilled": 98, + "kudos_rewards": 2021.0, + "kudos_details": { + "generated": 565.0, + "uptime": 1456 + }, + "performance": "0.5 megapixelsteps per second", + "threads": 1, + "uptime": 17993, + "maintenance_mode": false, + "nsfw": true, + "trusted": false, + "flagged": false, + "uncompleted_jobs": 1, + "models": [ + "Yiffy" + ], + "team": {}, + "bridge_agent": "SD-WebUI Stable Horde Worker Bridge:4:https://github.com/sdwebui-w-horde/sd-webui-stable-horde-worker", + "max_pixels": 589824, + "megapixelsteps_generated": 712, + "img2img": true, + "painting": true, + "lora": false + }, + { + "type": "image", + "name": "mostlikely", + "id": "4f924305-1b6a-45f4-b728-c633c7c0b19e", + "online": true, + "requests_fulfilled": 13230, + "kudos_rewards": 193538.0, + "kudos_details": { + "generated": 165852.0, + "uptime": 27702 + }, + "performance": "0.5 megapixelsteps per second", + "threads": 1, + "uptime": 324061, + "maintenance_mode": false, + "nsfw": true, + "trusted": true, + "flagged": false, + "uncompleted_jobs": 90, + "models": [ + "Deliberate", + "Anything Diffusion" + ], + "team": {}, + "bridge_agent": "AI Horde Worker:23:https://github.com/db0/AI-Horde-Worker", + "max_pixels": 262144, + "megapixelsteps_generated": 130506, + "img2img": true, + "painting": true, + "lora": false + }, + { + "type": "image", + "name": "SomeOrdinaryDudeLaptop2", + "id": "ac7340c8-7099-4d00-83d0-25bf687fc1a5", + "online": true, + "requests_fulfilled": 409467, + "kudos_rewards": 4277807.0, + "kudos_details": { + "generated": 3852396.0, + "uptime": 428020 + }, + "performance": "0.7 megapixelsteps per second", + "threads": 1, + "uptime": 5106894, + "maintenance_mode": false, + "info": "Decent laptop", + "nsfw": true, + "trusted": true, + "flagged": false, + "uncompleted_jobs": 1215, + "models": [ + "stable_diffusion" + ], + "team": { + "name": "Mutual Aid", + "id": "7a5afb3e-6d80-41f0-98bd-9be732d45944" + }, + "bridge_agent": "AI Horde Worker:23:https://github.com/db0/AI-Horde-Worker", + "max_pixels": 589824, + "megapixelsteps_generated": 3793300, + "img2img": true, + "painting": true, + "lora": false + }, + { + "type": "image", + "name": "zoro221", + "id": "60cbb469-6a2d-43e3-8392-7255e4956fab", + "online": true, + "requests_fulfilled": 479037, + "kudos_rewards": 9974380.0, + "kudos_details": { + "generated": 8433717.0, + "uptime": 1542616 + }, + "performance": "0.4 megapixelsteps per second", + "threads": 1, + "uptime": 7650010, + "maintenance_mode": false, + "nsfw": true, + "trusted": true, + "flagged": false, + "uncompleted_jobs": 3349, + "models": [ + "FaeTastic", + "Dreamlike Photoreal", + "Jim Eidomode", + "Fluffusion", + "stable_diffusion_inpainting", + "Dungeons n Waifus", + "Eimis Anime Diffusion", + "Pastel Mix", + "Hassaku", + "Disney Pixar Cartoon Type A", + "Zack3D", + "Anything Diffusion Inpainting", + "Healy's Anime Blend", + "RealBiter", + "Arcane Diffusion", + "Analog Diffusion", + "Realism Engine", + "GorynichMix", + "Anything Diffusion", + "Realistic Vision Inpainting", + "BRA", + "Project Unreal Engine 5", + "Something", + "Experience", + "NeverEnding Dream", + "Reliberate", + "BB95 Furry Mix", + "Perfect World", + "majicMIX realistic", + "Counterfeit", + "Western Animation Diffusion", + "GTA5 Artwork Diffusion", + "Uhmami", + "RPG", + "Laolei New Berry Protogen Mix", + "Deliberate", + "stable_diffusion", + "iCoMix", + "Dreamlike Diffusion", + "ChilloutMix", + "URPM", + "PFG", + "GuoFeng", + "Deliberate Inpainting", + "Epic Diffusion Inpainting", + "AnyLoRA", + "Elysium Anime", + "Lawlas's yiff mix", + "CyriousMix", + "Anything v5", + "Woop-Woop Photo", + "Hentai Diffusion", + "Anything v3", + "Henmix Real", + "Realisian", + "CamelliaMix 2.5D", + "ACertainThing", + "MoistMix", + "Yiffy", + "Liberty", + "Dark Sushi Mix", + "ICBINP - I Can't Believe It's Not Photography", + "Mistoon Amethyst", + "Dreamshaper", + "RCNZ Gorilla With A Brick", + "Cheese Daddys Landscape Mix", + "Cetus-Mix", + "Edge Of Realism", + "Aurora", + "Graphic-Art", + "Pretty 2.5D", + "Lyriel", + "DucHaiten", + "stable_diffusion_2.1", + "Abyss OrangeMix", + "Grapefruit Hentai", + "MeinaMix", + "AbyssOrangeMix-AfterDark", + "ToonYou", + "Zeipher Female Model", + "3DKX", + "waifu_diffusion", + "Rev Animated", + "Furry Epoch", + "CyberRealistic", + "Epic Diffusion", + "Realistic Vision", + "DreamShaper Inpainting", + "TrexMix" + ], + "team": {}, + "bridge_agent": "AI Horde Worker:23:https://github.com/db0/AI-Horde-Worker", + "max_pixels": 1048576, + "megapixelsteps_generated": 8173356, + "img2img": true, + "painting": true, + "lora": true + }, + { + "type": "image", + "name": "ControlNet_Worker_1", + "id": "4ed5fa6b-d043-4382-ba59-525358ffb982", + "online": true, + "requests_fulfilled": 31383, + "kudos_rewards": 1095365.0, + "kudos_details": { + "generated": 1084173.0, + "uptime": 11232 + }, + "performance": "2.7 megapixelsteps per second", + "threads": 1, + "uptime": 128646, + "maintenance_mode": false, + "nsfw": true, + "trusted": true, + "flagged": false, + "uncompleted_jobs": 1289, + "models": [ + "horde_special::stability.ai#6901", + "SDXL_beta::stability.ai#6901" + ], + "team": {}, + "bridge_agent": "AI Horde Worker:22:https://github.com/db0/AI-Horde-Worker", + "max_pixels": 4194304, + "megapixelsteps_generated": 1310143, + "img2img": true, + "painting": true, + "lora": false + }, + { + "type": "image", + "name": "zeecake", + "id": "a45e104f-bc9a-45cd-b4f0-2264a7d39312", + "online": true, + "requests_fulfilled": 9613, + "kudos_rewards": 85370.0, + "kudos_details": { + "generated": 82282.0, + "uptime": 3150 + }, + "performance": "0.3 megapixelsteps per second", + "threads": 1, + "uptime": 41424, + "maintenance_mode": true, + "nsfw": true, + "trusted": false, + "flagged": false, + "uncompleted_jobs": 101, + "models": [ + "Deliberate" + ], + "team": {}, + "bridge_agent": "AI Horde Worker:23:https://github.com/db0/AI-Horde-Worker", + "max_pixels": 524288, + "megapixelsteps_generated": 75035, + "img2img": true, + "painting": false, + "lora": false + }, + { + "type": "image", + "name": "ControlNet_Worker_3", + "id": "e81aadb1-a7d5-456e-b21f-594981399cdd", + "online": true, + "requests_fulfilled": 31145, + "kudos_rewards": 1085006.0, + "kudos_details": { + "generated": 1073857.0, + "uptime": 11178 + }, + "performance": "2.2 megapixelsteps per second", + "threads": 1, + "uptime": 127594, + "maintenance_mode": false, + "nsfw": true, + "trusted": true, + "flagged": false, + "uncompleted_jobs": 1003, + "models": [ + "horde_special::stability.ai#6901", + "SDXL_beta::stability.ai#6901" + ], + "team": {}, + "bridge_agent": "AI Horde Worker:22:https://github.com/db0/AI-Horde-Worker", + "max_pixels": 4194304, + "megapixelsteps_generated": 1297866, + "img2img": true, + "painting": true, + "lora": false + }, + { + "type": "image", + "name": "ControlNet_Worker_6", + "id": "b06e20aa-fb8d-4dd8-b133-6eea3e2ab9fd", + "online": true, + "requests_fulfilled": 32134, + "kudos_rewards": 1117324.0, + "kudos_details": { + "generated": 1105674.0, + "uptime": 11650 + }, + "performance": "3.2 megapixelsteps per second", + "threads": 1, + "uptime": 133321, + "maintenance_mode": false, + "nsfw": true, + "trusted": true, + "flagged": false, + "uncompleted_jobs": 1153, + "models": [ + "horde_special::stability.ai#6901", + "SDXL_beta::stability.ai#6901" + ], + "team": {}, + "bridge_agent": "AI Horde Worker:22:https://github.com/db0/AI-Horde-Worker", + "max_pixels": 4194304, + "megapixelsteps_generated": 1334771, + "img2img": true, + "painting": true, + "lora": false + }, + { + "type": "image", + "name": "Infermatic.ai10", + "id": "1874367f-cb76-4204-a87a-a5ca20b520eb", + "online": true, + "requests_fulfilled": 71253, + "kudos_rewards": 1143404.0, + "kudos_details": { + "generated": 990705.0, + "uptime": 152820 + }, + "performance": "0.4 megapixelsteps per second", + "threads": 1, + "uptime": 1739066, + "maintenance_mode": false, + "nsfw": true, + "trusted": true, + "flagged": false, + "uncompleted_jobs": 97, + "models": [ + "Deliberate", + "Anything Diffusion" + ], + "team": {}, + "bridge_agent": "AI Horde Worker:21:https://github.com/db0/AI-Horde-Worker", + "max_pixels": 262144, + "megapixelsteps_generated": 699131, + "img2img": true, + "painting": true, + "lora": false + }, + { + "type": "image", + "name": "AiBrush-2", + "id": "0d825711-dd8c-4007-8849-4d172c920de5", + "online": true, + "requests_fulfilled": 464681, + "kudos_rewards": 10516624.0, + "kudos_details": { + "generated": 10040838.0, + "uptime": 526306 + }, + "performance": "1.3 megapixelsteps per second", + "threads": 1, + "uptime": 4489574, + "maintenance_mode": false, + "nsfw": true, + "trusted": true, + "flagged": false, + "uncompleted_jobs": 592, + "models": [ + "Realistic Vision", + "ChilloutMix", + "Reliberate", + "Dungeons n Waifus", + "Dreamlike Diffusion", + "Jim Eidomode", + "RCNZ Gorilla With A Brick", + "iCoMix Inpainting", + "Rev Animated", + "CamelliaMix 2.5D", + "MoistMix", + "GTA5 Artwork Diffusion", + "PFG", + "PIXHELL", + "ToonYou", + "Eternos", + "Disney Pixar Cartoon Type A", + "Deliberate", + "Pulp Vector Art", + "DreamShaper Inpainting", + "Perfect World", + "Hentai Diffusion", + "FaeTastic", + "Western Animation Diffusion", + "Epic Diffusion", + "ICBINP - I Can't Believe It's Not Photography", + "Mistoon Amethyst", + "Realistic Vision Inpainting", + "Deliberate Inpainting", + "Epic Diffusion Inpainting", + "SynthwavePunk", + "kurzgesagt", + "Anything Diffusion Inpainting" + ], + "team": {}, + "bridge_agent": "AI Horde Worker:23:https://github.com/db0/AI-Horde-Worker", + "max_pixels": 1310720, + "megapixelsteps_generated": 9242215, + "img2img": true, + "painting": true, + "lora": true + }, + { + "type": "image", + "name": "ControlNet_Worker_7", + "id": "db4a6644-434f-4825-a06e-62d53f68829f", + "online": true, + "requests_fulfilled": 29317, + "kudos_rewards": 1023418.0, + "kudos_details": { + "generated": 1012144.0, + "uptime": 11274 + }, + "performance": "2.6 megapixelsteps per second", + "threads": 1, + "uptime": 129962, + "maintenance_mode": false, + "nsfw": true, + "trusted": true, + "flagged": false, + "uncompleted_jobs": 1197, + "models": [ + "horde_special::stability.ai#6901", + "SDXL_beta::stability.ai#6901" + ], + "team": {}, + "bridge_agent": "AI Horde Worker:22:https://github.com/db0/AI-Horde-Worker", + "max_pixels": 4194304, + "megapixelsteps_generated": 1220395, + "img2img": true, + "painting": true, + "lora": false + }, + { + "type": "image", + "name": "CFManuelSimple2", + "id": "d3ea20c9-178e-4ff7-b434-9ceaa1ca5ad5", + "online": true, + "requests_fulfilled": 62686, + "kudos_rewards": 771279.0, + "kudos_details": { + "generated": 676612.0, + "uptime": 95176 + }, + "performance": "0.6 megapixelsteps per second", + "threads": 1, + "uptime": 993408, + "maintenance_mode": false, + "nsfw": true, + "trusted": true, + "flagged": false, + "uncompleted_jobs": 330, + "models": [ + "Something" + ], + "team": { + "name": "IncompetentSquadZA", + "id": "b118f2d0-e187-4673-a67a-c196f29b1b11" + }, + "bridge_agent": "AI Horde Worker:23:https://github.com/db0/AI-Horde-Worker", + "max_pixels": 753664, + "megapixelsteps_generated": 730011, + "img2img": true, + "painting": false, + "lora": true + }, + { + "type": "image", + "name": "ControlNet_Worker_0", + "id": "49c3c471-b49e-4524-b7df-f34a992bbd68", + "online": true, + "requests_fulfilled": 30855, + "kudos_rewards": 1079732.0, + "kudos_details": { + "generated": 1068606.0, + "uptime": 11286 + }, + "performance": "2.3 megapixelsteps per second", + "threads": 1, + "uptime": 128557, + "maintenance_mode": false, + "nsfw": true, + "trusted": true, + "flagged": false, + "uncompleted_jobs": 1072, + "models": [ + "horde_special::stability.ai#6901", + "SDXL_beta::stability.ai#6901" + ], + "team": {}, + "bridge_agent": "AI Horde Worker:22:https://github.com/db0/AI-Horde-Worker", + "max_pixels": 4194304, + "megapixelsteps_generated": 1291633, + "img2img": true, + "painting": true, + "lora": false + }, + { + "type": "image", + "name": "FiFo-002", + "id": "6e7a6c54-1204-424a-97b3-acdc022ccdb7", + "online": true, + "requests_fulfilled": 389481, + "kudos_rewards": 4836985.0, + "kudos_details": { + "generated": 3748534.0, + "uptime": 1094152 + }, + "performance": "0.3 megapixelsteps per second", + "threads": 1, + "uptime": 13305005, + "maintenance_mode": true, + "info": "Quadro P4000 8 GB", + "nsfw": true, + "trusted": true, + "flagged": false, + "uncompleted_jobs": 728, + "models": [ + "Deliberate", + "Anything Diffusion" + ], + "team": {}, + "bridge_agent": "AI Horde Worker:23:https://github.com/db0/AI-Horde-Worker", + "max_pixels": 262144, + "megapixelsteps_generated": 3518282, + "img2img": true, + "painting": false, + "lora": false + }, + { + "type": "image", + "name": "AIDream-02", + "id": "82fc88ea-d316-4d09-90f1-4ae9c6939455", + "online": true, + "requests_fulfilled": 830283, + "kudos_rewards": 17721344.0, + "kudos_details": { + "generated": 14245097.0, + "uptime": 3485898 + }, + "performance": "0.6 megapixelsteps per second", + "threads": 1, + "uptime": 7078251, + "maintenance_mode": false, + "info": "RTX 3080, 32GB RAM, i9-11900k, NVME.", + "nsfw": true, + "trusted": true, + "flagged": false, + "uncompleted_jobs": 706, + "models": [ + "BubblyDubbly", + "Lyriel", + "DreamLikeSamKuvshinov", + "DucHaiten", + "FKing SciFi", + "mo-di-diffusion", + "Sygil-Dev Diffusion", + "Marvel Diffusion", + "3DKX", + "PFG", + "GuFeng", + "Pastel Mix", + "Samaritan 3d Cartoon", + "Squishmallow Diffusion", + "BRA", + "DucHaiten Classic Anime", + "CamelliaMix 2.5D", + "Double Exposure Diffusion", + "Art Of Mtg", + "Asim Simpsons", + "Protogen Infinity", + "Nitro Diffusion", + "Zack3D", + "Real Dos Mix", + "Unstable Ink Dream", + "Fluffusion", + "Cetus-Mix", + "Inkpunk Diffusion", + "Jim Eidomode", + "Grapefruit Hentai", + "Zeipher Female Model", + "Robo-Diffusion", + "Balloon Art", + "NeverEnding Dream", + "Realisian", + "Pretty 2.5D", + "Epic Diffusion", + "Elden Ring Diffusion", + "DGSpitzer Art Diffusion", + "Dungeons n Waifus", + "Moedel", + "ProtoGen", + "ICBINP - I Can't Believe It's Not Photography", + "Borderlands", + "Sonic Diffusion", + "Epic Diffusion Inpainting", + "Ultraskin", + "CyberRealistic", + "Movie Diffusion", + "RealBiter", + "stable_diffusion_inpainting", + "MeinaMix", + "Rev Animated", + "Henmix Real", + "Woop-Woop Photo", + "Hassaku", + "Papercut Diffusion", + "RPG", + "HASDX", + "Experience", + "kurzgesagt", + "Comic-Diffusion", + "Disco Elysium", + "ChromaV5", + "Valorant Diffusion", + "AIO Pixel Art", + "A-Zovya RPG Inpainting", + "BweshMix", + "Clazy", + "Knollingcase", + "Uhmami", + "Smoke Diffusion", + "Wavyfusion", + "Dark Victorian Diffusion", + "Laolei New Berry Protogen Mix", + "Dreamlike Diffusion", + "GuoFeng", + "Min Illust Background", + "DreamShaper Inpainting", + "Cheese Daddys Landscape Mix", + "JWST Deep Space Diffusion", + "ChilloutMix", + "Openniji", + "BPModel", + "App Icon Diffusion", + "Disney Pixar Cartoon Type A", + "Kenshi", + "Abyss OrangeMix", + "Dreamlike Photoreal", + "Deliberate Inpainting", + "RCNZ Gorilla With A Brick", + "Samdoesarts Ultmerge", + "Redshift Diffusion", + "stable_diffusion_2.1", + "Darkest Diffusion", + "Furry Epoch", + "Voxel Art Diffusion", + "Ether Real Mix", + "Guohua Diffusion", + "Galena Redux", + "T-Shirt Print Designs", + "AnyLoRA", + "Anything Diffusion", + "FaeTastic", + "CyriousMix", + "Deliberate", + "Hassanblend", + "iCoMix", + "URPM", + "Van Gogh Diffusion", + "Analog Diffusion", + "Yiffy", + "Korestyle", + "Realistic Vision Inpainting", + "DnD Map Generator", + "Fantasy Card Diffusion", + "Vector Art", + "Babes", + "Something", + "MoistMix", + "Xynthii-Diffusion", + "Realism Engine", + "Poison", + "Elldreth's Lucid Mix", + "majicMIX realistic", + "Microscopic", + "ExpMix Line", + "PIXHELL", + "BB95 Furry Mix", + "Reliberate", + "Anime Pencil Diffusion", + "Synthwave", + "Eimis Anime Diffusion", + "Ranma Diffusion", + "Future Diffusion", + "GhostMix", + "Rainbowpatch", + "Project Unreal Engine 5", + "Midjourney PaintArt", + "GTA5 Artwork Diffusion", + "SweetBoys 2D", + "Spider-Verse Diffusion", + "MoonMix Fantasy", + "Tron Legacy Diffusion", + "Protogen Anime", + "TrexMix", + "Char", + "Dark Sushi Mix", + "vectorartz", + "stable_diffusion", + "Dungeons and Diffusion", + "PRMJ", + "Western Animation Diffusion", + "A to Zovya RPG", + "Trinart Characters", + "UMI Olympus", + "Concept Sheet", + "waifu_diffusion", + "Microcritters", + "Anything v5", + "ModernArt Diffusion", + "Pulp Vector Art", + "Ghibli Diffusion", + "CharHelper", + "Pokemon3D", + "Counterfeit", + "Liberty", + "Healy's Anime Blend", + "Sci-Fi Diffusion", + "T-Shirt Diffusion", + "Eternos", + "Mega Merge Diffusion", + "Dan Mumford Style", + "JoMad Diffusion", + "Vivid Watercolors", + "Aurora", + "PortraitPlus", + "VinteProtogenMix", + "PPP", + "Anygen", + "Anything Diffusion Inpainting", + "GorynichMix", + "Dreamshaper", + "HRL", + "Coloring Book", + "Illuminati Diffusion", + "Rachel Walker Watercolors", + "Papercutcraft", + "Anything v3", + "Realistic Vision", + "Supermarionation", + "Zelda BOTW", + "RCNZ Dumb Monkey", + "OrbAI", + "Rodent Diffusion", + "Mistoon Amethyst", + "SD-Silicon", + "ToonYou", + "Funko Diffusion", + "AbyssOrangeMix-AfterDark", + "Colorful", + "526Mix-Animated", + "Perfect World", + "Cyberpunk Anime Diffusion", + "DnD Item", + "ACertainThing", + "Microchars", + "Elldreths Retro Mix", + "PVC", + "Seek.art MEGA", + "Arcane Diffusion", + "Microworlds", + "Vintedois Diffusion", + "Analog Madness", + "iCoMix Inpainting", + "Elysium Anime", + "Neurogen", + "OpenJourney Diffusion", + "SynthwavePunk", + "trinart", + "Hentai Diffusion", + "Lawlas's yiff mix", + "Edge Of Realism", + "Archer Diffusion", + "Graphic-Art", + "Microcasing", + "Classic Animation Diffusion" + ], + "team": {}, + "bridge_agent": "AI Horde Worker:22:https://github.com/db0/AI-Horde-Worker", + "max_pixels": 589824, + "megapixelsteps_generated": 13200210, + "img2img": true, + "painting": true, + "lora": false + }, + { + "type": "image", + "name": "ControlNet_Worker_4", + "id": "436eafe1-3e46-49b6-984a-79d44a16c8d7", + "online": true, + "requests_fulfilled": 29816, + "kudos_rewards": 1040511.0, + "kudos_details": { + "generated": 1029015.0, + "uptime": 11544 + }, + "performance": "2.5 megapixelsteps per second", + "threads": 1, + "uptime": 132772, + "maintenance_mode": false, + "nsfw": true, + "trusted": true, + "flagged": false, + "uncompleted_jobs": 1204, + "models": [ + "horde_special::stability.ai#6901", + "SDXL_beta::stability.ai#6901" + ], + "team": {}, + "bridge_agent": "AI Horde Worker:22:https://github.com/db0/AI-Horde-Worker", + "max_pixels": 4194304, + "megapixelsteps_generated": 1240645, + "img2img": true, + "painting": true, + "lora": false + }, + { + "type": "image", + "name": "cvoer", + "id": "50975d63-2318-42f3-b9cd-4fa0014d4219", + "online": true, + "requests_fulfilled": 18825, + "kudos_rewards": 216086.0, + "kudos_details": { + "generated": 188425.0, + "uptime": 27664 + }, + "performance": "3.9 megapixelsteps per second", + "threads": 1, + "uptime": 326143, + "maintenance_mode": true, + "info": "RTX4090, 32Gb RAM, i5-13600K", + "nsfw": true, + "trusted": false, + "flagged": false, + "uncompleted_jobs": 482, + "models": [ + "Deliberate" + ], + "team": {}, + "bridge_agent": "SD-WebUI Stable Horde Worker Bridge:4:https://github.com/sdwebui-w-horde/sd-webui-stable-horde-worker", + "max_pixels": 1048576, + "megapixelsteps_generated": 280246, + "img2img": true, + "painting": true, + "lora": false + }, + { + "type": "image", + "name": "GenericName", + "id": "e72ebdef-bfec-43cf-92ce-22e7bf064478", + "online": true, + "requests_fulfilled": 18579, + "kudos_rewards": 187450.0, + "kudos_details": { + "generated": 150009.0, + "uptime": 37476 + }, + "performance": "0.6 megapixelsteps per second", + "threads": 3, + "uptime": 418657, + "maintenance_mode": false, + "nsfw": true, + "trusted": false, + "flagged": false, + "uncompleted_jobs": 1, + "models": [ + "Deliberate", + "Anything Diffusion" + ], + "team": {}, + "bridge_agent": "AI Horde Worker:23:https://github.com/db0/AI-Horde-Worker", + "max_pixels": 229376, + "megapixelsteps_generated": 115629, + "img2img": true, + "painting": true, + "lora": false + }, + { + "type": "text", + "name": "slower cpu", + "id": "0f382d12-8fa6-4253-bcf8-3ed5749a9e1f", + "online": true, + "requests_fulfilled": 48119, + "kudos_rewards": 709185.0, + "kudos_details": { + "generated": 335036.0, + "uptime": 374150 + }, + "performance": "1.5 tokens per second", + "threads": 1, + "uptime": 4714135, + "maintenance_mode": false, + "nsfw": true, + "trusted": true, + "flagged": false, + "uncompleted_jobs": 34, + "models": [ + "ehartford/WizardLM-13B-Uncensored" + ], + "team": {}, + "bridge_agent": "KoboldAI Bridge:10:https://github.com/db0/KoboldAI-Horde-Bridge", + "max_length": 256, + "max_context_length": 512 + }, + { + "type": "text", + "name": "Pygbot", + "id": "5a8bce48-dfef-4b95-8aae-b024a9248ac5", + "online": true, + "requests_fulfilled": 6749, + "kudos_rewards": 21599.0, + "kudos_details": { + "generated": 6749.0, + "uptime": 14850 + }, + "performance": "7.2 tokens per second", + "threads": 1, + "uptime": 183957, + "maintenance_mode": false, + "nsfw": true, + "trusted": false, + "flagged": false, + "uncompleted_jobs": 44, + "models": [ + "Pygmalion-7b-4bit-GPTQ-Safetensors" + ], + "team": {}, + "bridge_agent": "KoboldAI Bridge:10:https://github.com/db0/KoboldAI-Horde-Bridge", + "max_length": 200, + "max_context_length": 2048 + }, + { + "type": "text", + "name": "Nisse", + "id": "14a9a534-d46c-406c-abfa-f845779b1983", + "online": true, + "requests_fulfilled": 739238, + "kudos_rewards": 56780303.0, + "kudos_details": { + "generated": 55995606.0, + "uptime": 883050 + }, + "performance": "6.5 tokens per second", + "threads": 1, + "uptime": 10805962, + "maintenance_mode": false, + "info": "RTX3090", + "nsfw": true, + "trusted": true, + "flagged": false, + "uncompleted_jobs": 2663, + "models": [ + "KoboldAI/OPT-13B-Erebus" + ], + "team": {}, + "bridge_agent": "AI Horde Worker:22:https://github.com/db0/AI-Horde-Worker", + "max_length": 512, + "max_context_length": 2048 + }, + { + "type": "text", + "name": "AI-Dispensary | The White Box Collection", + "id": "5a04ac74-874a-4af5-9ffc-8194f6d68de7", + "online": true, + "requests_fulfilled": 228667, + "kudos_rewards": 4444458.0, + "kudos_details": { + "generated": 4139657.0, + "uptime": 304850 + }, + "performance": "8.9 tokens per second", + "threads": 1, + "uptime": 3725841, + "maintenance_mode": false, + "info": "New Strains, Premium Buds. Consume Ethically.", + "nsfw": true, + "trusted": true, + "flagged": false, + "uncompleted_jobs": 1226, + "models": [ + "chronos-33b-GPTQ" + ], + "team": {}, + "bridge_agent": "KoboldAI Bridge:10:https://github.com/db0/KoboldAI-Horde-Bridge", + "max_length": 512, + "max_context_length": 2048 + }, + { + "type": "text", + "name": "Logicism - Rey's Jakku", + "id": "7d97ece4-ea76-480e-8f70-100391f9d519", + "online": true, + "requests_fulfilled": 85302, + "kudos_rewards": 1029874.0, + "kudos_details": { + "generated": 822734.0, + "uptime": 207150 + }, + "performance": "5.3 tokens per second", + "threads": 1, + "uptime": 2529472, + "maintenance_mode": false, + "info": "GTX 1070 4bit. Uptime may not be consistent due to usage for Streaming. https://twitch.tv/LogicismTV", + "nsfw": true, + "trusted": true, + "flagged": false, + "uncompleted_jobs": 97, + "models": [ + "Pygmalion-7b-4bit-GPTQ-Safetensors" + ], + "team": {}, + "bridge_agent": "KoboldAI Bridge:10:https://github.com/db0/KoboldAI-Horde-Bridge", + "max_length": 80, + "max_context_length": 1024 + }, + { + "type": "text", + "name": "Meus Artis", + "id": "9b44aeeb-de81-4028-903f-93894b13bc36", + "online": true, + "requests_fulfilled": 6298, + "kudos_rewards": 31598.0, + "kudos_details": { + "generated": 6298.0, + "uptime": 25300 + }, + "performance": "3.2 tokens per second", + "threads": 1, + "uptime": 313550, + "maintenance_mode": false, + "info": "Ryzen 5600X + RX 5700XT", + "nsfw": true, + "trusted": false, + "flagged": false, + "uncompleted_jobs": 3, + "models": [ + "koboldcpp/Airoboros-13B" + ], + "team": {}, + "bridge_agent": "KoboldAI Bridge:10:https://github.com/db0/KoboldAI-Horde-Bridge", + "max_length": 2048, + "max_context_length": 1024 + }, + { + "type": "text", + "name": "AzureBlackPod", + "id": "9a463445-1738-48b8-b544-652bfcff2de8", + "online": true, + "requests_fulfilled": 1084, + "kudos_rewards": 45945.0, + "kudos_details": { + "generated": 44998.0, + "uptime": 1100 + }, + "performance": "14.4 tokens per second", + "threads": 1, + "uptime": 13915, + "maintenance_mode": false, + "nsfw": true, + "trusted": true, + "flagged": false, + "uncompleted_jobs": 6, + "models": [ + "PygmalionAI/pygmalion-6b" + ], + "team": {}, + "bridge_agent": "KoboldAI Bridge:10:https://github.com/db0/KoboldAI-Horde-Bridge", + "max_length": 512, + "max_context_length": 2048 + }, + { + "type": "text", + "name": "jiggle", + "id": "10ae485a-a490-4544-a74c-a1b599e65cf6", + "online": true, + "requests_fulfilled": 22619, + "kudos_rewards": 43002.0, + "kudos_details": { + "generated": 22619.0, + "uptime": 20850 + }, + "performance": "7.5 tokens per second", + "threads": 1, + "uptime": 260541, + "maintenance_mode": false, + "nsfw": true, + "trusted": false, + "flagged": false, + "uncompleted_jobs": 259, + "models": [ + "koboldcpp/airoboros-65b-1.4.1-PI-8192" + ], + "team": {}, + "bridge_agent": "KoboldAI Bridge:10:https://github.com/db0/KoboldAI-Horde-Bridge", + "max_length": 512, + "max_context_length": 8192 + }, + { + "type": "text", + "name": "AzureBlack6", + "id": "75ce261e-306d-4638-afe9-e408cf803177", + "online": true, + "requests_fulfilled": 99295, + "kudos_rewards": 2257496.0, + "kudos_details": { + "generated": 2173443.0, + "uptime": 84150 + }, + "performance": "18.6 tokens per second", + "threads": 1, + "uptime": 1026476, + "maintenance_mode": false, + "nsfw": true, + "trusted": true, + "flagged": false, + "uncompleted_jobs": 1171, + "models": [ + "PygmalionAI/pygmalion-6b" + ], + "team": {}, + "bridge_agent": "KoboldAI Bridge:10:https://github.com/db0/KoboldAI-Horde-Bridge", + "max_length": 512, + "max_context_length": 2048 + }, + { + "type": "text", + "name": "Snail Down! 2", + "id": "a272a744-db27-42da-8db6-40b7d9eb1c14", + "online": true, + "requests_fulfilled": 187, + "kudos_rewards": 7031.0, + "kudos_details": { + "generated": 6882.0, + "uptime": 200 + }, + "performance": "7.5 tokens per second", + "threads": 1, + "uptime": 2887, + "maintenance_mode": false, + "nsfw": true, + "trusted": true, + "flagged": false, + "uncompleted_jobs": 1, + "models": [ + "PygmalionAI/pygmalion-6b" + ], + "team": {}, + "bridge_agent": "KoboldAI Bridge:10:https://github.com/db0/KoboldAI-Horde-Bridge", + "max_length": 512, + "max_context_length": 2048 + }, + { + "type": "text", + "name": "Bird up! 1", + "id": "5c60fe16-4bfd-4982-8605-cd615d8ce569", + "online": true, + "requests_fulfilled": 199117, + "kudos_rewards": 4677953.0, + "kudos_details": { + "generated": 4469322.0, + "uptime": 208750 + }, + "performance": "14.5 tokens per second", + "threads": 1, + "uptime": 2561029, + "maintenance_mode": false, + "nsfw": true, + "trusted": true, + "flagged": false, + "uncompleted_jobs": 2025, + "models": [ + "PygmalionAI/pygmalion-6b" + ], + "team": {}, + "bridge_agent": "KoboldAI Bridge:10:https://github.com/db0/KoboldAI-Horde-Bridge", + "max_length": 512, + "max_context_length": 2048 + }, + { + "type": "text", + "name": "MarsupialDisco", + "id": "15c53bc4-fec0-4cd3-9431-a9b245e583ae", + "online": true, + "requests_fulfilled": 98331, + "kudos_rewards": 616892.0, + "kudos_details": { + "generated": 469670.0, + "uptime": 147250 + }, + "performance": "12.9 tokens per second", + "threads": 1, + "uptime": 1801054, + "maintenance_mode": false, + "info": "RTX3060", + "nsfw": true, + "trusted": true, + "flagged": false, + "uncompleted_jobs": 1673, + "models": [ + "manticore-13b-chat-pyg-GPTQ" + ], + "team": {}, + "bridge_agent": "KoboldAI Bridge:10:https://github.com/db0/KoboldAI-Horde-Bridge", + "max_length": 256, + "max_context_length": 2048 + }, + { + "type": "text", + "name": "Bird up! 0", + "id": "77add8ce-1a39-4edd-96a5-19140063676d", + "online": true, + "requests_fulfilled": 227041, + "kudos_rewards": 4636208.0, + "kudos_details": { + "generated": 4326760.0, + "uptime": 309550 + }, + "performance": "34.5 tokens per second", + "threads": 1, + "uptime": 3798907, + "maintenance_mode": false, + "nsfw": true, + "trusted": true, + "flagged": false, + "uncompleted_jobs": 1480, + "models": [ + "Pygmalion-7b-4bit-GPTQ-Safetensors" + ], + "team": {}, + "bridge_agent": "KoboldAI Bridge:10:https://github.com/db0/KoboldAI-Horde-Bridge", + "max_length": 512, + "max_context_length": 2048 + }, + { + "type": "text", + "name": "Sceuick", + "id": "f261b430-cb81-4b60-b8eb-771532024007", + "online": true, + "requests_fulfilled": 119709, + "kudos_rewards": 3849205.0, + "kudos_details": { + "generated": 3589848.0, + "uptime": 259500 + }, + "performance": "11.0 tokens per second", + "threads": 1, + "uptime": 3225594, + "maintenance_mode": false, + "nsfw": true, + "trusted": true, + "flagged": false, + "uncompleted_jobs": 87, + "models": [ + "PygmalionAI/pygmalion-6b" + ], + "team": {}, + "bridge_agent": "KoboldAI Bridge:10:https://github.com/db0/KoboldAI-Horde-Bridge", + "max_length": 512, + "max_context_length": 2048 + }, + { + "type": "text", + "name": "Logicism - Mando's Starfighter", + "id": "425ec99a-3602-40c3-9e4c-bdec2f480abd", + "online": true, + "requests_fulfilled": 77912, + "kudos_rewards": 1054420.0, + "kudos_details": { + "generated": 859940.0, + "uptime": 194500 + }, + "performance": "6.8 tokens per second", + "threads": 1, + "uptime": 2388249, + "maintenance_mode": false, + "info": "RTX 3070 4bit. Uptime may not be consistent due to usage for Gaming or Streaming. https://twitch.tv/LogicismTV", + "nsfw": true, + "trusted": true, + "flagged": false, + "uncompleted_jobs": 144, + "models": [ + "Pygmalion-7b-4bit-GPTQ-Safetensors" + ], + "team": {}, + "bridge_agent": "KoboldAI Bridge:10:https://github.com/db0/KoboldAI-Horde-Bridge", + "max_length": 80, + "max_context_length": 1024 + }, + { + "type": "text", + "name": "AzureBlack", + "id": "89263d4a-0180-4d5e-9cf3-3d00e9e89a27", + "online": true, + "requests_fulfilled": 128986, + "kudos_rewards": 3060896.0, + "kudos_details": { + "generated": 2939816.0, + "uptime": 121150 + }, + "performance": "46.9 tokens per second", + "threads": 1, + "uptime": 1485853, + "maintenance_mode": false, + "nsfw": true, + "trusted": true, + "flagged": false, + "uncompleted_jobs": 1421, + "models": [ + "orca/mini_v2_13b-GPTQ" + ], + "team": {}, + "bridge_agent": "KoboldAI Bridge:10:https://github.com/db0/KoboldAI-Horde-Bridge", + "max_length": 512, + "max_context_length": 2048 + }, + { + "type": "text", + "name": "Tufte", + "id": "5702e22d-b548-4020-9913-1e6535302d51", + "online": true, + "requests_fulfilled": 1214695, + "kudos_rewards": 37227908.0, + "kudos_details": { + "generated": 36417662.0, + "uptime": 878250 + }, + "performance": "9.0 tokens per second", + "threads": 1, + "uptime": 10681465, + "maintenance_mode": false, + "info": "RTX3060", + "nsfw": true, + "trusted": true, + "flagged": false, + "uncompleted_jobs": 3107, + "models": [ + "PygmalionAI/pygmalion-6b" + ], + "team": {}, + "bridge_agent": "AI Horde Worker:22:https://github.com/db0/AI-Horde-Worker", + "max_length": 512, + "max_context_length": 2048 + }, + { + "type": "text", + "name": "a_weird_titanx", + "id": "78330b07-29e8-4e29-9ce5-28c172883352", + "online": true, + "requests_fulfilled": 45072, + "kudos_rewards": 1295300.0, + "kudos_details": { + "generated": 481700.0, + "uptime": 813600 + }, + "performance": "29.8 tokens per second", + "threads": 1, + "uptime": 9795825, + "maintenance_mode": false, + "info": "Titan X Maxwell", + "nsfw": true, + "trusted": true, + "flagged": false, + "uncompleted_jobs": 69, + "models": [ + "Gustavosta/MagicPrompt-Stable-Diffusion" + ], + "team": {}, + "bridge_agent": "KoboldAI Bridge:10:https://github.com/db0/KoboldAI-Horde-Bridge", + "max_length": 80, + "max_context_length": 1024 + }, + { + "type": "text", + "name": "Bird up! 2", + "id": "fd758a30-dfe2-4d7b-a444-4b1b63089ef4", + "online": true, + "requests_fulfilled": 120493, + "kudos_rewards": 2860919.0, + "kudos_details": { + "generated": 2735861.0, + "uptime": 125150 + }, + "performance": "14.3 tokens per second", + "threads": 1, + "uptime": 1533542, + "maintenance_mode": false, + "nsfw": true, + "trusted": true, + "flagged": false, + "uncompleted_jobs": 1219, + "models": [ + "PygmalionAI/pygmalion-6b" + ], + "team": {}, + "bridge_agent": "KoboldAI Bridge:10:https://github.com/db0/KoboldAI-Horde-Bridge", + "max_length": 512, + "max_context_length": 2048 + }, + { + "type": "text", + "name": "Smurf 4", + "id": "be1f034b-38e4-426c-a9a2-e6b587e4fdc2", + "online": true, + "requests_fulfilled": 19605, + "kudos_rewards": 511766.0, + "kudos_details": { + "generated": 242666.0, + "uptime": 269100 + }, + "performance": "7.0 tokens per second", + "threads": 1, + "uptime": 3235717, + "maintenance_mode": false, + "nsfw": true, + "trusted": true, + "flagged": false, + "uncompleted_jobs": 0, + "models": [ + "asmodeus" + ], + "team": {}, + "bridge_agent": "KoboldAI Bridge:10:https://github.com/db0/KoboldAI-Horde-Bridge", + "max_length": 512, + "max_context_length": 4096 + }, + { + "type": "text", + "name": "Smurf 3", + "id": "f9698428-a9f9-4cdf-bc70-a1b753ebbcd5", + "online": true, + "requests_fulfilled": 19510, + "kudos_rewards": 512106.0, + "kudos_details": { + "generated": 243006.0, + "uptime": 269100 + }, + "performance": "75.0 tokens per second", + "threads": 1, + "uptime": 3235700, + "maintenance_mode": false, + "nsfw": true, + "trusted": true, + "flagged": false, + "uncompleted_jobs": 0, + "models": [ + "asmodeus" + ], + "team": {}, + "bridge_agent": "KoboldAI Bridge:10:https://github.com/db0/KoboldAI-Horde-Bridge", + "max_length": 512, + "max_context_length": 4096 + }, + { + "type": "text", + "name": "WolfySoy's PC", + "id": "65c99111-cbd1-4cdc-b25e-29c93f22af87", + "online": true, + "requests_fulfilled": 35509, + "kudos_rewards": 470256.0, + "kudos_details": { + "generated": 300711.0, + "uptime": 169600 + }, + "performance": "19.3 tokens per second", + "threads": 1, + "uptime": 2069299, + "maintenance_mode": false, + "info": "RTX 2080 6GB Ryzen 7 64GB", + "nsfw": true, + "trusted": true, + "flagged": false, + "uncompleted_jobs": 72, + "models": [ + "PygmalionAI/pygmalion-1.3b" + ], + "team": {}, + "bridge_agent": "KoboldAI Bridge:10:https://github.com/db0/KoboldAI-Horde-Bridge", + "max_length": 80, + "max_context_length": 1024 + }, + { + "type": "text", + "name": "Smurf 5", + "id": "d8873c0d-a1d8-47d6-8b18-3328535482bd", + "online": true, + "requests_fulfilled": 19697, + "kudos_rewards": 514109.0, + "kudos_details": { + "generated": 245059.0, + "uptime": 269050 + }, + "performance": "5.7 tokens per second", + "threads": 1, + "uptime": 3235422, + "maintenance_mode": false, + "nsfw": true, + "trusted": true, + "flagged": false, + "uncompleted_jobs": 0, + "models": [ + "asmodeus" + ], + "team": {}, + "bridge_agent": "KoboldAI Bridge:10:https://github.com/db0/KoboldAI-Horde-Bridge", + "max_length": 512, + "max_context_length": 4096 + }, + { + "type": "text", + "name": "Smurf 2", + "id": "37cc1633-e241-4cc7-9bea-e9a4d29b16e5", + "online": true, + "requests_fulfilled": 19515, + "kudos_rewards": 511331.0, + "kudos_details": { + "generated": 242231.0, + "uptime": 269100 + }, + "performance": "22.7 tokens per second", + "threads": 1, + "uptime": 3235050, + "maintenance_mode": false, + "nsfw": true, + "trusted": true, + "flagged": false, + "uncompleted_jobs": 1, + "models": [ + "asmodeus" + ], + "team": {}, + "bridge_agent": "KoboldAI Bridge:10:https://github.com/db0/KoboldAI-Horde-Bridge", + "max_length": 512, + "max_context_length": 4096 + }, + { + "type": "text", + "name": "Frost Meadow GPU", + "id": "a2b931e0-b6a5-43c9-96ec-c1a0cb32680b", + "online": true, + "requests_fulfilled": 1145, + "kudos_rewards": 2995.0, + "kudos_details": { + "generated": 1145.0, + "uptime": 1850 + }, + "performance": "13.6 tokens per second", + "threads": 1, + "uptime": 23455, + "maintenance_mode": false, + "nsfw": true, + "trusted": false, + "flagged": false, + "uncompleted_jobs": 60, + "models": [ + "pygmalion-7b" + ], + "team": {}, + "bridge_agent": "KoboldAI Bridge:10:https://github.com/db0/KoboldAI-Horde-Bridge", + "max_length": 230, + "max_context_length": 1176 + }, + { + "type": "text", + "name": "Vittra", + "id": "3f0edbf2-f195-4662-a801-572700b7ba90", + "online": true, + "requests_fulfilled": 512533, + "kudos_rewards": 34709565.0, + "kudos_details": { + "generated": 34307041.0, + "uptime": 451900 + }, + "performance": "7.7 tokens per second", + "threads": 1, + "uptime": 5530981, + "maintenance_mode": false, + "info": "Text Worker", + "nsfw": true, + "trusted": true, + "flagged": false, + "uncompleted_jobs": 2359, + "models": [ + "KoboldAI/OPT-13B-Nerybus-Mix" + ], + "team": {}, + "bridge_agent": "AI Horde Worker:22:https://github.com/db0/AI-Horde-Worker", + "max_length": 512, + "max_context_length": 2048 + }, + { + "type": "text", + "name": "Snail Down! 1", + "id": "5a98e66a-3d72-4863-bc2d-9a6457ccf373", + "online": true, + "requests_fulfilled": 4723, + "kudos_rewards": 176694.0, + "kudos_details": { + "generated": 172090.0, + "uptime": 4650 + }, + "performance": "9.6 tokens per second", + "threads": 1, + "uptime": 59476, + "maintenance_mode": false, + "nsfw": true, + "trusted": true, + "flagged": false, + "uncompleted_jobs": 11, + "models": [ + "PygmalionAI/pygmalion-6b" + ], + "team": {}, + "bridge_agent": "KoboldAI Bridge:10:https://github.com/db0/KoboldAI-Horde-Bridge", + "max_length": 512, + "max_context_length": 2048 + }, + { + "type": "interrogation", + "name": "The Azure Happiness", + "id": "d9e2e140-3622-417a-973f-4a26315ec987", + "online": true, + "requests_fulfilled": 11384, + "kudos_rewards": 445184.0, + "kudos_details": { + "uptime": 431565 + }, + "performance": "7.2 seconds per form", + "threads": 2, + "uptime": 6907538, + "maintenance_mode": false, + "nsfw": false, + "trusted": true, + "flagged": false, + "uncompleted_jobs": 1416, + "forms": [ + "caption", + "interrogation", + "nsfw" + ], + "team": {}, + "bridge_agent": "AI Horde Worker:20:https://github.com/db0/AI-Horde-Worker" + }, + { + "type": "interrogation", + "name": "AiBrush-4-Alchemist", + "id": "0b0bd149-9e7e-477b-830e-8a7b1f0796af", + "online": true, + "requests_fulfilled": 1243, + "kudos_rewards": 68973.0, + "kudos_details": { + "uptime": 67400 + }, + "performance": "5.7 seconds per form", + "threads": 1, + "uptime": 1013477, + "maintenance_mode": false, + "nsfw": false, + "trusted": true, + "flagged": false, + "uncompleted_jobs": 1, + "forms": [ + "4x_AnimeSharp", + "caption", + "CodeFormers", + "GFPGAN", + "interrogation", + "NMKD_Siax", + "nsfw", + "RealESRGAN_x2plus", + "RealESRGAN_x4plus", + "RealESRGAN_x4plus_anime_6B", + "strip_background" + ], + "team": {}, + "bridge_agent": "AI Horde Worker:23:https://github.com/db0/AI-Horde-Worker" + }, + { + "type": "interrogation", + "name": "AiBrush-2-Alchemist", + "id": "8f79175f-9e6f-4559-a148-49ffd2275595", + "online": true, + "requests_fulfilled": 2017, + "kudos_rewards": 76032.0, + "kudos_details": { + "uptime": 73400 + }, + "performance": "10.2 seconds per form", + "threads": 1, + "uptime": 1105678, + "maintenance_mode": false, + "nsfw": false, + "trusted": true, + "flagged": false, + "uncompleted_jobs": 6, + "forms": [ + "4x_AnimeSharp", + "caption", + "CodeFormers", + "GFPGAN", + "interrogation", + "NMKD_Siax", + "nsfw", + "RealESRGAN_x2plus", + "RealESRGAN_x4plus", + "RealESRGAN_x4plus_anime_6B", + "strip_background" + ], + "team": {}, + "bridge_agent": "AI Horde Worker:23:https://github.com/db0/AI-Horde-Worker" + }, + { + "type": "interrogation", + "name": "AiBrush-3-Alchemist", + "id": "a353b83d-2239-4af3-8808-188f265daf12", + "online": true, + "requests_fulfilled": 1377, + "kudos_rewards": 57066.0, + "kudos_details": { + "uptime": 55160 + }, + "performance": "4.6 seconds per form", + "threads": 1, + "uptime": 830551, + "maintenance_mode": false, + "nsfw": false, + "trusted": true, + "flagged": false, + "uncompleted_jobs": 2, + "forms": [ + "4x_AnimeSharp", + "caption", + "CodeFormers", + "GFPGAN", + "interrogation", + "NMKD_Siax", + "nsfw", + "RealESRGAN_x2plus", + "RealESRGAN_x4plus", + "RealESRGAN_x4plus_anime_6B", + "strip_background" + ], + "team": {}, + "bridge_agent": "AI Horde Worker:23:https://github.com/db0/AI-Horde-Worker" + }, + { + "type": "interrogation", + "name": "kal9003", + "id": "2fafdbc0-2bd8-4171-be82-057d69b85f2c", + "online": true, + "requests_fulfilled": 6441, + "kudos_rewards": 359289.0, + "kudos_details": { + "uptime": 351800 + }, + "performance": "6.0 seconds per form", + "threads": 1, + "uptime": 5316394, + "maintenance_mode": false, + "nsfw": false, + "trusted": true, + "flagged": false, + "uncompleted_jobs": 94, + "forms": [ + "4x_AnimeSharp", + "caption", + "CodeFormers", + "GFPGAN", + "interrogation", + "NMKD_Siax", + "nsfw", + "RealESRGAN_x2plus", + "RealESRGAN_x4plus", + "RealESRGAN_x4plus_anime_6B", + "strip_background" + ], + "team": {}, + "bridge_agent": "AI Horde Worker:23:https://github.com/db0/AI-Horde-Worker" + }, + { + "type": "interrogation", + "name": "kal9001", + "id": "fa8157e1-5f14-492f-ae92-a3b70d420223", + "online": true, + "requests_fulfilled": 7621, + "kudos_rewards": 324030.0, + "kudos_details": { + "uptime": 315280 + }, + "performance": "5.1 seconds per form", + "threads": 1, + "uptime": 4767775, + "maintenance_mode": false, + "nsfw": false, + "trusted": true, + "flagged": false, + "uncompleted_jobs": 148, + "forms": [ + "4x_AnimeSharp", + "caption", + "CodeFormers", + "GFPGAN", + "interrogation", + "NMKD_Siax", + "nsfw", + "RealESRGAN_x2plus", + "RealESRGAN_x4plus", + "RealESRGAN_x4plus_anime_6B", + "strip_background" + ], + "team": {}, + "bridge_agent": "AI Horde Worker:23:https://github.com/db0/AI-Horde-Worker" + }, + { + "type": "interrogation", + "name": "kal9004", + "id": "1e77f09c-1219-4fda-a859-7483544acf3c", + "online": true, + "requests_fulfilled": 6376, + "kudos_rewards": 342904.0, + "kudos_details": { + "uptime": 335320 + }, + "performance": "5.9 seconds per form", + "threads": 1, + "uptime": 5068324, + "maintenance_mode": false, + "nsfw": false, + "trusted": true, + "flagged": false, + "uncompleted_jobs": 123, + "forms": [ + "4x_AnimeSharp", + "caption", + "CodeFormers", + "GFPGAN", + "interrogation", + "NMKD_Siax", + "nsfw", + "RealESRGAN_x2plus", + "RealESRGAN_x4plus", + "RealESRGAN_x4plus_anime_6B", + "strip_background" + ], + "team": {}, + "bridge_agent": "AI Horde Worker:23:https://github.com/db0/AI-Horde-Worker" + }, + { + "type": "interrogation", + "name": "kal9007", + "id": "68cdc28b-6004-438b-ad5a-fc661b41eb22", + "online": true, + "requests_fulfilled": 46, + "kudos_rewards": 4466.0, + "kudos_details": { + "uptime": 4400 + }, + "performance": "7.7 seconds per form", + "threads": 1, + "uptime": 66853, + "maintenance_mode": false, + "nsfw": false, + "trusted": true, + "flagged": false, + "uncompleted_jobs": 0, + "forms": [ + "4x_AnimeSharp", + "caption", + "CodeFormers", + "GFPGAN", + "interrogation", + "NMKD_Siax", + "nsfw", + "RealESRGAN_x2plus", + "RealESRGAN_x4plus", + "RealESRGAN_x4plus_anime_6B", + "strip_background" + ], + "team": {}, + "bridge_agent": "AI Horde Worker:23:https://github.com/db0/AI-Horde-Worker" + }, + { + "type": "interrogation", + "name": "kal9006", + "id": "d96854f8-0964-4895-8f3c-a1e859264e92", + "online": true, + "requests_fulfilled": 1080, + "kudos_rewards": 46585.0, + "kudos_details": { + "uptime": 45240 + }, + "performance": "5.1 seconds per form", + "threads": 1, + "uptime": 681663, + "maintenance_mode": false, + "nsfw": false, + "trusted": true, + "flagged": false, + "uncompleted_jobs": 22, + "forms": [ + "4x_AnimeSharp", + "caption", + "CodeFormers", + "GFPGAN", + "interrogation", + "NMKD_Siax", + "nsfw", + "RealESRGAN_x2plus", + "RealESRGAN_x4plus", + "RealESRGAN_x4plus_anime_6B", + "strip_background" + ], + "team": {}, + "bridge_agent": "AI Horde Worker:23:https://github.com/db0/AI-Horde-Worker" + }, + { + "type": "interrogation", + "name": "stablehorde-fs-worker", + "id": "8f084136-3824-4e77-a265-2918e23a71c8", + "online": true, + "requests_fulfilled": 13230, + "kudos_rewards": 385001.0, + "kudos_details": { + "uptime": 382240 + }, + "performance": "4.5 seconds per form", + "threads": 4, + "uptime": 5404556, + "maintenance_mode": false, + "nsfw": false, + "trusted": true, + "flagged": false, + "uncompleted_jobs": 184, + "forms": [ + "caption", + "nsfw" + ], + "team": {}, + "bridge_agent": "AI Horde Worker:22:https://github.com/db0/AI-Horde-Worker" + }, + { + "type": "interrogation", + "name": "kal9002", + "id": "f2a4892a-09ba-4ac1-a262-0e661511c97e", + "online": true, + "requests_fulfilled": 7777, + "kudos_rewards": 379343.0, + "kudos_details": { + "uptime": 370120 + }, + "performance": "3.7 seconds per form", + "threads": 1, + "uptime": 5591800, + "maintenance_mode": false, + "nsfw": false, + "trusted": true, + "flagged": false, + "uncompleted_jobs": 126, + "forms": [ + "4x_AnimeSharp", + "caption", + "CodeFormers", + "GFPGAN", + "interrogation", + "NMKD_Siax", + "nsfw", + "RealESRGAN_x2plus", + "RealESRGAN_x4plus", + "RealESRGAN_x4plus_anime_6B", + "strip_background" + ], + "team": {}, + "bridge_agent": "AI Horde Worker:23:https://github.com/db0/AI-Horde-Worker" + }, + { + "type": "interrogation", + "name": "lommax94", + "id": "ea9f1ae8-c130-4e12-afec-51efbdb25160", + "online": true, + "requests_fulfilled": 5596, + "kudos_rewards": 243474.0, + "kudos_details": { + "uptime": 236320 + }, + "performance": "10.1 seconds per form", + "threads": 1, + "uptime": 3552649, + "maintenance_mode": false, + "nsfw": false, + "trusted": true, + "flagged": false, + "uncompleted_jobs": 171, + "forms": [ + "4x_AnimeSharp", + "caption", + "CodeFormers", + "GFPGAN", + "interrogation", + "NMKD_Siax", + "nsfw", + "RealESRGAN_x2plus", + "RealESRGAN_x4plus", + "RealESRGAN_x4plus_anime_6B", + "strip_background" + ], + "team": {}, + "bridge_agent": "AI Horde Worker:21:https://github.com/db0/AI-Horde-Worker" + }, + { + "type": "interrogation", + "name": "kal9005", + "id": "a3aacaf6-a3ef-4577-8f10-68daac0f1694", + "online": true, + "requests_fulfilled": 4800, + "kudos_rewards": 261823.0, + "kudos_details": { + "uptime": 255920 + }, + "performance": "3.4 seconds per form", + "threads": 1, + "uptime": 3859745, + "maintenance_mode": false, + "nsfw": false, + "trusted": true, + "flagged": false, + "uncompleted_jobs": 87, + "forms": [ + "4x_AnimeSharp", + "caption", + "CodeFormers", + "GFPGAN", + "interrogation", + "NMKD_Siax", + "nsfw", + "RealESRGAN_x2plus", + "RealESRGAN_x4plus", + "RealESRGAN_x4plus_anime_6B", + "strip_background" + ], + "team": {}, + "bridge_agent": "AI Horde Worker:23:https://github.com/db0/AI-Horde-Worker" + }, + { + "type": "interrogation", + "name": "AiBrush-Alchemist", + "id": "5daebf7c-3cd7-4002-a4cc-221721809161", + "online": true, + "requests_fulfilled": 7504, + "kudos_rewards": 150372.0, + "kudos_details": { + "uptime": 138960 + }, + "performance": "4.7 seconds per form", + "threads": 1, + "uptime": 2092881, + "maintenance_mode": false, + "nsfw": false, + "trusted": true, + "flagged": false, + "uncompleted_jobs": 53, + "forms": [ + "4x_AnimeSharp", + "caption", + "CodeFormers", + "GFPGAN", + "interrogation", + "NMKD_Siax", + "nsfw", + "RealESRGAN_x2plus", + "RealESRGAN_x4plus", + "RealESRGAN_x4plus_anime_6B", + "strip_background" + ], + "team": {}, + "bridge_agent": "AI Horde Worker:23:https://github.com/db0/AI-Horde-Worker" + }, + { + "type": "interrogation", + "name": "Mach2", + "id": "cbbe7972-e415-4018-8633-2f9d879550a8", + "online": true, + "requests_fulfilled": 11742, + "kudos_rewards": 516739.0, + "kudos_details": { + "uptime": 505240 + }, + "performance": "10.7 seconds per form", + "threads": 3, + "uptime": 7812984, + "maintenance_mode": false, + "nsfw": false, + "trusted": true, + "flagged": false, + "uncompleted_jobs": 2724, + "forms": [ + "caption", + "nsfw" + ], + "team": {}, + "bridge_agent": "AI Horde Worker:20:https://github.com/db0/AI-Horde-Worker" + }, + { + "type": "interrogation", + "name": "Bordn #-49291740", + "id": "43ab74bb-ed39-41c1-9dcf-4b59ae2ae882", + "online": true, + "requests_fulfilled": 29253, + "kudos_rewards": 614348.0, + "kudos_details": { + "uptime": 580320 + }, + "performance": "11.6 seconds per form", + "threads": 1, + "uptime": 8746203, + "maintenance_mode": false, + "nsfw": false, + "trusted": true, + "flagged": false, + "uncompleted_jobs": 5263, + "forms": [ + "caption", + "interrogation", + "nsfw" + ], + "team": {}, + "bridge_agent": "AI Horde Worker:20:https://github.com/db0/AI-Horde-Worker" + }, + { + "type": "interrogation", + "name": "Jade Alchemist", + "id": "3cd28515-113e-40a1-a4f8-3424d2302389", + "online": true, + "requests_fulfilled": 3, + "kudos_rewards": 1043.0, + "kudos_details": { + "uptime": 1040 + }, + "performance": "44.8 seconds per form", + "threads": 1, + "uptime": 15747, + "maintenance_mode": false, + "nsfw": false, + "trusted": false, + "flagged": false, + "uncompleted_jobs": 1, + "forms": [ + "4x_AnimeSharp", + "caption", + "CodeFormers", + "GFPGAN", + "interrogation", + "NMKD_Siax", + "nsfw", + "RealESRGAN_x2plus", + "RealESRGAN_x4plus", + "RealESRGAN_x4plus_anime_6B", + "strip_background" + ], + "team": {}, + "bridge_agent": "AI Horde Worker:23:https://github.com/db0/AI-Horde-Worker" + } +] diff --git a/tests/test_dynamically_check_apimodels.py b/tests/test_dynamically_check_apimodels.py index 76f7ac6..6fe50c9 100644 --- a/tests/test_dynamically_check_apimodels.py +++ b/tests/test_dynamically_check_apimodels.py @@ -21,6 +21,11 @@ ratings_api: Path("tests/test_data/ratings_api/example_responses"), } +EXAMPLE_PRODUCTION_RESPONSES: dict[ModuleType, Path] = { + ai_horde_api: Path("tests/test_data/ai_horde_api/example_production_responses"), + ratings_api: Path("tests/test_data/ratings_api/example_production_responses"), +} + class Test_reflection_and_dynamic: # noqa: D101 def test_example_response_folders_exist(self) -> None: # noqa: D102 @@ -38,7 +43,7 @@ def test_get_all_request_types(self) -> None: # noqa: D102 ), f"Request type is not a subclass if `BaseRequest`: {request_type}" assert issubclass( - request_type.get_expected_response_type(), BaseResponse + request_type.get_success_response_type(), BaseResponse ), f"Response type is not a subclass of `BaseResponse`: {request_type}" @staticmethod @@ -62,7 +67,7 @@ def dynamic_json_load(module: ModuleType) -> None: request_type, generic_api.BaseRequest ), f"Request type is not a subclass if `BaseRequest`: {request_type}" - response_type: type[BaseResponse] = request_type.get_expected_response_type() + response_type: type[BaseResponse] = request_type.get_success_response_type() assert issubclass( response_type, BaseResponse ), f"Response type is not a subclass of `BaseResponse`: {response_type}" @@ -78,13 +83,34 @@ def dynamic_json_load(module: ModuleType) -> None: target_payload_file_path ), f"Missing example payload file: {target_payload_file_path}" - target_response_file_path = f"{example_response_folder}/{response_type.__name__}.json" - with open(target_response_file_path) as sample_file_handle: - sample_data_json = json.loads(sample_file_handle.read()) - response_type(**sample_data_json) + success_status_codes = request_type.get_success_status_response_pairs() + for success_status_code, success_response_type in success_status_codes.items(): + example_response_filename = SwaggerDoc.filename_from_endpoint_path( + request_type.get_endpoint_subpath(), + request_type.get_http_method(), + http_status_code=success_status_code, + ) + target_response_file_path = f"{example_response_folder}/{example_response_filename}.json" + with open(target_response_file_path) as sample_file_handle: + sample_data_json = json.loads(sample_file_handle.read()) + if response_type.is_array_response(): + _ = success_response_type().set_array(sample_data_json) + else: + _ = success_response_type(**sample_data_json) + + example_production_response_file_path = ( + f"{EXAMPLE_PRODUCTION_RESPONSES[module]}/{example_response_filename}.json" + ) + if os.path.exists(example_production_response_file_path): + with open(example_production_response_file_path, encoding="utf8") as sample_file_handle: + sample_data_json = json.loads(sample_file_handle.read()) + if response_type.is_array_response(): + _ = success_response_type().set_array(sample_data_json) + else: + _ = success_response_type(**sample_data_json) def test_horde_api(self) -> None: self.dynamic_json_load(ai_horde_api) - def test_ratings_api(self) -> None: - self.dynamic_json_load(ratings_api) + # def test_ratings_api(self) -> None: + # self.dynamic_json_load(ratings_api)