This repository contains the app data for the Lemonade App Marketplace.
marketplace/
├── apps.json # Generated - DO NOT EDIT DIRECTLY
├── pinned.json # Pinned apps list (CODEOWNERS only)
├── apps/
│ ├── open-webui/
│ │ ├── app.json # App metadata
│ │ └── logo.png # App logo (optional, 64x64 recommended)
│ ├── n8n/
│ │ ├── app.json
│ │ └── logo.png
│ └── ...
└── scripts/
└── build.py # Generates apps.json from app.json files
- Create a new folder in
apps/with your app's ID (lowercase, hyphenated) - Add an
app.jsonfile with the following structure:
{
"id": "your-app-id",
"name": "Your App Name",
"description": "A brief description of what your app does with Lemonade",
"category": ["code"],
"date_added": "2025-02-05",
"links": {
"app": "https://your-app-url.com",
"guide": "https://lemonade-server.ai/docs/server/apps/your-app/",
"video": "https://youtube.com/watch?v=..."
}
}| Field | Type | Description |
|---|---|---|
id |
string | Unique app identifier (lowercase, hyphenated) |
name |
string | Display name of the app |
description |
string | Brief description of what the app does with Lemonade |
category |
string[] | Array of category IDs (see Categories below) |
date_added |
string | Date the app was added, in YYYY-MM-DD format |
links.app |
string | Primary URL to the app |
| Field | Type | Description |
|---|---|---|
links.guide |
string | URL to integration guide/documentation |
links.video |
string | URL to demo/tutorial video |
- (Optional) Add a
logo.pngfile (64x64 pixels recommended) - Submit a pull request
| ID | Label |
|---|---|
chat |
Chat |
code |
Code |
creative |
Creative |
automation |
Automation |
app |
Apps |
Pinned apps appear first in the marketplace and are highlighted on the website. The list of pinned apps is managed in pinned.json.
Note: Only repository CODEOWNERS may modify
pinned.json. External contributors should not include changes to this file in their pull requests.
{
"pinned": [
"app-id-1",
"app-id-2"
]
}Apps in the marketplace are ordered as follows:
- Pinned apps first - Apps listed in
pinned.jsonappear at the top - By date added - Newer apps appear before older apps
- Alphabetically - Apps with the same date are sorted by name
The apps.json file is automatically generated when changes are pushed to main.
To build locally:
python scripts/build.pyThe generated apps.json is consumed by:
- lemonade-server.ai/marketplace - Web marketplace
- Lemonade Desktop App - Embedded marketplace panel
const response = await fetch(
'https://raw.githubusercontent.com/lemonade-sdk/marketplace/main/apps.json'
);
const data = await response.json();
console.log(data.apps); // Array of app objectsEach app in data.apps includes:
{
"id": "open-webui",
"name": "Open WebUI",
"description": "Feature-rich web interface for chatting with LLMs locally",
"category": ["chat"],
"date_added": "2025-02-05",
"links": {
"app": "https://...",
"guide": "https://...",
"video": "https://..."
},
"logo": "https://raw.githubusercontent.com/.../logo.png",
"pinned": true // Derived field - true if app is in pinned.json
}Apache 2.0 - See LICENSE