Package Format
Structure
Section titled “Structure”An .oikapp package is a compressed tar.gz archive containing:
app-name-1.0.0.oikapp├── oikapi.json # App metadata (required)├── operations.json # Schema + demo data operations (required)├── checksums.sha256 # SHA256 checksums (required)├── signature.json # Ed25519 signature (optional)├── rules/ # Externalized business rule scripts (optional)├── templates/ # Externalized document template content (optional)├── webapp/ # Web application source files (optional)│ └── <name>/App.tsx├── emails/ # Compiled email templates (optional)├── generated/ # TypeScript type definitions (optional)└── demo-data/ # Demo data records (optional)Content like business rule scripts and document templates are externalized from operations.json into separate files for readability and version control.
Auto-prefixing
Section titled “Auto-prefixing”When building a package, the builder automatically prefixes all resource names with the app name:
| Source | Package |
|---|---|
tables/projects.json | myapp_projects |
tables/tasks.json | myapp_tasks |
"target_table": "tasks" | "target_table": "myapp_tasks" |
"system.users" | "system.users" (preserved) |
This prevents naming conflicts when multiple apps are installed on the same instance.
Building
Section titled “Building”# Validate firstoi validate my-app
# Build the packageoi build my-app
# Output: my-app-1.0.0.oikappInstalling
Section titled “Installing”# Install from the marketplaceoi app install @oikapi/my-app
# Install a specific versionoi app install @oikapi/my-app@1.2.0
# Install from a local fileoi app install ./my-app-1.0.0.oikappAny demo data shipped in the package is managed separately once installed — see oi app demo.
Signing
Section titled “Signing”Packages can be cryptographically signed with Ed25519 keys for supply-chain security. The
signature is stored as signature.json and covers the package’s checksums.sha256, so any
tampering with a packaged file invalidates it. The marketplace verifies signatures and surfaces
verification status to users.