Hexademon is the codename for a set of enhancements to AI2. This spec describes the feature set.

Goals & Principles

Our ultimate goal is to turn AI2 into a full-fledged, cloud-based command shell, suitable for all administration, configuration, and development on Hexarc. At minimum we need a way for users to edit, store, and run scripts.

UX & Core Concepts

Some thoughts and questions:

  • We need a way to chain scripts (as in piping). Or perhaps we just need a way to invoke a script from another script.
  • The return value from a script should be interpreted by the AI2 shell and rendered appropriately. We might implement additional renderings for images, interactive displays, etc.
  • What is the storage model like? Is it folders? Tags? Are there system-defined tags? How do we handle alternate storage locations (e.g., Dropbox or other Hexarc services).
  • What is the security model? Can people share scripts?
  • What's the primary UI metaphor? Windows (within a single browser window)? Browser tabs? Do we rely on the OS for windowing? Or do we preserve our UI environment in the cloud so that we can remember it? [The latter might be worth a shot, in the spirit of creating a cloud OS.]
  • How do we log activity? If everything is just a command-line, then it's easy, but what about GUI stuff? Do we need to automate the GUI?
  • Eventually we need to integrate with Git (presumably by building it into Hexarc).
  • How do we name files? Is the name the same as an ID? Or is the name just a label (and the ID is a GUID or hash)? How do we refer to sets of files? Do we need the concept of file lists?
  • Do we need file types?
  • Can we edit Hexarc packages through this UI? How?
  • How does the file namespace intersect with built-in shell commands?
  • It would be great if this system allowed users/devs to essentially create their own UI. For example, a simple script with a single input box to handle resetting user password.
  • Eventually we need an event system (which listens to events and runs some script), but that's orthogonal to everything else.
  • What's the UI for editing a file? Does the command-line get replaced? Do we open a new pane? Where does the pane open? What are the metaphors?
  • Is there an equivalent to the current directory? Is there an equivalent to the path?
  • Is there a concept of apps? What's the deployment/installation model?