{"id":15029226,"url":"https://github.com/imvexed/muon","last_synced_at":"2025-10-09T11:44:51.596Z","repository":{"id":43801696,"uuid":"211175643","full_name":"ImVexed/muon","owner":"ImVexed","description":"GPU based Electron on a diet","archived":false,"fork":false,"pushed_at":"2023-03-15T06:02:13.000Z","size":143324,"stargazers_count":2934,"open_issues_count":26,"forks_count":66,"subscribers_count":43,"default_branch":"master","last_synced_at":"2025-10-01T05:25:00.065Z","etag":null,"topics":["cross-platform","desktop","electron","hacktoberfest"],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ImVexed.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,"governance":null}},"created_at":"2019-09-26T20:26:52.000Z","updated_at":"2025-09-29T08:07:10.000Z","dependencies_parsed_at":"2023-02-08T09:45:51.085Z","dependency_job_id":"95e32591-56ec-49fb-8bda-861c2f48e4ac","html_url":"https://github.com/ImVexed/muon","commit_stats":{"total_commits":66,"total_committers":5,"mean_commits":13.2,"dds":0.5757575757575757,"last_synced_commit":"63fb5c0bb88207f6a9d76138097354b8bf7b7a69"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/ImVexed/muon","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ImVexed%2Fmuon","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ImVexed%2Fmuon/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ImVexed%2Fmuon/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ImVexed%2Fmuon/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ImVexed","download_url":"https://codeload.github.com/ImVexed/muon/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ImVexed%2Fmuon/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279001300,"owners_count":26083059,"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-09T02:00:07.460Z","response_time":59,"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":["cross-platform","desktop","electron","hacktoberfest"],"created_at":"2024-09-24T20:10:00.584Z","updated_at":"2025-10-09T11:44:51.564Z","avatar_url":"https://github.com/ImVexed.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\r\n\u003cimg width=\"200\" height=\"200\" src=\"./logo.svg\" alt=\"gnet\"\u003e\r\n\u003cbr /\u003e \u003cbr /\u003e\r\n\u003ca title=\"Go Report Card\" target=\"_blank\" href=\"https://goreportcard.com/report/github.com/ImVexed/muon\"\u003e\u003cimg src=\"https://goreportcard.com/badge/github.com/ImVexed/muon?style=flat-square\"\u003e\u003c/a\u003e\r\n\u003cimg alt=\"GitHub code size in bytes\" src=\"https://img.shields.io/github/languages/code-size/ImVexed/muon?style=flat-square\"\u003e\r\n\u003cbr/\u003e\r\n\u003ca target=\"_blank\" href=\"https://gowalker.org/github.com/ImVexed/muon\"\u003e\u003cimg src=\"https://img.shields.io/badge/api-reference-blue.svg?style=flat-square\"\u003e\u003c/a\u003e\r\n\u003c/p\u003e\r\n\r\n----\r\n\r\n`Muon` is a lightweight alternative to Electron written in Golang in about ~300 LoC, using Ultralight instead of Chromium. [Ultralight](https://ultralig.ht/) is a cross-platform WebKit rewrite using the GPU to target embedded desktop applications that resulted in a fast, lightweight, and low-memory HTML UI solution that blends the power of Chromium with the small footprint of Native UI.\r\n\r\n\r\n# Features\r\n\r\n- Full JS to Go interop\r\n- GPU based rendering\r\n- Cross-platform\r\n- Hot-reloading\r\n- Superior disk size + memory \u0026 cpu usage\r\n\r\nComparison with a \"Hello, World!\" React App\r\n\r\n|      | Muon    | Electron |\r\n|:----:|---------|----------|\r\n| CPU  | 0.0%    | 1.2%     |\r\n| MEM  | 26.0 MB | 201.7 MB |\r\n| DISK | 42 MB   | 136 MB   |\r\n\r\n# Example\r\n\r\nFrom `examples/create-react-app/main.go`:\r\n```go\r\npackage main\r\n\r\nimport (\r\n  \"github.com/ImVexed/muon\"\r\n\r\n  \"cra-go/webfiles\"\r\n  \"net/http\"\r\n)\r\n\r\nfunc main() {\r\n  // Any static asset packer of your liking (ex. fileb0x)\r\n  fileHandler := http.FileServer(webfiles.HTTP)\r\n\r\n  cfg := \u0026muon.Config{\r\n    Title:      \"Hello, World!\",\r\n    Height:     500,\r\n    Width:      500,\r\n    Titled:     true,\r\n    Resizeable: true,\r\n  }\r\n\r\n  m := muon.New(cfg, fileHandler)\r\n\r\n  // Expose our `add` function to the JS runtime\r\n  m.Bind(\"add\", add)\r\n\r\n  // Show the Window and start the Runtime\r\n  if err := m.Start(); err != nil {\r\n    panic(err)\r\n  }\r\n}\r\n\r\n// Muon automatically handles interop to and from the JS runtime\r\nfunc add(a float64, b float64) float64 {\r\n  return a + b\r\n}\r\n```\r\n\r\n# FAQ\r\n\r\n## Q: *How are JS types translated to Go types?*\r\n- JS: `Boolean` Go: `bool`\r\n- JS: `Number`  Go: `float64`\r\n- JS: `String`  Go: `string`\r\n- JS: `Object`  Go: `struct` via JSON\r\n\r\n## Q: *How do I setup Ultralight?*\r\n- See our [getting started guide](https://github.com/ImVexed/muon/blob/master/getting-started.md)\r\n\r\n## Q: *Is there perfect Chrome or Firefox feature parity?*\r\n- No, see [Missing Ultralight Features](https://github.com/ultralight-ux/Ultralight/issues/178)\r\n\r\n## Q: *How do I get rid of the Console on Windows?*\r\n- Add `-ldflags -H=windowsgui` to either your `go build` or `go run` to get rid of the window.\r\n\r\n## Q: *I get `exit status 3221225781`*\r\n- Your program likely can't find the Ultralight libraries. Ensure they're either installed on the system, or, in the same folder as your program. Currently, Muon uses the 1.1 Ultralight pre-release that hasn't yet propagated to their main site and can only be downloaded from the [Ultralight](https://github.com/ultralight-ux/Ultralight#getting-the-latest-sdk) github repo.\r\n\r\n## Q: *I get ` libWebCore.so: cannot open shared object file`*\r\n- If you're attempting to load the libraries out of the same directory as your program add `-ldflags \"-r .\"` to your `go build` to set `rpath` to the local directory for library resolution.\r\n\r\n## Q: *I get `symbol not found: ulCreateSettings`*\r\n- This likely means you're not using the 1.1 Ultralight pre-release which can be downloaded only from their [GitHub Repo](https://github.com/ultralight-ux/Ultralight#getting-the-latest-sdk) for now\r\n## Q: *How do I compile for x86?*\r\n- Currently, Ultralight only supports Windows for x86. Ensure you have a 32-bit `gcc` in your path, and ensure you have `CGO_ENABLED=1` and `GOARCH=386` environment variables set.\r\n\r\n# Licensing\r\nWhile muon itself is MIT licensed, [Ultralight](https://ultralig.ht/) is not. \r\n```\r\nUltralight is free for non-commercial use, educational use, \r\nand also free for commercial use by small indie developers making\r\nless than US$100,000 a year. You can find full terms in the SDK. \r\nPricing plans for larger commercial projects will be announced later.\r\n```\r\nTheir specific license terms can be found [here](https://github.com/ultralight-ux/Ultralight/tree/master/license).\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fimvexed%2Fmuon","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fimvexed%2Fmuon","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fimvexed%2Fmuon/lists"}