An extensible, general purpose http->gemini mirror with full javascript support, live at gemini://
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
sose 451bd64751 formatting 5 months ago
sigils first commit 5 months ago
.gitignore remove testing tls keys 5 months ago first commit 5 months ago
hellgate.js properly decode target url 5 months ago
license first commit 5 months ago
mandatory-js-project-logo.png first commit 5 months ago
package-lock.json first commit 5 months ago
package.json first commit 5 months ago
preload.js formatting 5 months ago configurable ports 5 months ago first commit 5 months ago

hellgate logo a complete web-to-gemini proxy


  • nodejs
  • npm
  • electron
  • openssh
  • sh
  • libgtk-2-0
  • libgconf-2-4
  • xvfb (if you're running it headless)


  • sudo apt install libgtk2.0-0 libgconf-2-4 (if you're on debian, other distros idk)
  • sudo apt install xvfb (again, on debian)
  • git clone
  • cd hellgate
  • sudo npm install -g electron --unsafe-perm=true
  • npm install
  • ./gen_cert
  • npm start or xvfb-run npm start
    • the server will listen on localhost

what is this?

  • hellgate is a web browser with a gemini server attached
  • ask the server for a webpage and it will access it, render it, and send it to you in gemtext format

why not just use curl and convert the html to gemtext?

  • because hellgate runs a fully featured web browser, it has the ability to execute javascript like a browser would
  • this means websites that require javascript to function (like say, can be made accessible over gemini

what is the sigils dir for?

  • hellgate is extensible through the use of files called 'sigils'
  • a sigil is a file containing user-created javascript that will execute inside the browser sandbox whenever its corresponding page is accessed
  • sigils are mainly used for generating nicer looking gemtext for specific websites, but they can be used to automate any action within the browser's javascript environment
  • sigils are located in the sigils dir and are titled with the domain name of their corresponding website
  • see writing sigils for more info on how to write a sigil
  • if you write a new sigil for a specific website, don't hesitate to send it as a pull request to this repo


  • as of right now the npm version of gemini-server is broken, use the version from github or this will not work