Sane defaults are definitely one of the goals. There are a few extension point at the moment and we plan to develop an atom-like plugin system, but it's not going to happen soon. You can write plugins now, but they should be in the main repo.
Those extension points are:
PluginManager.registerPrettyfier
- improves command outputs. An example would be a JSON prettifier, which parses output of any command that produces JSON, like curl https://api.github.com/repos/railsware/upterm
and allows to fold it, etc.
PluginManager.registerEnvironmentObserver
- ability to react to environment changes. E.g. change $PATH to include proper node.js version when $PWD changes.
PluginManager.registerAutocompletionProvider
- pretty self explanatory. This one should change dramatically in the nearest future, so I'd recommend to hold on with writing providers for now, if you wanted to contribute.
PluginManager.registerPreexecPlugin
- ability to do something before a command is executed. Currently it's used to show notifications like "You have an alias gs for 'git status'", if a person types the long version of the command.
By the way, we welcome any contributions. Upterm is written in TypeScript, which makes it accessible to many people who know JavaScript. You can choose something you like from this list: https://github.com/railsware/upterm/issues