{"id":18985320,"url":"https://github.com/dragonfireclient/hydra-dragonfire","last_synced_at":"2026-01-11T21:57:15.563Z","repository":{"id":39626555,"uuid":"497326980","full_name":"dragonfireclient/hydra-dragonfire","owner":"dragonfireclient","description":null,"archived":false,"fork":false,"pushed_at":"2025-06-13T16:20:46.000Z","size":198,"stargazers_count":15,"open_issues_count":0,"forks_count":2,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-06-13T17:36:10.895Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dragonfireclient.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2022-05-28T13:33:11.000Z","updated_at":"2025-06-13T16:20:49.000Z","dependencies_parsed_at":"2023-02-06T08:46:16.546Z","dependency_job_id":null,"html_url":"https://github.com/dragonfireclient/hydra-dragonfire","commit_stats":null,"previous_names":["dragonfireclient/hydra"],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/dragonfireclient/hydra-dragonfire","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dragonfireclient%2Fhydra-dragonfire","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dragonfireclient%2Fhydra-dragonfire/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dragonfireclient%2Fhydra-dragonfire/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dragonfireclient%2Fhydra-dragonfire/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dragonfireclient","download_url":"https://codeload.github.com/dragonfireclient/hydra-dragonfire/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dragonfireclient%2Fhydra-dragonfire/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28324588,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-11T18:42:50.174Z","status":"ssl_error","status_checked_at":"2026-01-11T18:39:13.842Z","response_time":60,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-08T16:25:44.789Z","updated_at":"2026-01-11T21:57:15.548Z","avatar_url":"https://github.com/dragonfireclient.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Hydra\n\u003cimg src=\"https://cdn8.picryl.com/photo/2016/05/14/hydra-from-bl-royal-12-c-xix-f-13-b31e4a-1024.jpg\" width=\"500\" /\u003e\n\nLua bindings for client side minetest protocol - written in Go, using [a fork](https://github.com/dragonfireclient/mt) of [anon5's mt package](https://github.com/anon55555/mt).\nCapable of deserializing ToClt packets and serializing ToSrv packets.\n\nMain use case are bot clients. Multiple clients can easily be spawend and polled from one script - hence the name \"Hydra\".\nHydra may also be useful for integration testing or network debugging.\n\nHydra is WIP: there are bugs, API may change any time, doc is incomplete, some packets are unimplemented and many components are yet to be added. However, hydra can already be used and big parts of it's main functionality are implemented.\n\n# Installation\nGo 1.18 is required.\n`go install github.com/dragonfireclient/hydra-dragonfire@latest`\n\n# Invocation\nDue to limitations of Go, hydra unfortunately cannot be `require()`'d from a Lua script. Instead, the hydra binary has to be invoked with a script as argument:\n`hydra-dragonfire file.lua \u003cargs\u003e`. Any additional arguments `\u003cargs\u003e` are provided to the script.\n\n# Architecture Overview\nBy default, hydra will only take care of connection and packet serialization, no state management takes place.\nHydra is a library, not a framework: it does not organize your code and there is no module system.\n\nMultiple clients can be created independently by calling the `hydra.client` function.\n`poll` can be used on one or multiple clients to receive packets and `send` can be used to send packets.\nOnly selected packets will be returned by `poll`, to avoid unnecessary conversion of packets to Lua.\nPoll will return early if the script is interrupted by a signal, one of the selected clients is disconnected or the configured timeout elapses.\n\nAdditionally, different native components can be enabled per-client to manage state.\nCurrently `auth` and `map` components are available, and components like `objs`, `inv`, `pos`, `player_list` etc. will be added in the future.\nComponents handle packets asynchronously, they will process them even if poll is not called.\n\n# Further Documentation\n[API documentation](doc/api.md)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdragonfireclient%2Fhydra-dragonfire","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdragonfireclient%2Fhydra-dragonfire","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdragonfireclient%2Fhydra-dragonfire/lists"}