# Issho v0.2.0 - Table of Contents > Collaboration for Phoenix: one engine for people and agents working together live, under every component on a page. ## Pages - [Issho](readme.md) - [Architecture](architecture.md) - [Agents](agents.md) - [Changelog](changelog.md) ## Modules - [Issho](Issho.md): Collaboration for Phoenix: one engine for people and agents working together live, under every component on a page. - [Issho.Agents](Issho.Agents.md): Agents in rooms for front ends without a lasting connection: an MCP server, whose every tool call is its own request, a webhook, a chat bot. An agent joins a room on its first call and stays, present and where it last pointed, between calls; it leaves after `:idle` milliseconds with no call (ten minutes), or when told. - [Issho.Components](Issho.Components.md): Issho's pieces of a page, in HEEx. Style them with Issho's theme: `issho.css`, and `issho-sumi.css` after it for the Sumi theme (in the package's `priv/static`). - [Issho.MCP](Issho.MCP.md): Issho's tools over MCP, with [Sake](https://hex.pm/packages/sake): a `Sake.Server` of the tools you give, Issho's (`Issho.Tools.room/0`) and the components' (`Kotoba.Issho.tools/0`, `Hakushi.Issho.tools/0`), for any MCP client. The same tools serve your app's own model without MCP (`Issho.Tools`). - [Issho.MCP.Session](Issho.MCP.Session.md): Who an MCP caller is in Issho's rooms: the `Issho.Tool.Context` its tool calls run with. The one place where an MCP endpoint's authorization (Sake's, your own, or none) meets Issho: the agent and the options of its joins come from the call. - [Issho.MCP.Setup](Issho.MCP.Setup.md): Issho's MCP settings for one endpoint, as a plug before it: which instance, and who its callers are in the rooms. An app can serve its tools on several endpoints, each with its own - [Issho.Tool](Issho.Tool.md): A tool an agent uses in Issho's rooms, however it reaches your app: an MCP client (`Issho.MCP`), your app's own model through an API (`Issho.Tools`), or whatever comes next. A tool says what it does and what it takes, as a JSON Schema; it runs as the agent of an `Issho.Tool.Context`, under your policy, as anyone in a room does. - [Issho.Tool.Context](Issho.Tool.Context.md): Who runs a tool: the agent (an `Issho.Actor`), the options of its joins (`:on_behalf_of`, `:claims`, `:can`), and the instance. A front end makes it from its caller: `Issho.MCP` from an MCP call, your code from the user your app's model works for. - [Issho.Tools](Issho.Tools.md): Tools for agents, for any way an agent reaches your app. Issho's room tools are `room/0`; the components bring theirs (`Kotoba.Issho.tools/0`, `Hakushi.Issho.tools/0`), and you can write your own (`Issho.Tool`). - Contracts - [Issho.Actor](Issho.Actor.md): Anyone or anything that takes part in a room: a user, an admin, a guest, a service, an agent. Issho never assumes your schema; implement this protocol for each struct that can join. - [Issho.Binding](Issho.Binding.md): What a component brings to Issho: its engine (`Issho.Engine`) and its place format (`Issho.Place`). The browser's half of a binding brings the rest: drawing places, and reading and applying a view for following. - [Issho.Engine](Issho.Engine.md): The model of a document: how its operations apply. Each binding brings one (Kotoba's text, Hakushi's graph, a map for shared assigns), and the authority (`Issho.Authority`) runs it. - [Issho.Place](Issho.Place.md): Where someone is, in a component's own terms: a row and a column in a grid, a node and an offset in a text, a point on a canvas. Never screen pixels, because each person has their own order, filters and zoom. - [Issho.Policy](Issho.Policy.md): Your app's answer to "may this actor do this here?", and to "what is this document?". Issho has no roles and no user model: it asks, and your app answers with whatever it already uses. - [Issho.Store](Issho.Store.md): Where documents last. Your app implements it on its database; `Issho.Store.Memory` is for development and tests. - Documents - [Issho.Authority](Issho.Authority.md): The one process that orders a document's changes, across every node of a cluster. - [Issho.Documents](Issho.Documents.md): The authorities (`Issho.Authority`) of an Issho instance: one for each open document, found by name on every node of a cluster. - [Issho.Engine.Map](Issho.Engine.Map.md): A map that people and agents change together: values at paths, in the order the authority accepts them. It is the engine of shared assigns, the reference for writing an engine, and the engine of Issho's own tests. - [Issho.Transaction](Issho.Transaction.md): The envelope of a change to a document, the same for every engine - Rooms - [Issho.Awareness](Issho.Awareness.md): Where the people of a room are, and what they are doing: their places, selections, drags and locks, many times a second. - [Issho.Channel](Issho.Channel.md): The channel a browser joins a room on: one per room per tab, on one socket for the whole page. - [Issho.Color](Issho.Color.md): The colours of the people of a room. - [Issho.Identity](Issho.Identity.md): An actor as a room knows it: its key, what others see of it, and on whose behalf it acts. - [Issho.Presence](Issho.Presence.md): Who is in a room: `Phoenix.Presence`, as it is, on your app's PubSub. - [Issho.Token](Issho.Token.md): Short-lived, signed credentials to join one room as one actor. - LiveView - [Issho.Live](Issho.Live.md): A LiveView in a room: the same session as a browser's channel or an agent's process, in the LiveView's own process. Presence, awareness, the room's documents and the policy work the same; the room's events reach the LiveView's components with `send_update/2`, or the LiveView itself. - Agents - [Issho.Participant](Issho.Participant.md): An actor in a room from Elixir: an agent running in your app, a job, a script. It joins like a browser, with the same presence, awareness, locks, transactions and policy, and the people in the room see it. - Stores - [Issho.Store.Memory](Issho.Store.Memory.md): A store in memory, for development and tests. It outlives a document's authority, but loses everything when its node stops. - [Issho.Store.None](Issho.Store.None.md): No store: a document that lasts as long as its authority, and starts again from its initial content when the next one opens it. - Testing - [Issho.Test](Issho.Test.md): Helpers for testing an app or a binding with Issho, in ExUnit. ## Mix Tasks - [mix issho.build](Mix.Tasks.Issho.Build.md): Builds Issho's browser client into `priv/static`. - [mix issho.release_check](Mix.Tasks.Issho.ReleaseCheck.md): Checks the built files before a release of Issho.