{"id":28675376,"url":"https://github.com/arkforgelabs/astra","last_synced_at":"2025-10-28T05:44:49.003Z","repository":{"id":269144396,"uuid":"906555049","full_name":"ArkForgeLabs/Astra","owner":"ArkForgeLabs","description":"🔥 Blazingly Fast 🔥 web server runtime for Lua","archived":false,"fork":false,"pushed_at":"2025-10-20T18:56:09.000Z","size":2919,"stargazers_count":69,"open_issues_count":11,"forks_count":6,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-10-22T22:35:18.347Z","etag":null,"topics":["axum","easytouse","fast","lua","luajit","luau","nobuild","rust","server","teal","webserver"],"latest_commit_sha":null,"homepage":"http://astra.arkforge.net/","language":"Lua","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ArkForgeLabs.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2024-12-21T08:17:31.000Z","updated_at":"2025-10-20T18:55:45.000Z","dependencies_parsed_at":"2025-02-04T13:31:32.740Z","dependency_job_id":"e9d23e31-6edf-46ce-b319-42f726224937","html_url":"https://github.com/ArkForgeLabs/Astra","commit_stats":null,"previous_names":["arkforgelabs/astra"],"tags_count":72,"template":false,"template_full_name":null,"purl":"pkg:github/ArkForgeLabs/Astra","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ArkForgeLabs%2FAstra","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ArkForgeLabs%2FAstra/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ArkForgeLabs%2FAstra/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ArkForgeLabs%2FAstra/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ArkForgeLabs","download_url":"https://codeload.github.com/ArkForgeLabs/Astra/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ArkForgeLabs%2FAstra/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":281391761,"owners_count":26492903,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-28T02:00:06.022Z","response_time":60,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["axum","easytouse","fast","lua","luajit","luau","nobuild","rust","server","teal","webserver"],"created_at":"2025-06-13T22:09:28.074Z","updated_at":"2025-10-28T05:44:48.990Z","avatar_url":"https://github.com/ArkForgeLabs.png","language":"Lua","readme":"![Banner](https://astra.arkforge.net/banner.png)\n\n[![Release Linux](https://github.com/ArkForgeLabs/Astra/actions/workflows/linux_release.yml/badge.svg)](https://github.com/ArkForgeLabs/Astra/actions/workflows/linux_release.yml)\n[![Release Windows](https://github.com/ArkForgeLabs/Astra/actions/workflows/windows_release.yml/badge.svg)](https://github.com/ArkForgeLabs/Astra/actions/workflows/windows_release.yml)\n[![Publish the crate](https://github.com/ArkForgeLabs/Astra/actions/workflows/crates_io_publish.yml/badge.svg)](https://github.com/ArkForgeLabs/Astra/actions/workflows/crates_io_publish.yml)\n[![Static Badge](https://img.shields.io/badge/Join-The_Discord-blue?style=flat\u0026logo=discord\u0026color=blue)](https://discord.com/invite/6PMjUx8x3b)\n[![Static Badge](https://img.shields.io/badge/Read_The_Docs-blue?style=flat\u0026logo=docsdotrs\u0026color=%23000000)](https://astra.arkforge.net/docs/latest)\n\nAstra is a web server runtime for Lua (5.1-5.4), Luau and LuaJIT written in Rust. The goal is to get as much performance as possible while writing the web server logic in Lua instead for faster iteration, fault-tolerance and no-build requirements. This project is internally used here at [ArkForge](https://arkforge.net) and many others.\n\n## Installation\n\nYou can either get the binaries at [github releases](https://github.com/ArkForgeLabs/Astra/releases) or using `cargo` if you have it installed:\n\n```bash\ncargo install lua-astra\n```\n\nTo install with differet Lua VM, e.g. Lua 5.4:\n\n```bash\ncargo install lua-astra --no-default-features --features lua54\n```\n\n\u003e MSRV: 1.88+\n\n## Example\n\n```lua\n-- Create a new server\nlocal server = require(\"astra.lua.http\").server.new()\n\n-- Register a route\nserver:get(\"/\", function()\n    return \"hello from default Astra instance!\"\nend)\n\n-- Configure the server\nserver.port = 3000\n\n-- Run the server\nserver:run()\n```\n\nYou can also use the local variables within routes\n\n```lua\nlocal counter = 0\nserver:get(\"/count\", function()\n    counter = counter + 1\n    -- and also can return JSON\n    return { counter = counter }\nend)\n```\n\nRequests and Responses and their configuration are provided when needed\n\n```lua\nserver:get(\"/\", function(request, response)\n    -- set header code\n    response:set_status_code(300)\n    -- set headers\n    response:set_header(\"header-key\", \"header-value\")\n\n    -- consume the request body\n    print(request:body():text())\n\n    return \"Responding with Code 300 cuz why not\"\nend)\n```\n\nThere are also utilities provided such as a PostgreSQL/SQLite, http client requests, lua extra utils, and async tasks.\n\n```lua\n-- spawn an async task that does not block the running thread\nspawn_task(function ()\n    -- HTTP Request to check your IP address\n    local response = Astra.http.request(\"https://myip.wtf/json\"):execute()\n    pprint(response:status_code())\n    pprint(response:remote_address())\n    pprint(response:body():json())\nend)\n```\n\n## Community Projects\n\n- Astra Trails - \u003chttps://github.com/0riginaln0/astra-trails\u003e\n\nIf you have a project that uses or extends Astra, let us know about it by extending the list above or opening a new [issue](https://github.com/ArkForgeLabs/Astra/issues/new)\n\n## Note\n\nThis project may have breaking changes in minor versions until v1.0. Afterwhich semver will be followed. Contributions are always welcome!\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Farkforgelabs%2Fastra","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Farkforgelabs%2Fastra","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Farkforgelabs%2Fastra/lists"}