Skip to content


Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Not really an oprating system, Just a pile of javascript pretending to be a Desktop Environment
JavaScript CSS Other
branch: master


latest commit 2534c8742e
Neil Graham authored
Failed to load latest commit information.
distbin Monolithic change
dumbbash Switched temish for nodeterm
notanos general tidyup
LICENCE MIT fixed instructions
pisetup.txt instructions for rasberry pi
screenshot.png more interesting
setup.txt new Install instructions

Notanos - Not really an operating system

This is just a pile of Javascript pretending to be a desktop environment, but hosted from your phone or Linux box? Weird huh. It's Alpha stuff so don't expect too much yet...

It looks a bit like this.

Latest Clip This is the new userserv hosted notanos running on a CubieBoard2. I talk through what I'm doing, The video shows some features of the bridge to the host machine as well as a paint program coded from scratch at record time.

This Youtube clip demonstrates Notanos serving from a Linux box. It even launches a bash terminal.

This clip is (an older version) serving from a Novo7 Aurora (android-arm) and clienting from WinXP Chrome. I am assured clienting is a real word.

You can use it as a cloud in your pocket or give your headless Linux box a HTML front end.

Installation was moderately easy, then it got harder (sorry)

You need to have Node.js v0.10 or better. For the CubieBoad I just grabbed the Raspberry-pi binaries from

You also need userserv Follow the instructions on the userserv page to build and install ( it's just git clone; make all; make install)

tar -xzf notanos.tar.gz
ln -sr notanos ~/Notanos

To run the server (with Notanos features enabled) userserv -n

Then from a browser. https://machinename-or-ip

Once logged in go to https://machinename-or-ip/~/Notanos/index.html

What's good about it?

  • Making apps is can be as easy as making a webpage that runs in a frame
  • Supports App bundles (any directory containing a bundle.json)
  • Apps do not have to be HTML Frames. Other app types can be defined by providing a module to run them.
  • Linux side processes can open a connection to the browser session, via a unix-domain socket tunneling over a websocket connection
  • Linux side processes can send their own frame to the browser and then communicate in whatever protocol they program the frame to support.
  • Browser side programs can execute linux side processes. The environment variable $WEBSESSION is set to the name of the unix-domain socket for the session,.
  • Comes with the tiniest game of pacman in the world (Written in DCPU-16 assembler!)

What's bad about it?

  • The server is just a dumb WebDav implementation. (now uses userserv)
  • Hardly any security. (now goes over https and requires login)
  • No symlinks Dumping webdav fixed this.
  • has a root level component that hasn't had many eyes look at it yet.
  • Much of the code is written to support the bare essentials and not much else.
  • Even then a bunch of it is probably broken.
  • It's not finished, OK? (but is is much better than it was a year ago)
  • The terminal got worse in this version & I broke CKEditor again.

What could it be?

Notanos could be very quickly extended to support a lot of existing HTML5/JS webapps and let you carry them around with you on your phone. Any computer with a decent browser becomes a potential terminal for you to use. Any documents you edit get saved right back to your phone.

It has the potential to be a full fledged interface to native applications. Notanos would be acting in a role slightly similar to X11 in that respect. This would be moving beyond Android and treating the system as the underlying Linux box that it really is.

There is a lot of potential to using Websockets to facilitate a connection between server side applications and their Notanos interfaces.

Notanos is getting to the point where it might be feasable for people to hack around with it and try and get it to do things.

Something went wrong with that request. Please try again.