# Powerhouse Academy > Powerhouse is an open-source toolkit for building decentralized applications with document models, real-time collaboration, and scalable network organizations. This documentation covers the full developer journey: getting started, building document models and editors, working with processors and data, deploying packages, and the underlying architecture. > > Core npm packages: @powerhousedao/reactor, @powerhousedao/reactor-browser, @powerhousedao/reactor-api, @powerhousedao/codegen, @powerhousedao/builder-tools, @powerhousedao/vetra, @powerhousedao/reactor-attachments, @powerhousedao/reactor-drive > > Source: https://github.com/powerhouse-inc/powerhouse — Documentation: https://academy.vetra.io ## Get Started - [Vetra Studio](https://academy.vetra.io/academy/GetStarted/VetraStudio): Vetra Studio is the browser UI for the Vetra agent. You chat with the agent, watch it work across the four-phase product cycle (Ideate → Specify → Bui - [Vetra Cloud](https://academy.vetra.io/academy/GetStarted/VetraCloud): Vetra Cloud is the hosted infrastructure layer for Powerhouse applications. It lets you spin up a personal cloud environment that runs Powerhouse Conn ## Learn - [Learn the Powerhouse stack](https://academy.vetra.io/academy/Learn/Overview): Powerhouse is a framework for building applications whose state evolves through operations rather than direct mutations. Instead of storing the curren - [01-what-is-powerhouse](https://academy.vetra.io/academy/Learn/foundations/what-is-powerhouse): Powerhouse is a framework for building apps whose state lives in documents that evolve through operations. If you've built with CRDTs, Event Sou - [02-thinking-in-operations](https://academy.vetra.io/academy/Learn/foundations/thinking-in-operations): If you've built CRUD apps before, you probably think in terms of _rows_ — the current value of a record in a database. Powerhouse asks yo - [01-the-big-picture](https://academy.vetra.io/academy/Learn/architecture/the-big-picture): The previous lesson showed how every change becomes an operation appended to an immutable log. Now let's look at _where_ that all actually runs. By th - [02-host-applications](https://academy.vetra.io/academy/Learn/architecture/host-applications): The previous lesson named the three pieces: document models, a Reactor, and a host application. Now let's make the last one concrete. Because "embed a - [01-documents-and-drives](https://academy.vetra.io/academy/Learn/document-models/documents-and-drives): You already know that Powerhouse stores _operations_, not snapshots. Now let's look at what those operations live _inside_ — and why the container for - [02-state-and-scopes](https://academy.vetra.io/academy/Learn/document-models/state-and-scopes): A Powerhouse document doesn't have one monolithic state — it has scopes. Each scope is its own state shape, its own operation log, and its own sync ru - [03-actions-and-reducers](https://academy.vetra.io/academy/Learn/document-models/actions-and-reducers): You've heard the words — action, reducer, operation. This lesson makes the contract precise, so you can reason clearly about what's allowed inside eac - [04-your-first-document-model](https://academy.vetra.io/academy/Learn/document-models/your-first-document-model): In this lesson you'll build a minimal Todo document model from scratch. You'll define the schema in Vetra Studio, let codegen scaffold th - [01-what-is-an-editor](https://academy.vetra.io/academy/Learn/editors/what-is-an-editor): You've seen how documents store their history as operations, and how reducers produce the next state from each action. But none of that matters to a u - [02-your-first-editor](https://academy.vetra.io/academy/Learn/editors/your-first-editor): An editor in Powerhouse is a React component tied to one Document Model. It has one job: turn user input into actions and re - [03-editor-hooks-and-state](https://academy.vetra.io/academy/Learn/editors/editor-hooks-and-state): You've written an editor shell. Now you need to actually _read_ the document and _change_ it. Powerhouse gives you a small set of hooks from @powerhou - [Full local dev stack](https://academy.vetra.io/academy/Learn/connect/what-is-connect): You've got a Reactor running and a document model defined. But where do users actually open a document, browse their files, and click things? That's C - [02-drive-apps](https://academy.vetra.io/academy/Learn/connect/drive-apps): Connect's default drive view is a folder tree with documents inside it. That's fine for generic storage — but once you have a real product, you probab - [Reactor booted](https://academy.vetra.io/academy/Learn/switchboard/what-is-switchboard): You've seen Connect give users a browser UI for editing documents. Switchboard is the other side of that coin — it runs the same Reactor - [02-subgraphs](https://academy.vetra.io/academy/Learn/switchboard/subgraphs): You've got documents. You've got operations. Now you need the outside world — a web app, a mobile client, an AI agent — to be able to read and write t - [03-processors-and-read-models](https://academy.vetra.io/academy/Learn/switchboard/processors-and-read-models): A document's operation log is authoritative but not always convenient. If you want to ask "which todos did Alice complete last week?" you don't want t - [01-sync-and-collaborate](https://academy.vetra.io/academy/Learn/sync/sync-and-collaborate): So far your Todo document lives in a single Reactor in a single tab. This lesson makes it collaborative: open it in two browsers, take one offline, an - [01-reducers-in-depth](https://academy.vetra.io/academy/Learn/deep-dives/reducers-in-depth): Reducers are the one part of a Powerhouse app that _must_ be pure. Everything downstream — sync, replay, undo, audit — assumes that runni - [02-identity-and-signing](https://academy.vetra.io/academy/Learn/deep-dives/identity-and-signing): You've seen that a document _is_ its operation log, and that the log is what syncs between peers. That raises a question every collaborative system ha ## Reference - [Powerhouse Architecture](https://academy.vetra.io/academy/Reference/Architecture/PowerhouseArchitecture): Vetra is part of the Powerhouse Ecosystem and acts as the builder platform for creating an independent, open-source and decentralized back-end for any - [Working with the Reactor](https://academy.vetra.io/academy/Reference/Reactor/WorkingWithTheReactor): Document models are the common design pattern that is used for all documents and files. DocSync is a decentralized synchronization protocol that is st - [IReactorClient](https://academy.vetra.io/academy/Reference/Reactor/ReactorClient): The IReactorClient interface is the primary way to interact with a Powerhouse reactor programmatically. It wraps lower-level APIs to provide a simpler - [Advanced reactor usage](https://academy.vetra.io/academy/Reference/Reactor/AdvancedReactorUsage): This page covers the low-level IReactor interface and the internal components you can access through ReactorModule. Most developers should use IReacto - [Synchronization and remote drives](https://academy.vetra.io/academy/Reference/Reactor/Synchronization): Sync makes one reactor mirror operations with a remote drive. The local reactor pushes operations it produces and pulls operations the remote produces - [Processors](https://academy.vetra.io/academy/Reference/Reactor/Processors): A processor receives operations after the write phase and performs side effects: analytics rollups, relational indexing, webhooks, dispatching follow- - [Document model registry and version upgrades](https://academy.vetra.io/academy/Reference/Reactor/DocumentModelRegistry): The document model registry holds document model modules keyed by document type and version. The reactor uses it to resolve the reducer, utils, and sp - [Storage backends and scaling](https://academy.vetra.io/academy/Reference/Reactor/StorageAndScaling): The reactor persists every operation through a Kysely-backed storage layer. You pick the backend and the execution topology on the ReactorBuilder befo - [Error handling](https://academy.vetra.io/academy/Reference/Reactor/ErrorHandling): Errors reach your code from the reactor through three channels: - [Attachment service](https://academy.vetra.io/academy/Reference/Reactor/AttachmentService): The @powerhousedao/reactor-attachments package decouples large binaries (images, files, avatars) from the action and operation pipeline. Instead of ca - [Recipes](https://academy.vetra.io/academy/Reference/Reactor/Recipes): The Powerhouse Recipes repository is a collection of small, standalone, runnable projects. Each one isolates a single Reactor pattern — a processor, a - [PHDocument Migration Guide](https://academy.vetra.io/academy/Reference/DocumentModels/PHDocumentMigrationGuide): This guide covers the breaking changes introduced in Powerhouse v4.0.0 related to PHDocument structure changes. If you're upgrading from v3.2.0 or ear - [Relational Database](https://academy.vetra.io/academy/Reference/GraphQLData/RelationalDatabase): This page covers the relational database tools available in Powerhouse applications, providing type-safe database operations with real-time updates th - [Subgraph Migration Guide (v6)](https://academy.vetra.io/academy/Reference/GraphQLData/SubgraphMigrationGuide): This guide covers the breaking changes to the GraphQL subgraph API introduced in the v6 Reactor. If you were querying the old /graphql/document-drive - [Processor Migration Guide (v6)](https://academy.vetra.io/academy/Reference/Processors/ProcessorMigrationGuide): This guide covers the breaking changes to the processor interface introduced in the v6 Reactor. If you have existing processors built on the legacy st - [Document-Engineering](https://academy.vetra.io/academy/Reference/EditorsUI/DocumentEngineering): The reusable components in the Document-Engineering system are a set of of front-end components based on graphQL scalars. - [React Hooks](https://academy.vetra.io/academy/Reference/EditorsUI/ReactHooks): This page provides a reference for the hooks available in @powerhousedao/reactor-browser. These hooks are intended to be used by editors (including dr - [Step 1: Create Custom Scalars](https://academy.vetra.io/academy/Reference/EditorsUI/CreateCustomScalars): This tutorial provides step-by-step instructions for creating custom scalars & components, and to contributing to the document-engineering project. - [Renown SDK](https://academy.vetra.io/academy/Reference/Authorization/renown-sdk/Overview): A comprehensive SDK for integrating Renown authentication and user profile management into your React applications. - [Authentication Guide](https://academy.vetra.io/academy/Reference/Authorization/renown-sdk/Authentication): Comprehensive guide to implementing authentication with the Renown SDK. - [API Reference](https://academy.vetra.io/academy/Reference/Authorization/renown-sdk/APIReference): Complete API reference for the Renown SDK. - [CLI Identity & Authentication](https://academy.vetra.io/academy/Reference/Authorization/renown-sdk/CLIIdentity): This guide covers how to authenticate the Powerhouse CLI with your Ethereum identity and use that identity in the Switchboard for authenticated operat - [Powerhouse CLI](https://academy.vetra.io/academy/Reference/CLITooling/PowerhouseCLI): The Powerhouse CLI tool is the only essential tool to install on this page. Install it with the command below. - [Vetra Remote Drive](https://academy.vetra.io/academy/Reference/CLITooling/VetraRemoteDrive): These commands enable collaborative development using Vetra remote drives. Instead of working with local drives only, you can connect your Powerhouse ## Book of Powerhouse - [Overview](https://academy.vetra.io/bookofpowerhouse/Overview): Powerhouse is an initiative at the intersection of software development, legal innovation, and new business models for open-source projects. These ele - [**Part 1: Powerhouse General Framework and Open-Source Capitalism**](https://academy.vetra.io/bookofpowerhouse/GeneralFrameworkAndPhilosophy): Powerhouse emerged in the wake of Ethereum’s DAO movement, which began gaining momentum after the collapse of _The DAO_ in 2016. This turning point sp - [Part 2: Powerhouse Software Architecture](https://academy.vetra.io/bookofpowerhouse/PowerhouseSoftwareArchitecture): Powerhouse’s software architecture is designed to empower scalable, decentralized organizations with a modular, layered approach. It uses document mod - [Part 3: Development Approaches](https://academy.vetra.io/bookofpowerhouse/DevelopmentApproaches): Powerhouse’s development approaches are designed to enable efficient, scalable, and innovative solutions for decentralized organizations. By drawing f - [Part 4: Scalable Network Organizations (SNOs)](https://academy.vetra.io/bookofpowerhouse/SNOsandANewModelForOSSandPublicGoods): Decentralized Autonomous Organizations (DAOs) once promised to revolutionize global collaboration by enabling decentralized governance, transparent de - [**Part 5: Powerhouse Platforms – Decentralized Operations and Builder**](https://academy.vetra.io/bookofpowerhouse/SNOsInActionAndPlatformEconomies): The Powerhouse architecture is not only organizational but also deeply technological. To enable scalable network organizations (SNOs) to operate effec ## Release Notes - [Powerhouse v5.3.0 🚀](https://academy.vetra.io/academy/ReleaseNotes/v5.3.0): 1. Authentication & Permissions - CLI authentication and document-level permissions 2. Improved Code Generation - TS Morph and templates for faster, m - [Powerhouse v6.0.0 🚀](https://academy.vetra.io/academy/ReleaseNotes/v6.0.0): 1. Redesigned Reactor with sync reliability — Complete rewrite of the write model, sync pipeline, and job system with quarantine, dead letters, paging ## Miscellaneous - [00-Home](https://academy.vetra.io/academy/Home) - [Prerequisites](https://academy.vetra.io/academy/Build/GettingStartedBuilding/Prerequisites): This Build chapter is the manual experience — you build Powerhouse packages by hand on your own machine with the Powerhouse CLI, controlling every ste - [Vetra Drive](https://academy.vetra.io/academy/Build/GettingStartedBuilding/VetraDrive): Vetra Studio is the builder environment where you create, manage, and collaborate on Powerhouse packages. It consists of two main components: - [Create a package with Vetra](https://academy.vetra.io/academy/Build/GettingStartedBuilding/CreateAPackageWithVetra): A Powerhouse Package is a distributable unit that bundles one or more document models, editors, and optional reactor modules into a single installable - [Vetra builder tooling](https://academy.vetra.io/academy/Build/GettingStartedBuilding/BuilderTools): An overview of the builder tooling in the Powerhouse/Vetra ecosystem, for the manual (CLI) builder workflow. This list grows as the toolkit does. - [Explore the demo package](https://academy.vetra.io/academy/Build/ManualTodoTutorial/ExploreDemoPackage): Before recreating the package yourself, install the finished version to see what you'll build. The demo is a pre-built package containing a document m - [Create a new to-do list document](https://academy.vetra.io/academy/Build/ManualTodoTutorial/CreateNewPowerhouseProject): This tutorial step has a corresponding branch in the repository. You can: - [Write the document specification](https://academy.vetra.io/academy/Build/ManualTodoTutorial/DefineToDoListDocumentModel): This tutorial step has a corresponding branch. After completing this step, your project will have a generated document model with: - [Implement the document model reducers](https://academy.vetra.io/academy/Build/ManualTodoTutorial/ImplementOperationReducers): This step focuses on implementing the reducer logic for add, update, and delete operations. - [Write document model tests](https://academy.vetra.io/academy/Build/ManualTodoTutorial/WriteDocumentModelTests): This step covers writing tests for the reducers you implemented in the previous step. - [Build a to-do list editor](https://academy.vetra.io/academy/Build/ManualTodoTutorial/BuildToDoListEditor): - Editor Scaffolding: step-5-generate-todo-list-document-editor - Complete Editor UI: step-6-add-basic-todo-editor-ui-components - [What is a document model?](https://academy.vetra.io/academy/Build/DocumentModelCreation/WhatIsADocumentModel): This chapter on Document Model Creation will help you with an in-depth practical understanding while building an advanced to-do list document model. - [Specify the state schema](https://academy.vetra.io/academy/Build/DocumentModelCreation/SpecifyTheStateSchema): This is the same step from the Manual Todo tutorial, covered here in depth. The Mastery Track's only addition is the computed stats field — if you've - [Specify document operations](https://academy.vetra.io/academy/Build/DocumentModelCreation/SpecifyDocumentOperations): You defined these operations in the Manual Todo tutorial; this page explains them in depth and adds the operations behind the advanced stats feature. - [Use the Document Model Generator](https://academy.vetra.io/academy/Build/DocumentModelCreation/UseTheDocumentModelGenerator): When building document models with Vetra Studio, code generation happens automatically. As you add and update specification documents in your Vetra St - [Implement document reducers](https://academy.vetra.io/academy/Build/DocumentModelCreation/ImplementDocumentReducers): This is the same step from the Manual Todo tutorial, covered here in depth. The Mastery Track's only addition is the reducer logic for the computed st - [Implement document model tests](https://academy.vetra.io/academy/Build/DocumentModelCreation/ImplementDocumentModelTests): This is the same step from the Manual Todo tutorial, covered here in depth. The Mastery Track's only addition is tests for the computed stats field — - [Example: Todo-demo-package](https://academy.vetra.io/academy/Build/DocumentModelCreation/ExampleToDoListRepository): The Todo-demo is maintained by the Powerhouse Team and serves as a reference for testing and introducing new features. It will be continuously updated - [Document Model Versioning](https://academy.vetra.io/academy/Build/DocumentModelCreation/DocumentModelVersioning): This chapter covers advanced document model versioning—a system for evolving document schemas and operations while maintaining backward compatibility - [Build document editors](https://academy.vetra.io/academy/Build/BuildingUserExperiences/BuildingDocumentEditors): At Powerhouse, frontend development for document editors follows a simple and familiar flow, leveraging the power and flexibility of React. - [Build a Drive-app](https://academy.vetra.io/academy/Build/BuildingUserExperiences/BuildingADriveExplorer): Drive-apps enhance how contributors and organizations interact with document models. They create an 'app-like' experience by providing a custom interf - [CSS Customization for Connect Integration](https://academy.vetra.io/academy/Build/BuildingUserExperiences/CSSCustomization): When your editor runs inside Connect, it's rendered within a specific container hierarchy. Understanding this structure allows you to customize your e - [Document Toolbar](https://academy.vetra.io/academy/Build/BuildingUserExperiences/DocumentTools/DocumentToolbar): The DocumentToolbar renders a default set of document controls for common document actions: undo, redo, download, document name editing, revision hist - [Operations history](https://academy.vetra.io/academy/Build/BuildingUserExperiences/DocumentTools/OperationHistory): A document model in Powerhouse is the core unit for managing business data. Each document (such as an invoice, contributor agreement, or scope of work - [Revision history timeline](https://academy.vetra.io/academy/Build/BuildingUserExperiences/DocumentTools/RevisionHistoryTimeline): The history timeline feature enables users to view document history and navigate through different revisions of a document. This guide explains how to - [Inspector Modal](https://academy.vetra.io/academy/Build/BuildingUserExperiences/DocumentTools/InspectorModal): The Inspector Modal is a development and debugging tool in Connect that provides visibility into the internal state of your application. It allows you - [Renown authentication flow](https://academy.vetra.io/academy/Build/BuildingUserExperiences/Authorization/RenownAuthenticationFlow): The Renown login flow leverages decentralized identity (DID) creation and the Ceramic network for credential storage and verification, ensuring secure - [Document Permission System](https://academy.vetra.io/academy/Build/BuildingUserExperiences/Authorization/DocumentPermissions): This documentation is still being written and may be incomplete. The feature is not yet available on production. - [Signing](https://academy.vetra.io/academy/Build/BuildingUserExperiences/Authorization/Signing): Powerhouse uses two complementary signing mechanisms to establish trust across the document lifecycle: - [Reactor API Authorization](https://academy.vetra.io/academy/Build/BuildingUserExperiences/Authorization/Authorization): This documentation is still being written and may be incomplete. - [Enforcing Authorization in Subgraphs](https://academy.vetra.io/academy/Build/BuildingUserExperiences/Authorization/EnforcingAuthorizationInSubgraphs): This documentation is still being written and may be incomplete. - [Configure a drive](https://academy.vetra.io/academy/Build/WorkWithData/ConfiguringDrives): A drive in Powerhouse is a container for documents and data. It's a place where you can organize and store your documents and share them with others. - [Using the API](https://academy.vetra.io/academy/Build/WorkWithData/UsingTheAPI): Switchboard is the API interface that enables developers and data engineers to access data captured through document models in Connect and Fusion. - [Using subgraphs](https://academy.vetra.io/academy/Build/WorkWithData/UsingSubgraphs): Create and customize a subgraph, using the to-do list project as an example. This starts with the basics and adds more complex features as it goes. - [Building a processor](https://academy.vetra.io/academy/Build/WorkWithData/BuildingAProcessor): Processors are components that receive document operations from the reactor and perform side effects. While specialized processor types like relationa - [Processor best practices](https://academy.vetra.io/academy/Build/WorkWithData/ProcessorBestPractices): This guide covers advanced patterns for processors that need to mutate documents or query indexed data. It builds on the concepts from Building a Proc - [Relational database processor](https://academy.vetra.io/academy/Build/WorkWithData/RelationalDbProcessor): In this chapter you'll implement a Todo-List relational database processor. This processor receives operations from the reactor and can use resultingS - [Publish your package](https://academy.vetra.io/academy/Build/Launch/PublishYourProject): This guide assumes familiarity with building document models in Vetra Studio. Please start with the Manual Todo tutorial or the Document Model Creatio - [Setup your environment](https://academy.vetra.io/academy/Build/Launch/SetupEnvironment): This guide sets up the Powerhouse CLI and configures a server machine to run Powerhouse services, for both development and production deployment. - [Configure your environment](https://academy.vetra.io/academy/Build/Launch/ConfigureEnvironment): After successfully setting up your server and installing the Powerhouse services using the ph service setup command as described in the Setup Environm - [Docker deployment guide](https://academy.vetra.io/academy/Build/Launch/DockerDeployment): Powerhouse provides official Docker images for deploying your applications in containerized environments. This guide covers the available Docker image - [Example use-cases](https://academy.vetra.io/academy/Build/ExampleUsecases/Overview): Explore real-world examples of applications built with the Powerhouse ecosystem. Each use-case provides a complete walkthrough from project setup to a - [Create a new chatroom project](https://academy.vetra.io/academy/Build/ExampleUsecases/Chatroom/CreateNewPowerhouseProject): This tutorial has a complete reference implementation available. You can: - [Write the document specification](https://academy.vetra.io/academy/Build/ExampleUsecases/Chatroom/DefineChatroomDocumentModel): This tutorial step has a corresponding implementation in the repository. After completing this step, your project will have a document model specifica - [Implement the document model reducers](https://academy.vetra.io/academy/Build/ExampleUsecases/Chatroom/ImplementOperationReducers): This tutorial covers two key implementations: - [Build the ChatRoom editor](https://academy.vetra.io/academy/Build/ExampleUsecases/Chatroom/ImplementChatroomEditor): This tutorial covers building the ChatRoom editor: - [Todo List (reference implementation)](https://academy.vetra.io/academy/Build/ExampleUsecases/TodoList/TodoList): The Todo List is the worked example used throughout the Build track. Rather than repeat it here, this page points you to the finished code so you can - [VetraPackageLibrary](https://academy.vetra.io/academy/Build/ExampleUsecases/VetraPackageLibrary/VetraPackageLibrary): Packages of documents are a core structuring mechanism in the Vetra framework, allowing developers to group and manage related document efficiently. T - [Cookbook](https://academy.vetra.io/academy/Lookup/Cookbook): This section covers recipes related to the ph-cmd, the command-line tool for Powerhouse project initialization, code generation, package management, a - [Glossary](https://academy.vetra.io/academy/Lookup/Glossary): - Powerhouse – A network organization that provides open-source software and services to support decentralized operations for other network organizati - [LLM docs](https://academy.vetra.io/academy/Lookup/LLMDocs): The Powerhouse Academy follows the llms.txt standard to provide machine-readable documentation for LLMs and AI coding tools. ## Optional - [llms-full.txt](https://academy.vetra.io/llms-full.txt): Complete documentation concatenated into a single file for full-context LLM ingestion