Overview
What is .rel?
.rel files are the native application format for RAVADY OS. They provide a single artifact that declares identity, entrypoints, permissions, assets, and lifecycle metadata so the launcher and runtime manager can install, verify, and run apps predictably.
Signed Manifest
Describe the app's identity, entrypoint, permissions, and trust material in one place.
Multi-Language Support
Bundle runtime code, UI assets, and supporting resources into a contained application unit.
Key Benefits
Reliable Delivery
Bundle code, UI assets, and metadata into one versioned artifact the system can verify and install consistently.
Runtime Control
Declared permissions and entrypoints let the launcher and runtime enforce policy before code runs.
Security
Works with sandboxing, trust checks, and recovery workflows. Per-app resource limits are on the roadmap.
File Format
Structure
A Ravady .rel file is a unified single-file application format combining YAML frontmatter (manifest & capability declarations), script logic (<script> in English CNL, Lua, JS, or Python), reactive HTML markup with {expression} templating and control flow, and scoped CSS:
---
name: Notes
version: 1.0.0
permissions:
filesystem: [data/notes/]
clipboard: true
---
<script lang="lua">
local notes = { "Buy milk", "Review PR" }
function add_note(text) table.insert(notes, text) end
</script>
<div class="notes-app">
<h1>Quick Notes</h1>
<ul>
{#each notes as note, i}
<li>{i}: {note}</li>
{:else}
<li class="empty">No notes yet</li>
{/each}
</ul>
</div>
<style>
.notes-app { font-family: 'Exo 2', sans-serif; color: #fff; }
.empty { color: #64748b; font-style: italic; }
</style>
Manifest (Frontmatter)
The inline frontmatter between --- delimiters declares the application's identity, version, and capability grants.
Required Fields
name- Application nameversion- Semantic version stringpermissions- Capability grants (filesystem paths, network endpoints)
Optional Fields
author- Developer namedescription- Brief application summaryentry- Optional entry point (defaults to self)runtime- Execution profile (e.g.lua,js,python)
Component Composition
Modular apps compose sub-components with <include src="..." />. Included components run in the same execution scope and inherit the parent's manifest security envelope:
<div class="dashboard">
<include src="/components/header.rel" />
<main>
<include src="/components/sidebar.rel" />
<section class="main-content">
<h2>{page_title}</h2>
</section>
</main>
</div>