CribJS Home CribJS


    Developed to bring the free software idea to the web, CribJS is a pure serverless HTML5 Sandbox.

    Running in your browser, it works offline without extension and without server. You can add new applications, modify them, extend them and share as you will. You can also Edit CribJS within CribJS, it is self editable.

    CribJS is split in two elements: CribJS Bootloader and CribJS Editor. And is available at this address:

    CribJS Bootloader

    A Small JavaScript bootloader (currently being integrated in ERP5's erp5_cribjs_bootloader business template), that utilizes the browser serviceworker API and jIO to load the CribJS Editor in the browser storage. The Service Worker will then serve this data from the storage instead of fetching them.

    CribJS Editor

    CribJS Editor provides website management and edition under the name of applications. It connects to Crib Enabled Sites throught the Crib Enable Connector. It can list the list of pages on the website, can edit them and add new one.  It allows users to configure the way of viewing a specific website that supports CribJS. Each website is a different domains that CribJS Editor represents as Apps. As long as you have the Zip of a Web Site or Web App, you can easily add it in CribJS and edit it thanks to that. By default CribJS deploys Application in the wildcard domain https://* allowing to have infinite versions and website (within the limits of storage allowed by your browser). 

    Based on the principles of the free web and its origins of connecting raw pieces of information, a user should have the freedom to view content in whichever way he or she desires. CribJS will allow to do this by enabling to customize CribJS-supporting websites. CribJS was created by Cédric Le Ninivin at Nexedi and is part of their free software stack.

    Why use CribJS?

    Idealism - the web was and is about connecting and exchanging information through HTTP(S). Text Transfer. If one wants to stay close to these origins, viewing a web page with additional scripting and style enforcing a certain view on the actual content feels like a book's pages being reshuffled according to the publishers preference. Or a graph of information being moderated by an application deciding what is best for you to see. And what not. Form follows Function - but function likely wasn't meant to be a JavaScript function and server-side algorithm enforcing a layout aimed at maximizing profit generating parameters from page views to time on page.

    Alas. Back to the basic and CribJS-supporting ("cribjable") websites providing content and their view of it separately while giving users the freedom to modify and edit the latter to their personal preference - be it for idealistic or at least aesthetic reasons.


    Edit a copy of this site in CribJS

    Getting Started

    Source Code

    The source code can be found in the aforementioned officejs repository in the web page module.


    • Serviceworker API Support (Caniuse)
    • RenderJS - HTML5 component framework
    • jIO - JavaScript Input/Output

    Installing CribJS

    Follow the steps outlined in how to setup a website using CribJS for creating a static website which is fully editable in your browser and can save/fetch changes from an external storage of your choice (like webDav).

    Latest Releases

    CribJS is still in its infancy and has not yet reached a state warranting having a tag and release.


    Tips and Tricks

    • To remove your modifications manually, use the chrome://serviceworker-internals


    Automated test results are published on


    Can I use CribJS on every website?

    No. Only pages with the CribJS logo "monkeywrench" allow to switch a page into what is termed "dev mode" where you can edit and save source files. It also requires most of the rendering to be done on the browser, so server-side rendered HTML pages are therefore difficult to tweak aside from the visuals (changed via the provided CSS files).

    Can I use CribJS on every browser?

    No, because CribJS uses the serviceworker API, which is not available on all browsers (see caniuse Serviceworkers).

    What's the purpose of CribJS then?

    The web has evolved from it's original idea of linking pieces of information. Todays website add a lot of visual value add (or clutter) as well as a certain view on the content, which a viewer not necessarily should be forced to follow. With CribJS a viewer is free to tweak the design of a site and alter the way it is viewed to his liking. A theoretical freedom of course requiring a certain degree of programming know-how.


    CribJS is Free Software, licensed under the terms of the GNU GPL v3 (or later). For details, please see Nexedi licensing.