Espial is an open-source, web-based bookmarking server.

Latest on Hackage:

This package is not currently in any snapshots. If you're interested in using it, we recommend adding it to Stackage Nightly. Doing so will make builds more reliable, and allow to host generated Haddocks.

MIT licensed by Jon Schoning
Maintained by


Espial is an open-source, web-based bookmarking server.

It allows mutiple accounts, but currently intended for self-host scenarios.

The bookmarks are stored in a sqlite3 database, for ease of deployment & maintenence.

The easist way for logged-in users to add bookmarks, is with the “bookmarklet”, found on the Settings page.

demo server

log in — username: demo password: demo


Haskell Setup

  1. If you haven’t already, install Stack
    • On POSIX systems, this is usually curl -sSL | sh
  2. Install the yesod command line tool: stack install yesod-bin --install-ghc

Espial Setup

  1. Build executables

    stack build
  2. Create the database

    stack exec migration -- createdb --conn espial.sqlite3
  3. Create a user

    stack exec migration -- createuser --conn espial.sqlite3 --userName myusername --userPassword myuserpassword
  4. Import a bookmark file for a user (optional)

     stack exec migration -- importbookmarks --conn espial.sqlite3 --userName myusername --bookmarkFile sample-bookmarks.json
  5. Start a development server:

    stack exec -- yesod devel
  6. Start a production server:

    stack exec espial

Import Bookmark file format

see sample-bookmarks.json, which contains a JSON array, each line containing a Post object.


[ {"href":"http:\/\/\/","description":"MQTT","extended":"long description","time":"2018-02-25T21:22:42Z","shared":"yes","toread":"no","tags":"mqtt"}
, {"href":"http:\/\/\/","description":"MQTT","extended":"big  description","time":"2019-02-25T21:22:42Z","shared":"yes","toread":"no","tags":"mqtt"}



add notes, ekg. update data fetches


replaced jQuery and .julius scripts with PureScript-compiled static js file


pkg bounds



comments powered byDisqus