juju shell charm #0

Supports: xenial
Add to new model


This is the first proof-of-concept implementation of JAAS.sh, which allows one to access the juju CLI connected to the model through a shell instance accessed via xterm.js and terminado


A charm for allowing access to the Juju CLI through xterm.js. The charm spins up a terminado server which listens to WebSocket connections and passes them to the CLI, allowing the user to access juju.


This charm sets the following states:

  • jujushell.installed --- set when the installed hook completes.
  • jujushell.stopped --- set when the charm is stopped, removed when the jujushell service starts.
  • jujushell.started --- set when the service is (re)started, removed when the service is stopped.

Current status

  • As of 2017-09-26, this charm installs jujushell and runs that instead of terminado.
  • As of 2017-09-21, this charm installs terminado and starts it listening, along with a webpage running xterm.js with minimal styling
  • As of 2017-09-12, this charm simply installs juju on a fresh xenial system. This will require the user to run juju register/juju login once they have access to the terminal.

The next tasks are:

  • Install and set up LXD, and have the terminado server run on a prepared LXD image with a simple WebSocket proxy to direct the user's commands to that
  • Have the GUI recognize when this charm is added to the environment and have the xterm.js portion embedded in the GUI
  • Pass macaroons to the charm so that the user does not need to register/login
  • Add the ability to run commands on a unit via this setup and juju ssh
  • Take over the world


(string) The log level to apply to jujushell itself.
(int) The port on which the service will be listening for WebSocket connections.
(string) HTTP/HTTPS web proxy for Snappy to use when accessing the snap store.