> For the complete documentation index, see [llms.txt](https://magisystem.gitbook.io/magi-system/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://magisystem.gitbook.io/magi-system/introduction/introduction.md).

# Introduction

## System Overview

MAGI System is a system designed for asynchronous discrimination and voting tasks. Its primary goal is to evaluate and judge results generated by external agents (e.g., CodeGen, third-party platforms’ content generation models) and then provide voting outcomes. In a typical workflow, an external Agent sends a request to the MAGI System (including the original user request, the Agent’s output, and optionally a list of voters). The MAGI System distributes this request to multiple internal or external voters, collects their votes, and uses the results (by default, “minority rule” or another strategy) to produce a final judgment.

## Use Cases

* Content Moderation: Assess the legality, correctness, or safety of generated content (e.g., code, text, or other outputs) from generative models like CodeGen.
* Result Verification: Gather feedback or opinions from multiple parties (e.g., experts, third-party collaborators) and aggregate their judgments or votes.
* Decision Support: Allow external platforms to base their acceptance or rejection of Agent-generated content on the majority/minority outcome provided by MAGI System.

## Key Features

* Multi-Role Voting: The system includes official MAGI System voters and third-party voters registered through partnerships.
* Asynchronous Processing: Voting or discrimination can be time-consuming, so MAGI System uses an asynchronous architecture, returning intermediate events and final results through a WebSocket connection.
* Dynamic Voter Selection: Requests may specify a particular set of voters or, if none is provided, the MAGI System chooses voters based on internal strategies.
* Standardized Communication: A single WebSocket interface supports all requests and responses, each tied to a unique request\_id for easy tracking.
