{"data":{"slug":"xyproto-algernon","name":"algernon","tagline":"Small self-contained pure-Go web server with Lua, Teal, Markdown, Ollama, HTTP/2, QUIC, Redis, TypeScript, SQLite and PostgreSQL support","github_url":"https://github.com/xyproto/algernon","owner":"xyproto","repo":"algernon","owner_avatar_url":"https://avatars.githubusercontent.com/u/52813?v=4","primary_language":"JavaScript","stars":3027,"forks":149,"topics":["algernon","build-less","cross-platform","fasthttp","go","http3","live-reload","local-llm","lua","mysql","npm-less","ollama","pongo2","postgresql","quic","react19","redis","server-sent-events","sqlite","tls13"],"archived":false,"github_pushed_at":"2026-09-18T13:15:12+00:00","maintenance_label":"Very active","stars_delta_30d":3,"url":"https://www.graphcanon.com/tools/xyproto-algernon","markdown_url":"https://www.graphcanon.com/tools/xyproto-algernon.md","api_url":"https://www.graphcanon.com/api/graphcanon/tools/xyproto-algernon","graph_url":"https://www.graphcanon.com/api/graphcanon/graph?tool=xyproto-algernon","description":"Small self-contained pure-Go web server with Lua, Teal, Markdown, HTTP/2, QUIC, Redis, TypeScript, npm-less React 19, SQLite, and PostgreSQL support ++","homepage_url":"https://algernon.roboticoverlords.org","license":"BSD-3-Clause","open_issues":19,"watchers":49,"ai_summary":"Algernon is a lightweight server written in Go that supports multiple languages and databases.","readme_excerpt":"Web server with built-in support for HTTP/2, HTTP/3 (QUIC), Lua, Teal, Markdown, Pongo2, HyperApp, Amber, Sass(SCSS), GCSS, JSX, TypeScript, Ollama (LLMs), BoltDB (built-in, stores the database in a file, like SQLite), Redis, Valkey, PostgreSQL, SQLite, MariaDB, MySQL, MSSQL, IPv6, npm-less React 19, rate limiting, graceful shutdown, plugins, users and permissions.\n\nAll in one small self-contained executable.\n\nDistro Packages\n---------------\n\n\n\nQuick installation\n------------------\n\nRequires Go 1.26 or later.\n\n    go install github.com/xyproto/algernon@latest\n\nOr manually (development version):\n\n```\ngit clone https://github.com/xyproto/algernon\ncd algernon\ngo build -mod=vendor\n./welcome.sh\n```\n\nReleases and pre-built images\n-----------------------------\n\nSee the [release](https://github.com/xyproto/algernon/releases/latest) page for releases for a variety of platforms and architectures.\n\n\nGetting Started\n---------------\n\nSee [TUTORIAL.md](TUTORIAL.md).\n\nDocker\n------\n\nThe [Docker image](https://hub.docker.com/r/xyproto/algernon/tags) is less than 17MB and can be tried out (on `x86_64`) with:\n\n```\nmkdir localhost\necho 'hi!' > localhost/index.md\ndocker run -it -p4000:4000 -v .:/srv/algernon xyproto/algernon\n```\n\nAnd then visiting `http://localhost:4000` in a browser.\n\nTechnologies\n------------\n\nWritten in [Go](https://golang.org). Uses [Bolt](https://github.com/coreos/bbolt) (built-in), [MySQL](https://github.com/go-sql-driver/mysql), [PostgreSQL](https://www.postgresql.org/), SQLite or Valkey/[Redis](https://redis.io) (recommended) for the database backend, [permissions2](https://github.com/xyproto/permissions2) for handling users and permissions, [gopher-lua](https://github.com/yuin/gopher-lua) for interpreting and running Lua, optional [Teal](https://github.com/teal-language/tl) for type-safe Lua scripting, [http2](https://github.com/bradfitz/http2) for serving HTTP/2, [quic-go](https://github.com/quic-go/quic-go) for serving QUIC, [gomarkdown/markdown](https://github.com/gomarkdown/markdown) for Markdown rendering, [amber](https://github.com/eknkc/amber) for Amber templates, [Pongo2](https://github.com/flosch/pongo2) for Pongo2 templates, [Sass](https://github.com/wellington/sass)(SCSS) and [GCSS](https://github.com/yosssi/gcss) for CSS preprocessing. [logrus](https://github.com/Sirupsen/logrus) is used for logging, [esbuild](https://github.com/evanw/esbuild) for bundling and converting JSX/TSX to JavaScript, [tollbooth](https://github.com/didip/tollbooth) for rate limiting and [pie](https://github.com/natefinch/pie) for plugins.\n\nDesign decisions\n----------------\n\n* HTTP/2 over SSL/TLS (https) is used by default, if a certificate and key is given.\n  * If not, regular HTTP is used.\n* HTTP/3 (QUIC) can be enabled with a flag.\n* /data and /repos have user permissions, /admin has admin permissions and / is public, by default. This is configurable.\n* The following filenames are special, in prioritized order:\n    * index.lua is Lua code that is interpreted as a handler function for the current directory.\n    * index.html is HTML that is outputted with the correct Content-Type.\n    * index.md is Markdown code that is rendered as HTML.\n    * index.txt is plain text that is outputted with the correct Content-Type.\n    * index.pongo2, index.po2 or index.tmpl is Pongo2 code that is rendered as HTML.\n    * index.amber is Amber code that is rendered as HTML.\n    * index.hyper.js, index.hyper.jsx or index.happ is JSX+HyperApp code that is rendered as HTML.\n    * index.jsx is a React JSX/JavaScript file that is rendered as HTML with bundled JavaScript.\n    * index.tsx is a React TSX/TypeScript file that is rendered as HTML with bundled JavaScript.\n    * index.tl is Teal code that is interpreted as a handler function for the current directory.\n    * index.prompt is a content-type, an Ollama model, a blank line and a prompt, for generating content with LLMs.\n    * data.lua is Lua code, where the functions and variables are made available fo","github_created_at":"2015-03-10T11:25:30+00:00","created_at":"2026-07-15T10:58:15.293095+00:00","updated_at":"2026-09-20T04:59:25.133469+00:00","categories":[{"slug":"developer-tools","name":"Developer Tools","url":"https://www.graphcanon.com/categories/developer-tools","markdown_url":"https://www.graphcanon.com/categories/developer-tools.md","api_url":"https://www.graphcanon.com/api/graphcanon/categories/developer-tools"}],"tags":[{"slug":"go","name":"go"},{"slug":"http-2","name":"http/2"},{"slug":"lua","name":"lua"},{"slug":"ollama","name":"ollama"},{"slug":"postgresql","name":"postgresql"},{"slug":"quic","name":"quic"},{"slug":"redis","name":"redis"},{"slug":"sqlite","name":"sqlite"}],"trust":{"provenance":{"is_fork":false,"github_id":31953662,"owner_type":"User","methodology":"github_public_v1","parent_repo":null,"near_duplicate_slugs":[]},"computed_at":"2026-09-20T04:59:22.740Z","maintenance":{"label":"Very active","score":96,"methodology":"github_public_v1","releases_90d":2,"days_since_push":1,"last_release_at":"2026-07-26T13:55:59Z","stars_delta_30d":3,"open_issues_delta_30d":0},"security_summary":{"status":"no_lockfile","scanner":null,"low_count":0,"high_count":0,"last_scan_at":"2026-07-15T10:58:16.514Z","medium_count":0,"scan_profile":"none","critical_count":0}},"capability_facts":{"scan":{"source":"repo_scan","observed_at":"2026-09-20T04:59:23.767Z"},"languages":{"value":["javascript"],"source":"github.language","observed_at":"2026-09-20T04:59:23.767Z"},"license_spdx":{"value":"BSD-3-Clause","source":"github.license","observed_at":"2026-09-20T04:59:23.767Z"}},"decision_facts":{"hosting":null,"pricing":null,"requirements":null,"constraints":null,"when_to_use":["For quick development of cross-platform applications leveraging Go and TypeScript","When live-reload feature is required during the early stages of application development"],"when_not_to_use":["In scenarios where extensive documentation or complex setup procedures are expected, as Algernon offers a minimalist approach without comprehensive guides","If project requires MySQL support because Algernon specifically supports PostgreSQL and SQLite but not MySQL"],"source":"enrich:decision_facts","observed_at":"2026-07-17T10:12:54.612Z"},"constraint_facets":null,"decision_summary":[{"label":"Adopt for","value":"Algernon is a lightweight pure-Go web server that supports Lua, Teal, Markdown, HTTP/2, QUIC among other technologies, suitable for developers needing fast local server setup with multiple language and database support."}]}}