{"id":35211862,"url":"https://github.com/perber/leafwiki","last_synced_at":"2026-04-06T22:02:48.715Z","repository":{"id":293125606,"uuid":"954943274","full_name":"perber/leafwiki","owner":"perber","description":"LeafWiki – A fast wiki for people who think in folders, not feeds. Fast editing. Tree navigation. Markdown on disk. Single Go binary.","archived":false,"fork":false,"pushed_at":"2026-04-03T16:25:52.000Z","size":6089,"stargazers_count":77,"open_issues_count":19,"forks_count":18,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-04-03T17:26:41.139Z","etag":null,"topics":["docker","documentation","file-based","go","knowledge-base","markdown","react","runbooks","self-hosted","single-binary","sqlite","wiki"],"latest_commit_sha":null,"homepage":"https://demo.leafwiki.com","language":"Go","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/perber.png","metadata":{"files":{"readme":"readme.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":"CODEOWNERS","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":"2025-03-25T21:24:11.000Z","updated_at":"2026-04-03T15:08:01.000Z","dependencies_parsed_at":"2026-02-11T19:03:11.375Z","dependency_job_id":null,"html_url":"https://github.com/perber/leafwiki","commit_stats":null,"previous_names":["perber/leafwiki"],"tags_count":38,"template":false,"template_full_name":null,"purl":"pkg:github/perber/leafwiki","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/perber%2Fleafwiki","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/perber%2Fleafwiki/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/perber%2Fleafwiki/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/perber%2Fleafwiki/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/perber","download_url":"https://codeload.github.com/perber/leafwiki/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/perber%2Fleafwiki/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31491097,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-06T17:22:55.647Z","status":"ssl_error","status_checked_at":"2026-04-06T17:22:54.741Z","response_time":112,"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":["docker","documentation","file-based","go","knowledge-base","markdown","react","runbooks","self-hosted","single-binary","sqlite","wiki"],"created_at":"2025-12-29T19:01:32.966Z","updated_at":"2026-04-06T22:02:48.708Z","avatar_url":"https://github.com/perber.png","language":"Go","readme":"# 🌿 LeafWiki\n\n**LeafWiki – A fast wiki for people who think in folders, not feeds**  \nFast editing. Explicit tree navigation. Markdown stored on disk. Single Go binary.\n\nLeafWiki is a lightweight wiki for runbooks, internal docs, and technical notes. It combines fast writing, structured navigation, and search in a focused app, while keeping your content portable as plain Markdown files on disk.\n\nIf you want something lighter than a large wiki platform, but more structured than scattered notes, LeafWiki sits in that gap.\n\n---\n\n## Live Demo\n\nA public demo of LeafWiki is available here:\n\n🌐 **[demo.leafwiki.com](https://demo.leafwiki.com)**  \n\nTry: `Ctrl+E` to edit, `Ctrl+S` to save, `Ctrl+Shift+F` to open the search.  \n\nLogin credentials are displayed on the demo site.  \nThe demo instance resets automatically every hour, so all changes are temporary.\n\n---\n\n## Preview\n\n![LeafWiki](./assets/preview.png)\n\n---\n\n**Mobile View:**\n\nMobile-friendly UI for reading (and editing) docs \u0026 runbooks on the go.\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"./assets/mobile-editor.png\" width=\"260\" /\u003e\n  \u003cimg src=\"./assets/mobile-pageview.png\" width=\"260\" /\u003e\n  \u003cimg src=\"./assets/mobile-navigation.png\" width=\"260\" /\u003e\n\u003c/p\u003e\n\n---\n\n## What LeafWiki is good for today\n\nLeafWiki focuses on personal and small-team documentation use cases today.\nIt is designed for teams that want a focused documentation app with clear structure, fast editing, and full control over their data without taking on the weight of a larger platform.\n\nLeafWiki is currently well-suited for:\n- Personal technical notes and documentation\n- Project documentation maintained by one main contributor\n- Runbooks, operational knowledge and engineering guides for small teams\n- Structured content that benefits from explicit hierarchy and ordering\n\n---\n\n## Project Status\n\nLeafWiki is stable for everyday use as a personal or primary-owner wiki.  \nThe core features — writing, navigation, and search — are actively maintained and production-ready.\n\nCollaboration is currently limited and follows a *last-write-wins* approach.  \nMore advanced team-oriented capabilities are under development, with a focus on durability and predictable behavior.\n\n\n**Current priorities:**  \n- Versioning\n- Importing existing Markdown content\n- Conflict handling for concurrent edits (optimistic locking)\n\nPriorities are shaped by real-world usage, and development is iterative.\nThe platform will evolve cautiously toward team workflows while maintaining its principles of simplicity and low operational overhead.\n\n\u003e **LeafWiki** is actively developed and open to collaboration 🌿 \n\nSee the [CHANGELOG](CHANGELOG.md) for release details.\n\n---\n\n## Why Another Wiki?\n\nMost wiki tools become projects of their own: databases to manage, plugins to maintain, workflows to configure, and too many setup decisions for a system that should just help you write, navigate, and find information.\n\nLeafWiki takes a narrower view:\n- Provide a focused documentation app instead of a sprawling platform\n- Make structure explicit instead of inferred\n- Keep content portable as plain Markdown on disk\n- Stay easy to self-host and easy to understand\n- Avoid turning documentation into platform maintenance\n\nIn practice, that means:\n- A dedicated app for writing, reading, and organizing docs\n- Explicit tree structure\n- Markdown stored on disk\n- Single-binary or container deployment\n- Minimal operational overhead\n\n---\n\n## Core principles\n\nLeafWiki is built around a small set of clear principles:\n\n- **App-first, file-backed**  \n  LeafWiki is built as a documentation app with its own navigation, editing, and search experience while keeping content stored as plain Markdown files on disk.\n\n- **No external database required**  \n  LeafWiki uses SQLite internally and does not require running or managing a separate database service.\n\n- **Explicit structure management**  \n  Structure is derived from the filesystem layout and persisted metadata files while page content stays plain Markdown.\n\n- **Self-hosted by design**\n  Designed to run on a single server with minimal operational overhead.\n\n---\n\n### Data model\n\nLeafWiki stores page content as Markdown files on disk.\nNavigation is reconstructed from the filesystem layout, child ordering is stored in `.order.json`, and search uses SQLite.\nFor details on the current model and its constraints, see [Known limitations](#known-limitations).\n\n---\n\n## What LeafWiki supports\n\n- **Fast writing flow with editor shortcuts**\n- **Explicit tree navigation instead of flat note lists**\n- **Public read-only docs with authenticated editing**\n- Built-in Markdown editor with live preview\n- Full-text search across page titles and content\n- Image and asset support\n- Support for diagrams via Mermaid\n- Brand customization such as logo, favicon, and site name\n- Separation between admin, editor, and viewer users\n- Dark mode and mobile-friendly UI\n- Keyboard shortcuts for common actions such as save and search\n\n\n## What LeafWiki is not\n\n- Not a Confluence replacement\n- Not real-time collaborative editing\n- Not a workflow, approval, or document-control platform\n\nLeafWiki is designed to stay focused, predictable, and easy to operate.\n\n---\n\n## Installation\n\nLeafWiki is distributed as a single Go binary and can be run directly on the host or via Docker.\nThe sections below show a recommended quick start and a few common installation examples.\n\n### Quick start\n\nThe easiest way to install LeafWiki is using the provided installation script:\n\n```bash\nsudo /bin/bash -c \"$(curl -fsSL https://raw.githubusercontent.com/perber/leafwiki/main/install.sh)\"\n```\n\nThis installs LeafWiki as a system service on the target machine.\nThe service is started automatically after installation.\n\u003e The installation script has been tested on Ubuntu.\n\u003e Feedback for other distributions is welcome via GitHub issues.\n\n#### Deployment examples \n- [Install LeafWiki with nginx on Ubuntu](docs/install/nginx.md)\n- [Install LeafWiki on a Raspberry Pi](docs/install/raspberry.md)\n\n\n#### Security notes\nIn interactive mode, environment variables appear in plain text in file `/etc/leafwiki/.env`.\nMake sure that this file is accessible only to authorized users.\n\n#### Installer script options\n\n**Non-interactive mode**\n\nThe script supports non-interactive mode for automated deployments. Use the `--non-interactive` flag and provide configuration via an `.env` file.\n\nAn `.env.example` file is included showing all available environment variables. Copy and customize it as needed:\n\n```bash\ncp .env.example .env\n# Edit .env with your configuration\nsudo ./install.sh --non-interactive --env-file ./.env\n```\n\n### Docker\n\nYou can run LeafWiki as a container using Docker.\n\n```bash\ndocker run -p 8080:8080 \\\n    -v ~/leafwiki-data:/app/data \\\n    ghcr.io/perber/leafwiki:latest \\\n    --jwt-secret=yoursecret \\\n    --admin-password=yourpassword \\\n    --allow-insecure=true\n```\n\nBy default, the container binds to `0.0.0.0` so the wiki is reachable from your network.\nThe data directory inside the container is `/app/data`.\nThe example above exposes LeafWiki over plain HTTP on port `8080`, so `--allow-insecure=true` is required for login cookies to work.\nIf you serve LeafWiki behind HTTPS or a reverse proxy that forwards HTTPS headers, omit `--allow-insecure=true`.\n\n---\n\n**Running as non-root user**\nTo avoid running the container as root, specify a user ID:\n\n```bash\ndocker run -p 8080:8080 \\\n    -u 1000:1000 \\\n    -v ~/leafwiki-data:/app/data \\\n    ghcr.io/perber/leafwiki:latest \\\n    --jwt-secret=yoursecret \\\n    --admin-password=yourpassword \\\n    --allow-insecure=true\n```\n\nMake sure that the mounted data directory is writable by the specified user.\n\nThe data directory inside the container will be `/app/data`..\n\n---\n\n### Docker Compose\n\nYou can also run LeafWiki using Docker Compose:\n\n```yaml\nservices:\n  leafwiki:\n    image: ghcr.io/perber/leafwiki:latest\n    container_name: leafwiki\n    user: 1000:1000  # Run as non-root (specify your {UID}:{GID})\n    ports:\n      - \"8080:8080\"\n    environment:\n      - LEAFWIKI_JWT_SECRET=yourSecret\n      - LEAFWIKI_ADMIN_PASSWORD=yourPassword\n      - LEAFWIKI_ALLOW_INSECURE=true  # WARNING: Enables HTTP by disabling Secure/HttpOnly cookies; for HTTPS deployments, omit this variable. HTTPS is the preferred method.\n    volumes: \n      - ~/leafwiki-data:/app/data\n    restart: unless-stopped\n```\n\nMake sure the mounted data directory (`~/leafwiki-data`) is writable by the user specified in the `user` field.\n\n### Manual installation\n\nDownload the latest release binary from GitHub, make it executable, and start the server:\n\n```\nchmod +x leafwiki\n./leafwiki --jwt-secret=yoursecret --admin-password=yourpassword --allow-insecure=true\n```\n\n**Note:** By default, the server listens on `127.0.0.1`, which means it will only be accessible from localhost. If you want to access the server from other machines on your network, add `--host=0.0.0.0` to the command:\n\n```\n./leafwiki --jwt-secret=yoursecret --admin-password=yourpassword --host=0.0.0.0 --allow-insecure=true\n```\n\nDefault port is `8080`, and the default data directory is `./data`.\nYou can change the data directory with the `--data-dir` flag.\n\nThe JWT secret is required for authentication and should be kept secure.\nFor plain HTTP setups such as localhost testing or direct LAN access, `--allow-insecure=true` is required so the browser accepts login and CSRF cookies.\nWhen LeafWiki is served over HTTPS, leave `--allow-insecure` disabled.\n\n\n## Authentication and admin user\n\n### Reset Admin Password\nIf you need to reset the admin password, you can do so by running:\n\n```bash\n./leafwiki reset-admin-password\n```\n\n## Runtime Configuration\n\nLeafWiki can be configured using command-line flags or environment variables.\nThese options control how the server runs after installation.\n\n### CLI Flags\n\n| Flag                            | Description                                                            | Default       | Available since   |\n|---------------------------------|------------------------------------------------------------------------|---------------|-------------------|\n| `--jwt-secret`                  | Secret used for signing JWTs (required)                                | –             | –                 |\n| `--host`                        | Host/IP address the server binds to                                    | `127.0.0.1`   | –                 |\n| `--port`                        | Port the server listens on                                             | `8080`        | –                 |\n| `--data-dir`                    | Directory where data is stored                                         | `./data`      | –                 |\n| `--admin-password`              | Initial admin password *(used only if no admin exists)* (required)     | –             | –                 |\n| `--public-access`               | Allow public read-only access                                          | `false`       | –                 |\n| `--hide-link-metadata-section`  | Hide link metadata section                                             | `false`       | –                 |\n| `--inject-code-in-header`       | Raw HTML/JS code injected into \u003chead\u003e tag (e.g., analytics, custom CSS)| `\"\"`          | v0.6.0            |\n| `--custom-stylesheet`           | Path to a `.css` file inside the data dir, served publicly as `/custom.css` or `${base-path}/custom.css` | `\"\"`          | next release      |\n| `--allow-insecure`              | ⚠️ Allows insecure HTTP usage for auth cookies (required for plain HTTP) | `false`       | v0.7.0            |\n| `--access-token-timeout`        | Access token timeout duration (e.g. 24h, 15m)                          | `15m`         | v0.7.0            |\n| `--refresh-token-timeout`       | Refresh token timeout duration (e.g. 168h, 7d)                         | `7d`          | v0.7.0            |\n| `--disable-auth`                | ⚠️ Disable authentication \u0026 authorization (internal networks only!)    | `false`       | v0.7.0            |\n| `--base-path`                   | URL prefix when served behind a reverse proxy (e.g. /wiki)              | `\"\"`        | v0.8.2            |\n| `--max-asset-upload-size`       | Maximum size for asset uploads (e.g. `50MiB`, `50MB`, `52428800`)      | `50MiB`       | v0.8.5            |\n\n\n\u003e When using the official Docker image, `LEAFWIKI_HOST` defaults to `0.0.0.0` if neither a `--host` flag nor `LEAFWIKI_HOST` is provided, as the container entrypoint sets this automatically.\n\n### Environment Variables\n\nThe same configuration options can also be provided via environment variables.\nThis is especially useful in containerized or production environments.\n\n| Variable                               | Description                                                             | Default    | Available since |\n|----------------------------------------|-------------------------------------------------------------------------|------------|-----------------|\n| `LEAFWIKI_HOST`                        | Host/IP address the server binds to                                     | `127.0.0.1`| -               |\n| `LEAFWIKI_PORT`                        | Port the server listens on                                              | `8080`     | -               |\n| `LEAFWIKI_DATA_DIR`                    | Path to the data storage directory                                      | `./data`   | -               |\n| `LEAFWIKI_ADMIN_PASSWORD`              | Initial admin password *(used only if no admin exists yet)* (required)  | –          | -               |\n| `LEAFWIKI_JWT_SECRET`                  | Secret used to sign JWT tokens *(required)*                             | –          | -               |\n| `LEAFWIKI_PUBLIC_ACCESS`               | Allow public read-only access                                           | `false`    | -               |\n| `LEAFWIKI_HIDE_LINK_METADATA_SECTION`  | Hide link metadata section                                              | `false`    | -               |\n| `LEAFWIKI_INJECT_CODE_IN_HEADER`       | Raw HTML/JS code injected into \u003chead\u003e tag (e.g., analytics, custom CSS) | `\"\"`       | v0.6.0          |\n| `LEAFWIKI_CUSTOM_STYLESHEET`           | Path to a `.css` file inside the data dir, served publicly as `/custom.css` or `${LEAFWIKI_BASE_PATH}/custom.css` | `\"\"`       | next release   |\n| `LEAFWIKI_ALLOW_INSECURE`              | ⚠️ Allows insecure HTTP usage for auth cookies (required for plain HTTP) | `false`    | v0.7.0          |\n| `LEAFWIKI_ACCESS_TOKEN_TIMEOUT`        | Access token timeout duration (e.g. 24h, 15m)                           | `15m`      | v0.7.0          |\n| `LEAFWIKI_REFRESH_TOKEN_TIMEOUT`       | Refresh token timeout duration (e.g. 168h, 7d)                          | `7d`       | v0.7.0          |\n| `LEAFWIKI_DISABLE_AUTH`                | ⚠️ Disable authentication \u0026 authorization (internal networks only!)     | `false`    | v0.7.0          |\n| `LEAFWIKI_BASE_PATH`                   | URL prefix when served behind a reverse proxy (e.g. /wiki)              | `\"\"`       | v0.8.2          |\n| `LEAFWIKI_MAX_ASSET_UPLOAD_SIZE`       | Maximum size for asset uploads (e.g. `50MiB`, `50MB`, `52428800`)       | `50MiB`    | v0.8.5          |\n\n\nThese environment variables override the default values and are especially useful in containerized or production environments.\n\n\u003e When using the official Docker image, `LEAFWIKI_HOST` defaults to `0.0.0.0` if neither a `--host` flag nor `LEAFWIKI_HOST` is provided, as the container entrypoint sets this automatically.\n\n### Custom Stylesheet\n\nThe custom stylesheet feature is not part of `v0.8.4` yet.\nIt will be available in the next release.\n\nTo use it, place a `.css` file inside your configured data directory and pass its path via `--custom-stylesheet` or `LEAFWIKI_CUSTOM_STYLESHEET`.\n\nExample:\n\n```bash\n./leafwiki \\\n  --data-dir=./data \\\n  --custom-stylesheet=custom.css \\\n  --jwt-secret=yoursecret \\\n  --admin-password=yourpassword\n```\n\nWith the example above:\n\n- The file must exist at `./data/custom.css`\n- Without a base path, it is served as `/custom.css`\n- With `--base-path=/wiki`, it is served as `/wiki/custom.css`\n- The stylesheet endpoint is publicly accessible\n\n### Security Overview - Since v0.7.0\n\nLeafWiki includes several built-in security mechanisms enabled by default:\n\n- **Secure, HttpOnly cookies** for session handling\n- **Session-based authentication** backed by a local database\n- **CSRF protection** for all state-changing requests\n- **Rate limiting** on authentication-related endpoints\n- **Role-based access** (admin, editor, viewer)\n\nThese features are **enabled by default** and provide safe defaults for most deployments.\n\n⚠️ Disabling or weakening these protections (e.g. via `--disable-auth` or `--allow-insecure`)\nshould only be done in **trusted, internal environments**.\n\n---\n\n### ⚠️ Security Warning: `--disable-auth`\n\n\u003e **⚠️ WARNING – USE WITH EXTREME CAUTION**\n\nThe `--disable-auth` flag **completely disables authentication and authorization** in LeafWiki.\n\nWhen enabled:\n- **Anyone with network access can edit, delete and modify all content**\n- **No login, no roles, no session checks are enforced**\n- **All security mechanisms are bypassed**\n\n**This flag MUST NOT be used on public or internet-facing deployments.**\n\n**Intended use cases only:**\n- Local development\n- Internal networks\n- Environments protected by VPN and/or firewall\n- Fully isolated test systems\n\nIf you use this flag, **you are fully responsible for securing access at the network level**.\n\n**Safe example (local development only):**\n\n```bash\n./leafwiki --disable-auth --host=127.0.0.1\n```\n\n**For most setups, prefer:**\n- Authentication enabled (default)\n- `--public-access` for read-only public access\n- Viewer role for read-only access\n\n---\n\n## Import Feature \n\nLeafWiki includes a built-in Markdown Importer that allows you to import existing Markdown files and folders into the wiki structure.\nThe importer is available as admin in the UI and can be used to quickly bring existing documentation into LeafWiki.\n\nAt the moment the importer does not support all features of the wiki (e.g. metadata, backlinks, assets, ...) but it provides a fast way to get started with existing Markdown content.\n\nPlease open an issue if you have specific feature requests or feedback for the importer.\n\n---\n\n## Quick Start (Dev)\n\n```\n# 1. Clone the repo\n\ngit clone https://github.com/perber/leafwiki.git\ncd leafwiki\n\n# 2. Install frontend dependencies\n\ncd ui/leafwiki-ui\nnpm install\nnpm run dev   # Starts Vite dev server on http://localhost:5173\n\n# 3. In another terminal, start the backend\n\ncd ../../cmd/leafwiki\n\ngo run main.go --jwt-secret=yoursecret --allow-insecure=true --admin-password=yourpassword\n\n# Note: The backend binds to 127.0.0.1 by default for security.\n# If you need to access it from a different machine or network interface\n# (e.g., testing on mobile or from another device), use:\n# go run main.go --host=0.0.0.0\n\n```\n\n---\n\n### Keyboard Shortcuts\n\n| Action                     | Shortcut                                   |\n|----------------------------|--------------------------------------------|\n| Switch to Edit Mode        | `Ctrl + E` (or `Cmd + E`)                  |\n| Go to Page                | `Ctrl + Alt + P` (or `Cmd + Option + P`)   |\n| Switch to Search Pane      | `Ctrl + Shift + F` (or `Cmd + Shift + F`)  |\n| Switch to Navigation Pane  | `Ctrl + Shift + E` (or `Cmd + Shift + E`)  |\n| Save Page                  | `Ctrl + S` (or `Cmd + S`)                  |\n| Bold Text                  | `Ctrl + B` (or `Cmd + B`)                  |\n| Italic Text                | `Ctrl + I` (or `Cmd + I`)                  |\n| Headline 1                 | `Ctrl + Alt + 1` (or `Cmd + Alt + 1`)      |\n| Headline 2                 | `Ctrl + Alt + 2` (or `Cmd + Alt + 2`)      |\n| Headline 3                 | `Ctrl + Alt + 3` (or `Cmd + Alt + 3`)      |\n\n`Ctrl+V` / `Cmd+V` for pasting images or files is also supported in the editor.\n`Esc` can be used to exit modals, dialogs or the edit mode.\n\nMore shortcuts may be added in future releases.\n\n---\n\n## Known limitations\n\nLeafWiki focuses on simplicity with a well-defined scope.  \nAs a result, the following limitations apply today:\n\n- **No built-in page history or versioning**  \n  Saving changes overwrites the previous state. Versioning is a planned feature.\n\n- **Basic concurrency handling**  \n  Edits follow a last-write-wins model. Best suited for single maintainers or low-concurrency use.\n\n- **Metadata not fully embedded in Markdown**  \n  Page content is plain Markdown, but ordering metadata, user accounts, and search indexes are stored outside the page body.\n\n- **Minimal access control**  \n  No role-based permissions or fine-grained restrictions at this time.\n\n---\n\n### Available Builds\n\nLeafWiki is available as a native binary for the following platforms:\n\n- **Linux (x86_64 and ARM64)**\n- **macOS (x86_64 and ARM64)**\n- **Windows (x86_64)**\n- **Raspberry Pi (tested with 64-bit OS)**\n\n---\n\n## Contributing\n\nContributions, discussions, and feedback are very welcome.  \nIf you have ideas, questions, or run into issues, feel free to open an issue or start a discussion.\n\n## Stay in the loop\n\nFollow the repository to get updates about new releases and ongoing development.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fperber%2Fleafwiki","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fperber%2Fleafwiki","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fperber%2Fleafwiki/lists"}