Project Goals
Primary Goals
We'd like AutonomousKoi to remove streamer's dependence on third-party tools they can't control. It's not uncommon for SaaS providers to remove functionality from their products or move the functionality to a more expensive tier. Streamers don't control their data when it's held by third-party service providers. If the service provider experiences an outage some or all of the streamer's tools become unavailable. When the streamer controls their stream tools they control all of their stream.
Secondary Goals
We'd like AutonomousKoi to provide an ecosystem for artists and programmers to find work creating custom media and interactive elements for streamers. As a platform that is easy to extend and customize there are many opportunities to make it reflect the streamer's style and community.
Non-Goals
The AutonomousKoi project isn't itself trying to make money. In the future, it may form as a non-profit/not-for-profit organization, but there's no intent to profit through hosting or consulting. Project contributors are welcome to create custom content and enhancements for profit.
Technologies
Go
The core is built using Go, a high-performance, memory-managed, statically-typed language. Its focus on manageable concurrency is ideal for a system where the streamer, viewers, and other systems are all triggering events at the same time. By default it produces statically-compiled binaries which are trivial to distribute. It easily produces binaries for Windows, Mac, and Linux and AMD64 and ARM64 architectures.
Protocol Buffers
AutonomousKoi is intended to be modular and features components built in different languages with different ways of internally structuring data. Protocol buffers is an efficient system structuring data to be exchanged between heterogeneous systems. It generates code for representing, encoding, and decoding data for many languages.
TypeScript
Portions of the system must run in the browser. To reduce the potential for bugs we use the type safety features of TypeScript where JavaScript is required.
Web Components
Web Components provides a way to create reusable DOM elements with custom behavior. This is comparable to React though with much less automatic state management. In the future, Web Components may prove too cumbersome and a more substantial framework may be adopted.
WASM
AutonomousKoi has nascent support for extension through WASM plugins. WASM plugins can be written in a variety of languages and can be provided separately from AutonomousKoi itself, so you aren't downloading functionality you won't use. WASM plugins are sandboxed: they can't do arbitrary things to your computer.
License
AutonomousKoi is released under the MIT License. This is a permissive license that allows anyone to use and adapt the code, provided they include a copy of the license and proper attribution.
Contributing
AutonomousKoi is an open source project and the code is available on GitHub. The development and build process is a little rough so if you're interested in working on AutonomousKoi or plugins, reach out on Discord.