Skip to content
OpenAppPhysical access, fully managed
Login

AI agents and automation overview

If you are building an AI agent, integration script, or retrieval pipeline around physical access, OpenApp exposes the same capabilities through several surfaces. Pick the one that matches who runs the code and how much typing you need.

This guide is for developers and agent authors automating doors, gates, guest access, intercom flows, and building operations — not for end users operating the dashboard alone.

Sectors: private home · shared apartment building · office (incl. coworking) · short-term rental · hotel · campus · locker / parcel matrix — see Model by sector (canonical list and playbook links).

SurfaceBest forAuthNotes
HTTP APIAny language, curl proofs, codegenAPI key (X-API-Key)Canonical contract; see API reference and OpenAPI JSON.
Official SDKsProduction services in Python, Rust, Go, TypeScriptAPI key on clientShared core for Python/Rust/Node; see SDK overview.
OpenApp ScriptingBulk provisioning, CI, repeatable building setupScripting API + org contextRhai DSL; see Scripting reference.
MCP serverCursor / Claude / ChatGPT tool useHosted: OAuth or API key; local: API keyHosted at POST /api/v1/mcp (no scripting tools), or a local stdio / HTTP server. MCP server setup.

Use the HTTP API directly when you need a minimal dependency, are generating a client from OpenAPI, or are proving connectivity before adding an SDK.

Use an SDK when you want typed models, consistent retries and errors, and maintainable integration code in a supported language.

Use OpenApp Scripting when you are provisioning many integrations, devices, or policies in one shot (campus rollouts, scripted demos, migration jobs).

Use MCP when the consumer is an interactive coding agent that should discover orgs, entities, audit events, and actions through tools rather than reading raw OpenAPI. On hosted MCP, what an agent may do is set by the credential’s roles, the agent’s tool allow-list, and its confirmation mode. The local @openapp/mcp-server additionally keeps write tools off until OPENAPP_MCP_ALLOW_WRITES=1.

Physical actions (switchable.open, public portal open, invite execute) have real-world effects. Automations should:

  • Require explicit entity or invite identifiers — never guess ids.
  • Respect org policies and roles; use X-Org where the API requires organization context.
  • Prefer human confirmation for unlock actions in agent UIs unless policy explicitly allows unattended automation.
  • Log correlation ids from ApiErrorResponse for support and audit follow-up.
  • Every switchable.* action through the API is audited as entity.action.succeeded or entity.action.denied, attributed to the agent, API key, or user. See Query access and audit activity.

See Build an agent that controls physical access for a concrete setup path.

GoalGuide
STR portfolio (mixed hardware + PMS)Short-term rental portfolio access
Boutique hotel (unified vs split-stack)Boutique hotel access playbook
Shared apartment buildingShared apartment building access
Time-bound guest / rental accessCreate a time-bound guest invitation via API
Virtual intercom at the doorVirtual intercom — directory, call, unlock
PMS / SIS / IWMS / VRMS bridge, PMS connectorIntegrate OpenApp with your existing software
Site people and listing delegationManage site people and listing members
PalGate gate / garageOpen a gate with PalGate Cloud
Tasmota / ESP openerMake a Tasmota ESP an OpenApp opener
Home Assistant bridgeBridge Home Assistant entities
Audit / compliance signalsQuery access and audit activity
Locker / parcel releaseRelease a locker compartment
MCP server (Cursor / Claude Desktop)MCP server setup
Voice / ChatGPT / Alexa / SiriVoice control
ChatGPT Custom GPTChatGPT Custom GPT
Access policies (curfews, holds)Policies
First door openOpen the door with the HTTP API
WhatsApp door commandWhatsApp door commands
QuestionGuide
OpenApp vs SeamOpenApp vs Seam
OpenApp vs RemoteLock (STR)OpenApp vs RemoteLock
OpenApp vs ButterflyMXOpenApp vs ButterflyMX
OpenApp vs LatchOpenApp vs Latch
OpenApp vs legacy intercomOpenApp vs legacy intercom
OpenApp vs BrivoOpenApp vs Brivo
Hotel Salto/Brivo split-stackOpenApp vs Salto/Brivo hospitality
Unified platform vs split-stackUnified access platform vs split-stack
Build vs buy (Home Assistant)OpenApp + Home Assistant access control

Crawlers and RAG pipelines can start from docs llms.txt or the product narrative at openapp.house/llms.txt. The extended index is llms-full.txt.

  • Agents are first-class org principals (dashboard Organization resources → Agents) with confirmation mode, scoped credentials, and actor_kind=agent in audit. A scoped credential reaches only the routes and roles in its scope, can’t manage API keys or agents, read integration secrets, or run scripting, and gets 403 otherwise. An agent’s allowed_entity_ids is intersected with the key’s entity list; an agent with no list is not entity-restricted, so set one.
  • Operator copilot uses the same MCP-equivalent tools with review-before-commit (Enrich pattern).
  • Event skills (POST /orgs/{org_id}/skills) run as the agent principal when an audit event of a listed type is recorded—including pms.reservation.* events from the PMS connector. Packaged Cursor/Claude skills: packages/openapp-skills/.