[{"data":1,"prerenderedAt":720},["ShallowReactive",2],{"navigation_docs_en":3,"-en-reference-system-requirements":309,"-en-reference-system-requirements-surround":715},[4,30,72,112,195,299],{"title":5,"icon":6,"path":7,"stem":8,"children":9,"page":6},"Getting Started",false,"\u002Fen\u002Fgetting-started","en\u002F1.getting-started",[10,15,20,25],{"title":11,"path":12,"stem":13,"icon":14},"Introduction","\u002Fen\u002Fgetting-started\u002Fintroduction","en\u002F1.getting-started\u002F2.introduction","i-lucide-house",{"title":16,"path":17,"stem":18,"icon":19},"Quickstart","\u002Fen\u002Fgetting-started\u002Finstallation","en\u002F1.getting-started\u002F3.installation","i-lucide-download",{"title":21,"path":22,"stem":23,"icon":24},"Use Cases","\u002Fen\u002Fgetting-started\u002Fuse-cases","en\u002F1.getting-started\u002F4.use-cases","i-lucide-layers",{"title":26,"path":27,"stem":28,"icon":29},"Concepts","\u002Fen\u002Fgetting-started\u002Fconcepts","en\u002F1.getting-started\u002F5.concepts","i-lucide-book",{"title":26,"path":31,"stem":32,"children":33,"page":6},"\u002Fen\u002Fconcepts","en\u002F2.concepts",[34,38,43,48,53,58,63,68],{"title":35,"path":36,"stem":37,"icon":14},"Organization","\u002Fen\u002Fconcepts\u002Forganization","en\u002F2.concepts\u002F1.organization",{"title":39,"path":40,"stem":41,"icon":42},"Data Model","\u002Fen\u002Fconcepts\u002Fdata-model","en\u002F2.concepts\u002F2.data-model","i-lucide-database",{"title":44,"path":45,"stem":46,"icon":47},"Access Control","\u002Fen\u002Fconcepts\u002Faccess-permissions","en\u002F2.concepts\u002F3.access-permissions","i-lucide-user-key",{"title":49,"path":50,"stem":51,"icon":52},"Audit Logs","\u002Fen\u002Fconcepts\u002Faudit-logs","en\u002F2.concepts\u002F4.audit-logs","i-lucide-scroll-text",{"title":54,"path":55,"stem":56,"icon":57},"Introspection","\u002Fen\u002Fconcepts\u002Fintrospection","en\u002F2.concepts\u002F6.introspection","i-lucide-database-search",{"title":59,"path":60,"stem":61,"icon":62},"Query Engine","\u002Fen\u002Fconcepts\u002Fquery-engine","en\u002F2.concepts\u002F7.query-engine","i-lucide-workflow",{"title":64,"path":65,"stem":66,"icon":67},"AI","\u002Fen\u002Fconcepts\u002Fai","en\u002F2.concepts\u002F8.ai","i-lucide-sparkles",{"title":69,"path":70,"stem":71,"icon":42},"Caching","\u002Fen\u002Fconcepts\u002Fcaching","en\u002F2.concepts\u002F9.caching",{"title":73,"path":74,"stem":75,"children":76,"page":6},"Guides","\u002Fen\u002Fguides","en\u002F4.guides",[77,82,87,92,97,102,107],{"title":78,"path":79,"stem":80,"icon":81},"REST API Quickstart","\u002Fen\u002Fguides\u002Frest-api","en\u002F4.guides\u002F1.rest-api","i-lucide-plug",{"title":83,"path":84,"stem":85,"icon":86},"SDK Quickstart","\u002Fen\u002Fguides\u002Fsdk","en\u002F4.guides\u002F2.sdk","i-lucide-terminal",{"title":88,"path":89,"stem":90,"icon":91},"Configure SSO","\u002Fen\u002Fguides\u002Fconfigure-sso","en\u002F4.guides\u002F3.configure-sso","i-lucide-key-round",{"title":93,"path":94,"stem":95,"icon":96},"Configure MCP","\u002Fen\u002Fguides\u002Fmcp","en\u002F4.guides\u002F4.mcp","i-lucide-brain-cog",{"title":98,"path":99,"stem":100,"icon":101},"Customize Content Space","\u002Fen\u002Fguides\u002Fcustomize-content-space","en\u002F4.guides\u002F5.customize-content-space","i-lucide-columns-3-cog",{"title":103,"path":104,"stem":105,"icon":106},"Build an Application with AI Assistance","\u002Fen\u002Fguides\u002Fbuild-an-application","en\u002F4.guides\u002F6.build-an-application","i-lucide-route",{"title":108,"path":109,"stem":110,"icon":111},"Horizontal Scaling","\u002Fen\u002Fguides\u002Fhorizontal-scaling","en\u002F4.guides\u002F7.horizontal-scaling","i-lucide-network",{"title":113,"path":114,"stem":115,"children":116,"page":6},"Developer","\u002Fen\u002Fdeveloper","en\u002F5.developer",[117,171],{"title":118,"path":119,"stem":120,"children":121,"page":6},"Data Access","\u002Fen\u002Fdeveloper\u002Fapi","en\u002F5.developer\u002F1.api",[122,127,132,137,142,147,152,157,162,166],{"title":123,"path":124,"stem":125,"icon":126},"Overview","\u002Fen\u002Fdeveloper\u002Fapi\u002Foverview","en\u002F5.developer\u002F1.api\u002F1.overview","i-lucide-globe",{"title":128,"path":129,"stem":130,"icon":131},"Errors","\u002Fen\u002Fdeveloper\u002Fapi\u002Ferrors","en\u002F5.developer\u002F1.api\u002F10.errors","i-lucide-alert-triangle",{"title":133,"path":134,"stem":135,"icon":136},"Authentication","\u002Fen\u002Fdeveloper\u002Fapi\u002Fauthentication","en\u002F5.developer\u002F1.api\u002F2.authentication","i-lucide-lock",{"title":138,"path":139,"stem":140,"icon":141},"Reading Data","\u002Fen\u002Fdeveloper\u002Fapi\u002Freading-data","en\u002F5.developer\u002F1.api\u002F3.reading-data","i-lucide-book-open",{"title":143,"path":144,"stem":145,"icon":146},"Writing Data","\u002Fen\u002Fdeveloper\u002Fapi\u002Fwriting-data","en\u002F5.developer\u002F1.api\u002F4.writing-data","i-lucide-pencil",{"title":148,"path":149,"stem":150,"icon":151},"Filtering","\u002Fen\u002Fdeveloper\u002Fapi\u002Ffiltering","en\u002F5.developer\u002F1.api\u002F5.filtering","i-lucide-filter",{"title":153,"path":154,"stem":155,"icon":156},"Field Selection","\u002Fen\u002Fdeveloper\u002Fapi\u002Ffield-selection","en\u002F5.developer\u002F1.api\u002F6.field-selection","i-lucide-list-checks",{"title":158,"path":159,"stem":160,"icon":161},"Sorting & Pagination","\u002Fen\u002Fdeveloper\u002Fapi\u002Fsorting-pagination","en\u002F5.developer\u002F1.api\u002F7.sorting-pagination","i-lucide-arrow-up-down",{"title":163,"path":164,"stem":165,"icon":111},"Relational Data","\u002Fen\u002Fdeveloper\u002Fapi\u002Frelational-data","en\u002F5.developer\u002F1.api\u002F8.relational-data",{"title":167,"path":168,"stem":169,"icon":170},"Files & Assets","\u002Fen\u002Fdeveloper\u002Fapi\u002Ffiles","en\u002F5.developer\u002F1.api\u002F9.files","i-lucide-file-up",{"title":172,"path":173,"stem":174,"children":175,"page":6},"Client SDK","\u002Fen\u002Fdeveloper\u002Fsdk","en\u002F5.developer\u002F2.sdk",[176,180,185,190],{"title":177,"path":178,"stem":179,"icon":19},"Installation","\u002Fen\u002Fdeveloper\u002Fsdk\u002Finstallation","en\u002F5.developer\u002F2.sdk\u002F1.installation",{"title":181,"path":182,"stem":183,"icon":184},"Client Setup","\u002Fen\u002Fdeveloper\u002Fsdk\u002Fclient-setup","en\u002F5.developer\u002F2.sdk\u002F2.client-setup","i-lucide-settings",{"title":186,"path":187,"stem":188,"icon":189},"Type System","\u002Fen\u002Fdeveloper\u002Fsdk\u002Ftype-system","en\u002F5.developer\u002F2.sdk\u002F3.type-system","i-lucide-braces",{"title":191,"path":192,"stem":193,"icon":194},"Advanced","\u002Fen\u002Fdeveloper\u002Fsdk\u002Fadvanced","en\u002F5.developer\u002F2.sdk\u002F5.advanced","i-lucide-puzzle",{"title":196,"path":197,"stem":198,"children":199,"page":6},"Reference","\u002Fen\u002Freference","en\u002F6.reference",[200,204,209,225,229,234,270],{"title":201,"path":202,"stem":203,"icon":184},"Configuration","\u002Fen\u002Freference\u002Fenvironment-variables","en\u002F6.reference\u002F1.environment-variables",{"title":205,"path":206,"stem":207,"icon":208},"System Requirements","\u002Fen\u002Freference\u002Fsystem-requirements","en\u002F6.reference\u002F2.system-requirements","i-lucide-server",{"title":210,"path":211,"stem":212,"children":213,"icon":81},"Connectors","\u002Fen\u002Freference\u002Fconnectors","en\u002F6.reference\u002F3.connectors\u002Findex",[214,215,220],{"title":210,"path":211,"stem":212,"icon":81},{"title":216,"path":217,"stem":218,"icon":219},"PostgreSQL and Supabase","\u002Fen\u002Freference\u002Fconnectors\u002Fpostgresql-supabase","en\u002F6.reference\u002F3.connectors\u002F1.postgresql-supabase","i-simple-icons-postgresql",{"title":221,"path":222,"stem":223,"icon":224},"MySQL and MariaDB","\u002Fen\u002Freference\u002Fconnectors\u002Fmysql-mariadb","en\u002F6.reference\u002F3.connectors\u002F2.mysql-mariadb","i-simple-icons-mysql",{"title":226,"path":227,"stem":228,"icon":189},"Data Types Representation","\u002Fen\u002Freference\u002Fdata-types","en\u002F6.reference\u002F4.data-types",{"title":230,"path":231,"stem":232,"icon":233},"Permissions Reference","\u002Fen\u002Freference\u002Fpermissions","en\u002F6.reference\u002F5.permissions","i-lucide-shield",{"title":235,"path":236,"stem":237,"children":238,"page":6},"API Reference","\u002Fen\u002Freference\u002Fapi-reference","en\u002F6.reference\u002F6.api-reference",[239,243,248],{"title":240,"path":241,"stem":242,"icon":208},"System Endpoints","\u002Fen\u002Freference\u002Fapi-reference\u002Fsystem-endpoints","en\u002F6.reference\u002F6.api-reference\u002F1.system-endpoints",{"title":244,"path":245,"stem":246,"icon":247},"OpenAPI Spec","\u002Fen\u002Freference\u002Fapi-reference\u002Fopenapi-spec","en\u002F6.reference\u002F6.api-reference\u002F2.openapi-spec","i-lucide-file-code",{"title":249,"path":250,"stem":251,"children":252,"icon":254},"Schema Migration","\u002Fen\u002Freference\u002Fapi-reference\u002Fschema-migration","en\u002F6.reference\u002F6.api-reference\u002F3.schema-migration\u002Findex",[253,255,260,265],{"title":249,"path":250,"stem":251,"icon":254},"i-lucide-database-zap",{"title":256,"path":257,"stem":258,"icon":259},"Apply Migrations","\u002Fen\u002Freference\u002Fapi-reference\u002Fschema-migration\u002Fapply-migrations","en\u002F6.reference\u002F6.api-reference\u002F3.schema-migration\u002F1.apply-migrations","i-lucide-upload",{"title":261,"path":262,"stem":263,"icon":264},"Import Changes","\u002Fen\u002Freference\u002Fapi-reference\u002Fschema-migration\u002Fimport-changes","en\u002F6.reference\u002F6.api-reference\u002F3.schema-migration\u002F2.import-changes","i-lucide-refresh-cw",{"title":266,"path":267,"stem":268,"icon":269},"Operation Reference","\u002Fen\u002Freference\u002Fapi-reference\u002Fschema-migration\u002Foperation-reference","en\u002F6.reference\u002F6.api-reference\u002F3.schema-migration\u002F3.operation-reference","i-lucide-list-tree",{"title":271,"path":272,"stem":273,"children":274,"page":6},"Design Considerations","\u002Fen\u002Freference\u002Fdesign-considerations","en\u002F6.reference\u002F7.design-considerations",[275,279,284,289,294],{"title":123,"path":276,"stem":277,"icon":278},"\u002Fen\u002Freference\u002Fdesign-considerations\u002Foverview","en\u002F6.reference\u002F7.design-considerations\u002F1.overview","i-lucide-compass",{"title":280,"path":281,"stem":282,"icon":283},"Instance Configuration","\u002Fen\u002Freference\u002Fdesign-considerations\u002Finstance-configuration-related-problems","en\u002F6.reference\u002F7.design-considerations\u002F3.instance-configuration-related-problems","i-lucide-wrench",{"title":285,"path":286,"stem":287,"icon":288},"Overly Permissive Public Access","\u002Fen\u002Freference\u002Fdesign-considerations\u002Foverly-permissive","en\u002F6.reference\u002F7.design-considerations\u002F4.overly-permissive","i-lucide-shield-off",{"title":290,"path":291,"stem":292,"icon":293},"No Aggregates","\u002Fen\u002Freference\u002Fdesign-considerations\u002Fno-aggregates","en\u002F6.reference\u002F7.design-considerations\u002F5.no-aggregates","i-lucide-sigma",{"title":295,"path":296,"stem":297,"icon":298},"Cross-Data-Source Referential Integrity","\u002Fen\u002Freference\u002Fdesign-considerations\u002Fcross-data-source-referential-integrity","en\u002F6.reference\u002F7.design-considerations\u002F6.cross-data-source-referential-integrity","i-lucide-unlink",{"title":300,"icon":301,"path":302,"stem":303,"children":304,"page":6},"Release Notes","i-lucide-rocket","\u002Fen\u002Frelease-notes","en\u002F7.release-notes",[305],{"title":306,"path":307,"stem":308,"icon":301},"Changelog","\u002Fen\u002Frelease-notes\u002Fchangelog","en\u002F7.release-notes\u002F1.changelog",{"id":310,"title":205,"body":311,"description":708,"extension":709,"links":710,"meta":711,"navigation":712,"path":206,"seo":713,"stem":207,"__hash__":714},"docs_en\u002Fen\u002F6.reference\u002F2.system-requirements.md",{"type":312,"value":313,"toc":698},"minimark",[314,318,328,332,340,348,403,407,539,546,550,632,635,638,673,680,684],[315,316,123],"h2",{"id":317},"overview",[319,320,321,322,327],"p",{},"These are the minimum requirements for running Monospace in production. Sizing covers a single-node deployment — see ",[323,324,326],"a",{"href":325},"#scaling","Scaling"," for running multiple replicas.",[315,329,331],{"id":330},"hardware","Hardware",[319,333,334,335,339],{},"Sizing below assumes a single-node deployment and covers the Monospace application container alone. If you run PostgreSQL, RabbitMQ, and Redis on the same host — as in the reference ",[323,336,338],{"href":337},"\u002Fquick-start","compose file"," — allocate additional resources for those services.",[319,341,342,343,347],{},"The disk figure covers the container's own filesystem — the binary, logs, and temp files. It doesn't cover file storage: store assets on an S3-compatible bucket rather than the container's disk. See ",[323,344,346],{"href":345},"#service-dependencies","File \u002F object storage"," below.",[349,350,351,366],"table",{},[352,353,354],"thead",{},[355,356,357,360,363],"tr",{},[358,359],"th",{},[358,361,362],{},"Minimum",[358,364,365],{},"Recommended",[367,368,369,381,392],"tbody",{},[355,370,371,375,378],{},[372,373,374],"td",{},"vCPU",[372,376,377],{},"0.5",[372,379,380],{},"1",[355,382,383,386,389],{},[372,384,385],{},"RAM",[372,387,388],{},"1 GB",[372,390,391],{},"2 GB",[355,393,394,397,400],{},[372,395,396],{},"Disk",[372,398,399],{},"20 GB SSD",[372,401,402],{},"50 GB SSD",[315,404,406],{"id":405},"service-dependencies","Service Dependencies",[349,408,409,422],{},[352,410,411],{},[355,412,413,416,419],{},[358,414,415],{},"Component",[358,417,418],{},"Required",[358,420,421],{},"Requirement",[367,423,424,449,459,469,478,488,498,516],{},[355,425,426,429,431],{},[372,427,428],{},"Deployment",[372,430,418],{},[372,432,433,434,438,439,442,443,448],{},"Docker \u002F Docker Compose. The image is Linux-only, built for ",[435,436,437],"code",{},"linux\u002Famd64"," and ",[435,440,441],{},"linux\u002Farm64"," — no Windows containers. See the reference ",[323,444,338],{"href":445,"rel":446},"https:\u002F\u002Fdocs.monospace.io\u002Fquick-start",[447],"nofollow",".",[355,450,451,454,456],{},[372,452,453],{},"System database",[372,455,418],{},[372,457,458],{},"PostgreSQL 14–18, with backups enabled.",[355,460,461,464,466],{},[372,462,463],{},"Event bus",[372,465,418],{},[372,467,468],{},"RabbitMQ 3.7.0+ — queues background email delivery (welcome, invite, and password-reset messages) and, in clustered mode, broadcasts metadata changes between replicas.",[355,470,471,473,475],{},[372,472,346],{},[372,474,418],{},[372,476,477],{},"S3-compatible bucket for asset storage — the expected choice for production. Local disk works for single-node use, but the container's disk is ephemeral unless you mount a persistent volume.",[355,479,480,483,485],{},[372,481,482],{},"Email \u002F SMTP",[372,484,418],{},[372,486,487],{},"Needed for password-reset and invite emails.",[355,489,490,493,495],{},[372,491,492],{},"TLS \u002F proxy",[372,494,418],{},[372,496,497],{},"Monospace doesn't terminate TLS itself. Recommend TLS 1.2+ at the proxy.",[355,499,500,503,505],{},[372,501,502],{},"Secrets \u002F key material",[372,504,418],{},[372,506,507,508,511,512,515],{},"JWT signing keys (Ed25519) and a KMS master key, generated once by the ",[435,509,510],{},"keygen"," init container into a persistent ",[435,513,514],{},"\u002Fkeys"," volume.",[355,517,518,521,524],{},[372,519,520],{},"Cache",[372,522,523],{},"Required by default",[372,525,526,527],{},"Redis 7.2+ or Valkey 7.2+. CI tests Redis 7.4 and 8.10 and Valkey 7.2 and 9.1. To run without caching, set ",[528,529,531,532,535,536,448],"env-var",{"name":530},"cache__enabled"," to ",[435,533,534],{},"false",". See ",[323,537,69],{"href":538},"\u002Fconcepts\u002Fcaching",[540,541,542,543,545],"warning",{},"Back up the ",[435,544,514],{}," volume. Losing it makes KMS-encrypted data unrecoverable — there's no restore path.",[315,547,549],{"id":548},"network-connectivity","Network & Connectivity",[349,551,552,563],{},[352,553,554],{},[355,555,556,558,561],{},[358,557,415],{},[358,559,560],{},"Direction",[358,562,421],{},[367,564,565,580,595,605,619],{},[355,566,567,570,573],{},[372,568,569],{},"Application traffic",[372,571,572],{},"Inbound",[372,574,575,576,579],{},"TCP 8100 by default (",[435,577,578],{},"MONOSPACE_PORT",") — single port serves both the API and Studio's static assets in the production image.",[355,581,582,585,588],{},[372,583,584],{},"SMTP relay",[372,586,587],{},"Outbound",[372,589,590,591],{},"To whichever host you configure under ",[528,592,448],{"name":593,"section":594},"system_emailer__host","email",[355,596,597,600,602],{},[372,598,599],{},"Object storage",[372,601,587],{},[372,603,604],{},"To S3, or an S3-compatible endpoint, if you're not using local disk.",[355,606,607,610,612],{},[372,608,609],{},"Licensing API",[372,611,587],{},[372,613,614,615,618],{},"HTTPS to ",[435,616,617],{},"https:\u002F\u002Flicensing.monospace.io"," — needed for licensed features to validate. Allowlist this if you're behind an egress firewall.",[355,620,621,624,626],{},[372,622,623],{},"Anonymous usage telemetry",[372,625,587],{},[372,627,614,628,631],{},[435,629,630],{},"https:\u002F\u002Ftelemetry.monospace.io\u002Fv2\u002Fevents"," — sends an install ID, version, a configuration snapshot, and operation counts. Never credentials, connection details, or your data. Allowlist this if you're behind an egress firewall.",[315,633,326],{"id":634},"scaling",[319,636,637],{},"Monospace supports both vertical and horizontal scaling. Clustered mode is enabled by default, including on a single replica.",[639,640,641,653],"ul",{},[642,643,644,648,649,652],"li",{},[645,646,647],"strong",{},"Vertical"," — increase vCPU, RAM, or disk on the existing node, per the ",[323,650,331],{"href":651},"#hardware"," table above.",[642,654,655,658,659],{},[645,656,657],{},"Horizontal"," — run multiple replicas in clustered mode:\n",[639,660,661,664,667,670],{},[642,662,663],{},"Replicas coordinate metadata changes through PostgreSQL and RabbitMQ.",[642,665,666],{},"Local disk file storage is rejected outright in clustered mode unless the path is a shared mount every replica can reach (e.g., NFS). Use S3-compatible object storage instead.",[642,668,669],{},"A release with a destructive migration needs a full cluster restart — otherwise the first replica to pick up the new version migrates the database while the others keep querying a schema that no longer matches.",[642,671,672],{},"Rolling back a release needs a database restore. A replica refuses to start against a system database with a migration newer than the one it knows.",[319,674,675,676,679],{},"See ",[323,677,108],{"href":678},"\u002Fguides\u002Fhorizontal-scaling"," for shared storage, replica configuration, health checks, and upgrades.",[315,681,683],{"id":682},"see-also","See Also",[639,685,686,692],{},[642,687,688,691],{},[323,689,177],{"href":690},"\u002Fgetting-started\u002Finstallation"," — set up Monospace with the reference Docker Compose stack",[642,693,694,697],{},[323,695,201],{"href":696},"\u002Freference\u002Fenvironment-variables"," — every environment variable, including the ones referenced above",{"title":699,"searchDepth":700,"depth":700,"links":701},"",2,[702,703,704,705,706,707],{"id":317,"depth":700,"text":123},{"id":330,"depth":700,"text":331},{"id":405,"depth":700,"text":406},{"id":548,"depth":700,"text":549},{"id":634,"depth":700,"text":326},{"id":682,"depth":700,"text":683},"Minimum hardware, service dependencies, and network requirements for running Monospace in production.","md",null,{},{"icon":208},{"title":205,"description":708},"M58A5rlSvrt_nS_MI5Nn0miiurhC5PGXRuxLW_avtv8",[716,718],{"title":201,"path":202,"stem":203,"description":717,"icon":184,"children":-1},"Configuring your Monospace environment.",{"title":210,"path":211,"stem":212,"description":719,"icon":81,"children":-1},"Supported database connectors and their configuration options.",1790103691129]