An application that can perform arbitrary actions on arbitrary data it receives. There will be rules that determine which actions to perform based on the type and content of the data.
- Written in Typescript.
- Does not require any server-side infrastructure.
- Installable as a webapp.
- Served from github.io.
- Persists all internal data in the local browser storage.
- Can load rule and action configuration from a github repo, gist or as plaintext.
- Can be used as a browser bookmarklet.
- Can loop back to itself in order to chain multiple actions.
- Each action has a boolean which determines whether it is a terminal action or not.
- A terminal action is one that does not loop back to the application.
- A non-terminal action is one that loops back to the application.
- By default all actions are non-terminal.
- Can be used via the OS or mobile share dialogue.
- Can be installed on mobile or desktop.
- Configurations can use templated values that are loaded in from the local storage.
- Configurations can declare that they required external data such as an api key, token or sets of less sensitive data.
- External data can be fetched from a user prompt or oauth flow.
- External data is stored in the local browser storage.
- Actions must define a method for getting the data they require.
- Built-in methods for getting data include:
	- User prompt
	- OAuth flow
    	- GitHub
    	- Google Auth
    	- Google Drive
	- Local storage
	- Local file
	- Remote file
	- Remote API
	- Remote API with OAuth