Introduction
AutonomousKoi is an open source software project to support media streamers. It's comparable to tools like StreamElements and StreamLabs but with a few key differences:
- Open source with a permissive license: users control the software and functionality can't be "taken away".
- User-operated: while third-party hosting could be possible, the intent is that the streamer runs the tool themselves.
- Modular: functionality can be added to extend the system and support specific needs.
Installation - v0.0.11
Currently, all releases are considered experimental. Aspects of the program can change significantly between releases. If you have a version that's working for you, you should keep a copy of it in case a new version doesn't work properly for you.
Windows
📁 AutonomousKoi-win-v0.0.11.zipOpen the .zip file. Copy the ak
and lib-crypto
files to a folder on your hard drive. In the future there will be a proper installer.
Mac
📁 AutonomousKoi-mac-v0.0.11.dmgOpen the .dmg file. Copy AutonomousKoi.app
to Applications
.
Running AutonomousKoi
When you run the program, nothing will appear to happen. AutonomousKoi adds an icon to your system tray, near the clock.
Clicking the icon will present a menu.
Clicking Controls will open AutonomousKoi's controls in your web browser. Clicking Quit will tell AutonomousKoi to exit safely, saving changes.
For more details about modules, see Module Controls.
Support
Support is provided through a Discord server that features channels for general discussion, release announcements, and providing troubleshooting. Support is provided as time is available and the hope is that experts will emerge in the community to help.
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
In the future, we'd like to support extensibility through WASM. WASM would allow functionality to be built and provided separately and loaded as-needed. WASM also allows modules to be developed in a variety of languages instead of only Go.
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.