{
  "slug": "code/app-manifest",
  "title": "App Manifest",
  "description": "Reference for the .cuitty/app.toml manifest used by Cuitty Code Apps.",
  "url": "https://cuitty.com/docs/code/app-manifest",
  "markdown_url": "https://cuitty.com/docs/code/app-manifest.md",
  "json_url": "https://cuitty.com/docs/code/app-manifest.json",
  "frontmatter": {
    "title": "App Manifest",
    "description": "Reference for the .cuitty/app.toml manifest used by Cuitty Code Apps.",
    "order": 11,
    "section": "Code",
    "updatedAt": "2026-05-21"
  },
  "headings": [],
  "body_markdown": "Apps are described by `.cuitty/app.toml` at the root of an app repository.\n\n```toml\n[app]\nname = \"deploy-guard\"\ndisplay_name = \"Deploy Guard\"\nslug = \"deploy-guard\"\nsummary = \"Require deploy evidence before production merges.\"\nowner = \"acme\"\nlicense = \"Apache-2.0\"\ndocs = \"README.md\"\nvisibility = \"private\"\n\n[app.source]\nrepo = \"acme/deploy-guard\"\nref = \"v1.0.0\"\n\n[[app.permissions]]\nresource = \"repository\"\nactions = [\"read\", \"create_pr\", \"manage_branches\"]\nreason = \"Reads deployment policy and opens remediation pull requests.\"\n\n[app.runtime]\nkind = \"airflow\"\ndag = \"code_app_run\"\ndagger_module = \"./dagger\"\nentrypoint = \"run\"\n\n[app.market]\ncategories = [\"security\", \"deployment\", \"policy\"]\nsupport_url = \"https://code.cuitty.dev/acme/deploy-guard/issues\"\n```\n\nRelease manifests are tied to immutable Git tags or commit SHAs. Branch refs are not valid for market releases.",
  "body_html": "<p>Apps are described by <code>.cuitty/app.toml</code> at the root of an app repository.</p>\n<pre class=\"astro-code github-dark\" style=\"background-color:#24292e;color:#e1e4e8; overflow-x: auto;\" tabindex=\"0\" data-language=\"toml\"><code><span class=\"line\"><span style=\"color:#E1E4E8\">[</span><span style=\"color:#B392F0\">app</span><span style=\"color:#E1E4E8\">]</span></span>\n<span class=\"line\"><span style=\"color:#E1E4E8\">name = </span><span style=\"color:#9ECBFF\">\"deploy-guard\"</span></span>\n<span class=\"line\"><span style=\"color:#E1E4E8\">display_name = </span><span style=\"color:#9ECBFF\">\"Deploy Guard\"</span></span>\n<span class=\"line\"><span style=\"color:#E1E4E8\">slug = </span><span style=\"color:#9ECBFF\">\"deploy-guard\"</span></span>\n<span class=\"line\"><span style=\"color:#E1E4E8\">summary = </span><span style=\"color:#9ECBFF\">\"Require deploy evidence before production merges.\"</span></span>\n<span class=\"line\"><span style=\"color:#E1E4E8\">owner = </span><span style=\"color:#9ECBFF\">\"acme\"</span></span>\n<span class=\"line\"><span style=\"color:#E1E4E8\">license = </span><span style=\"color:#9ECBFF\">\"Apache-2.0\"</span></span>\n<span class=\"line\"><span style=\"color:#E1E4E8\">docs = </span><span style=\"color:#9ECBFF\">\"README.md\"</span></span>\n<span class=\"line\"><span style=\"color:#E1E4E8\">visibility = </span><span style=\"color:#9ECBFF\">\"private\"</span></span>\n<span class=\"line\"></span>\n<span class=\"line\"><span style=\"color:#E1E4E8\">[</span><span style=\"color:#B392F0\">app</span><span style=\"color:#E1E4E8\">.</span><span style=\"color:#B392F0\">source</span><span style=\"color:#E1E4E8\">]</span></span>\n<span class=\"line\"><span style=\"color:#E1E4E8\">repo = </span><span style=\"color:#9ECBFF\">\"acme/deploy-guard\"</span></span>\n<span class=\"line\"><span style=\"color:#E1E4E8\">ref = </span><span style=\"color:#9ECBFF\">\"v1.0.0\"</span></span>\n<span class=\"line\"></span>\n<span class=\"line\"><span style=\"color:#E1E4E8\">[[</span><span style=\"color:#B392F0\">app</span><span style=\"color:#E1E4E8\">.</span><span style=\"color:#B392F0\">permissions</span><span style=\"color:#E1E4E8\">]]</span></span>\n<span class=\"line\"><span style=\"color:#E1E4E8\">resource = </span><span style=\"color:#9ECBFF\">\"repository\"</span></span>\n<span class=\"line\"><span style=\"color:#E1E4E8\">actions = [</span><span style=\"color:#9ECBFF\">\"read\"</span><span style=\"color:#E1E4E8\">, </span><span style=\"color:#9ECBFF\">\"create_pr\"</span><span style=\"color:#E1E4E8\">, </span><span style=\"color:#9ECBFF\">\"manage_branches\"</span><span style=\"color:#E1E4E8\">]</span></span>\n<span class=\"line\"><span style=\"color:#E1E4E8\">reason = </span><span style=\"color:#9ECBFF\">\"Reads deployment policy and opens remediation pull requests.\"</span></span>\n<span class=\"line\"></span>\n<span class=\"line\"><span style=\"color:#E1E4E8\">[</span><span style=\"color:#B392F0\">app</span><span style=\"color:#E1E4E8\">.</span><span style=\"color:#B392F0\">runtime</span><span style=\"color:#E1E4E8\">]</span></span>\n<span class=\"line\"><span style=\"color:#E1E4E8\">kind = </span><span style=\"color:#9ECBFF\">\"airflow\"</span></span>\n<span class=\"line\"><span style=\"color:#E1E4E8\">dag = </span><span style=\"color:#9ECBFF\">\"code_app_run\"</span></span>\n<span class=\"line\"><span style=\"color:#E1E4E8\">dagger_module = </span><span style=\"color:#9ECBFF\">\"./dagger\"</span></span>\n<span class=\"line\"><span style=\"color:#E1E4E8\">entrypoint = </span><span style=\"color:#9ECBFF\">\"run\"</span></span>\n<span class=\"line\"></span>\n<span class=\"line\"><span style=\"color:#E1E4E8\">[</span><span style=\"color:#B392F0\">app</span><span style=\"color:#E1E4E8\">.</span><span style=\"color:#B392F0\">market</span><span style=\"color:#E1E4E8\">]</span></span>\n<span class=\"line\"><span style=\"color:#E1E4E8\">categories = [</span><span style=\"color:#9ECBFF\">\"security\"</span><span style=\"color:#E1E4E8\">, </span><span style=\"color:#9ECBFF\">\"deployment\"</span><span style=\"color:#E1E4E8\">, </span><span style=\"color:#9ECBFF\">\"policy\"</span><span style=\"color:#E1E4E8\">]</span></span>\n<span class=\"line\"><span style=\"color:#E1E4E8\">support_url = </span><span style=\"color:#9ECBFF\">\"https://code.cuitty.dev/acme/deploy-guard/issues\"</span></span></code></pre>\n<p>Release manifests are tied to immutable Git tags or commit SHAs. Branch refs are not valid for market releases.</p>",
  "links_out": []
}