package.json
Rama main · réplica de lectura del repositorio original.
{
"$schema": "https://www.raycast.com/schemas/extension.json",
"name": "homelab",
"title": "Homelab",
"platforms": [
"macOS",
"Windows"
],
"description": "Your whole homelab in Raycast: stats, downloads, media requests, monitors, music, photos, books, documents, services, jobs, DNS, backups and money \u2014 one hub, every service optional.",
"icon": "icon.png",
"author": "aleksandar",
"license": "MIT",
"commands": [
{
"name": "home",
"title": "Homelab Home",
"subtitle": "Homelab",
"description": "One place for everything: live status, commands, quick links",
"mode": "view",
"keywords": [
"homelab",
"dashboard",
"hub"
]
},
{
"name": "stats",
"title": "Homelab Stats",
"subtitle": "Homelab",
"description": "Server and NAS stats at a glance",
"mode": "view"
},
{
"name": "menubar",
"title": "Homelab Menu Bar",
"subtitle": "Homelab",
"description": "CPU load and temperature in the menu bar",
"mode": "menu-bar",
"interval": "30s"
},
{
"name": "downloads",
"title": "Homelab Downloads",
"subtitle": "Homelab",
"description": "qBittorrent, SABnzbd, NZBget and slskd activity in one place",
"mode": "view"
},
{
"name": "request",
"title": "Discover Media",
"subtitle": "Homelab",
"description": "Browse trending/popular or search, and request movies & shows",
"mode": "view",
"keywords": [
"jellyseerr",
"request",
"movie",
"show",
"search"
]
},
{
"name": "requests",
"title": "Request History",
"subtitle": "Homelab",
"description": "Past and pending Jellyseerr requests \u2014 approve, decline, retry, delete",
"mode": "view",
"keywords": [
"jellyseerr",
"pending",
"approve",
"decline"
]
},
{
"name": "transaction",
"title": "Add Transaction",
"subtitle": "Homelab",
"description": "Firefly Pico assistant: template + amount + description, or one-tap templates",
"mode": "view",
"keywords": [
"firefly",
"pico",
"money",
"expense",
"spend"
]
},
{
"name": "monitors",
"title": "Homelab Monitors",
"subtitle": "Homelab",
"description": "Uptime Kuma monitor status \u2014 what's down right now",
"mode": "view",
"keywords": [
"kuma",
"uptime",
"down",
"status"
]
},
{
"name": "music",
"title": "Music Library",
"subtitle": "Homelab",
"description": "Browse and search the Navidrome library with cover art",
"mode": "view",
"keywords": [
"navidrome",
"music",
"album",
"artist"
]
},
{
"name": "notifications",
"title": "Notifications",
"subtitle": "Homelab",
"description": "ntfy alerts and download notifications from the last 7 days",
"mode": "view",
"keywords": [
"ntfy",
"alerts",
"notifications"
]
},
{
"name": "photos",
"title": "Photos",
"subtitle": "Homelab",
"description": "Browse and smart-search the Immich library",
"mode": "view",
"keywords": [
"immich",
"photos",
"pictures",
"gallery"
]
},
{
"name": "audiobooks",
"title": "Audiobooks",
"subtitle": "Homelab",
"description": "Audiobookshelf: continue listening, browse and search",
"mode": "view",
"keywords": [
"abs",
"audiobookshelf",
"audiobook",
"podcast"
]
},
{
"name": "calendar",
"title": "Media Calendar",
"subtitle": "Homelab",
"description": "Upcoming movies/episodes/albums and stuck arr queues",
"mode": "view",
"keywords": [
"radarr",
"sonarr",
"lidarr",
"upcoming",
"releases"
]
},
{
"name": "containers",
"title": "Containers",
"subtitle": "Homelab",
"description": "Komodo stacks: state and restart/start/stop",
"mode": "view",
"keywords": [
"komodo",
"docker",
"stack",
"restart"
]
},
{
"name": "services",
"title": "Services & Jobs",
"subtitle": "Homelab",
"description": "Native systemd services and scheduled jobs over SSH: state, last result, next run and logs",
"mode": "view",
"keywords": [
"systemd",
"services",
"timers",
"jobs",
"ssh",
"logs"
]
},
{
"name": "metube",
"title": "Send to MeTube",
"subtitle": "Homelab",
"description": "Queue a video or audio download from a URL",
"mode": "view",
"keywords": [
"metube",
"youtube",
"download",
"yt-dlp"
]
},
{
"name": "disks",
"title": "Disk Health",
"subtitle": "Homelab",
"description": "Scrutiny SMART status for every server and NAS disk",
"mode": "view",
"keywords": [
"scrutiny",
"smart",
"disk",
"hdd",
"ssd"
]
},
{
"name": "backups",
"title": "Backup Health",
"subtitle": "Homelab",
"description": "Backup freshness, integrity checks, repository sizes and disk/cloud usage across backup copies",
"mode": "view",
"keywords": [
"backrest",
"restic",
"backup",
"storage",
"disk",
"cloud",
"verification"
]
},
{
"name": "jellyfin",
"title": "Continue Watching",
"subtitle": "Homelab",
"description": "Jellyfin: now playing, resume, next up",
"mode": "view",
"keywords": [
"jellyfin",
"watch",
"resume",
"playing"
]
},
{
"name": "subtitles",
"title": "Subtitles",
"subtitle": "Homelab",
"description": "Subtitle sync queue and Bazarr wanted list",
"mode": "view",
"keywords": [
"bazarr",
"subsync",
"subtitles"
]
},
{
"name": "bills",
"title": "Upcoming Bills",
"subtitle": "Homelab",
"description": "Firefly month spend and upcoming subscriptions",
"mode": "view",
"keywords": [
"firefly",
"subscriptions",
"money",
"bills"
]
},
{
"name": "indexers",
"title": "Search Indexers",
"subtitle": "Homelab",
"description": "Prowlarr: search every indexer and grab releases",
"mode": "view",
"keywords": [
"prowlarr",
"torrent",
"usenet",
"grab",
"search"
]
},
{
"name": "adguard",
"title": "AdGuard Home",
"subtitle": "Homelab",
"description": "DNS dashboard: protection toggle, stats, top blocked, recent log, blocklists",
"mode": "view",
"keywords": [
"adguard",
"dns",
"blocklist",
"ads"
]
},
{
"name": "books",
"title": "Ebooks",
"subtitle": "Homelab",
"description": "Calibre-Web: search the library, send to Kindle, download",
"mode": "view",
"keywords": [
"calibre",
"ebook",
"kindle",
"book",
"epub"
]
},
{
"name": "paperless",
"title": "Paperless Search",
"subtitle": "Homelab",
"description": "Search document contents in Paperless-ngx, preview and download",
"mode": "view",
"keywords": [
"paperless",
"documents",
"ocr",
"receipts",
"invoices"
]
},
{
"name": "nudge",
"title": "Nudge Subtitles",
"subtitle": "Homelab",
"description": "Shift a subtitle file by \u00b1ms (pins it against the nightly sync), undo, unpin",
"mode": "view",
"keywords": [
"subtitle",
"nudge",
"sync",
"offset",
"srt"
]
},
{
"name": "nextcloud",
"title": "Nextcloud Files and Sharing",
"subtitle": "Homelab",
"description": "Browse, download and share files; search document contents and OCR with Elasticsearch",
"mode": "view",
"keywords": [
"nextcloud",
"files",
"download",
"share",
"elasticsearch",
"ocr"
]
},
{
"name": "vehicle",
"title": "Vehicle Expenses",
"subtitle": "Homelab",
"description": "LubeLogger \u2014 fuel, service, repairs and car expenses; log a new record",
"mode": "view",
"keywords": [
"lubelogger",
"car",
"vehicle",
"fuel",
"mileage",
"service",
"repair",
"expense",
"auto"
]
}
],
"preferences": [
{
"name": "configFile",
"title": "Env File",
"description": "Optional dotenv file that supplies any setting left empty here. Keys are UPPER_SNAKE (JELLYFIN_URL, JELLYFIN_API_KEY\u2026). See .env.example.",
"type": "textfield",
"required": false,
"placeholder": "~/.config/raycast-homelab/.env",
"default": "~/.config/raycast-homelab/.env"
},
{
"name": "glancesUrl",
"title": "Glances URL",
"description": "Base URL of your Glances instance. Leave empty to hide Glances features.",
"type": "textfield",
"required": false,
"placeholder": "https://glances.example.com"
},
{
"name": "storageMount",
"title": "Extra Mount Point",
"description": "A second filesystem from Glances to show next to / (e.g. a data SSD). Leave empty to show only the root filesystem.",
"type": "textfield",
"required": false,
"placeholder": "/mnt/storage"
},
{
"name": "tempsUrl",
"title": "Temperatures JSON URL",
"description": "Optional URL of a temps.json published by the companion temps-publish script (server CPU/disk + NAS disk temps).",
"type": "textfield",
"required": false,
"placeholder": "https://home.example.com/images/temps.json"
},
{
"name": "homepageUrl",
"title": "Dashboard URL",
"description": "Optional link to your dashboard (Homepage, Dashy\u2026) shown in the menu bar and Home links.",
"type": "textfield",
"required": false,
"placeholder": "https://home.example.com"
},
{
"name": "truenasUrl",
"title": "TrueNAS URL",
"description": "Base URL of your TrueNAS instance. Leave empty to hide TrueNAS features.",
"type": "textfield",
"required": false,
"placeholder": "https://nas.example.com"
},
{
"name": "truenasApiKey",
"title": "TrueNAS API Key",
"description": "Read-only key is enough (pool capacity + health). Leave empty to hide the NAS row.",
"type": "password",
"required": false
},
{
"name": "qbitUrl",
"title": "qBittorrent URL",
"description": "Base URL of your qBittorrent instance. Leave empty to hide qBittorrent features.",
"type": "textfield",
"required": false,
"placeholder": "https://qbit.example.com"
},
{
"name": "qbitUsername",
"title": "qBittorrent Username",
"description": "Web UI username.",
"type": "textfield",
"required": false,
"placeholder": "admin"
},
{
"name": "qbitPassword",
"title": "qBittorrent Password",
"description": "Web UI password. Never attempted while empty (qBittorrent IP-bans after 5 failures).",
"type": "password",
"required": false
},
{
"name": "sabnzbdUrl",
"title": "SABnzbd URL",
"description": "Base URL of your SABnzbd instance. Leave empty to hide SABnzbd features.",
"type": "textfield",
"required": false,
"placeholder": "https://sabnzbd.example.com"
},
{
"name": "sabnzbdApiKey",
"title": "SABnzbd API Key",
"description": "Config \u2192 General \u2192 API Key.",
"type": "password",
"required": false
},
{
"name": "nzbgetUrl",
"title": "NZBget URL",
"description": "Base URL of your NZBget instance. Leave empty to hide NZBget features.",
"type": "textfield",
"required": false,
"placeholder": "https://nzbget.example.com"
},
{
"name": "nzbgetUsername",
"title": "NZBget Username",
"description": "Settings \u2192 Security \u2192 ControlUsername.",
"type": "textfield",
"required": false,
"placeholder": "nzbget"
},
{
"name": "nzbgetPassword",
"title": "NZBget Password",
"description": "Settings \u2192 Security \u2192 ControlPassword.",
"type": "password",
"required": false
},
{
"name": "slskdUrl",
"title": "slskd URL",
"description": "Base URL of your slskd instance. Leave empty to hide slskd features.",
"type": "textfield",
"required": false,
"placeholder": "https://slskd.example.com"
},
{
"name": "slskdApiKey",
"title": "slskd API Key",
"description": "Options \u2192 Web \u2192 Authentication \u2192 API keys.",
"type": "password",
"required": false
},
{
"name": "jellyfinUrl",
"title": "Jellyfin URL",
"description": "Base URL of your Jellyfin instance. Leave empty to hide Jellyfin features.",
"type": "textfield",
"required": false,
"placeholder": "https://jellyfin.example.com"
},
{
"name": "jellyfinApiKey",
"title": "Jellyfin API Key",
"description": "Dashboard \u2192 API Keys.",
"type": "password",
"required": false
},
{
"name": "jellyfinUserId",
"title": "Jellyfin User ID",
"description": "Optional. Whose Continue Watching / Next Up to show; defaults to the first administrator.",
"type": "textfield",
"required": false,
"placeholder": "e.g. 3f1c\u2026"
},
{
"name": "jellyseerrUrl",
"title": "Jellyseerr URL",
"description": "Base URL of your Jellyseerr instance. Leave empty to hide Jellyseerr features.",
"type": "textfield",
"required": false,
"placeholder": "https://requests.example.com"
},
{
"name": "jellyseerrApiKey",
"title": "Jellyseerr API Key",
"description": "Settings \u2192 General \u2192 API Key (admin).",
"type": "password",
"required": false
},
{
"name": "radarrUrl",
"title": "Radarr URL",
"description": "Base URL of your Radarr instance. Leave empty to hide Radarr features.",
"type": "textfield",
"required": false,
"placeholder": "https://radarr.example.com"
},
{
"name": "radarrApiKey",
"title": "Radarr API Key",
"description": "Settings \u2192 General.",
"type": "password",
"required": false
},
{
"name": "sonarrUrl",
"title": "Sonarr URL",
"description": "Base URL of your Sonarr instance. Leave empty to hide Sonarr features.",
"type": "textfield",
"required": false,
"placeholder": "https://sonarr.example.com"
},
{
"name": "sonarrApiKey",
"title": "Sonarr API Key",
"description": "Settings \u2192 General.",
"type": "password",
"required": false
},
{
"name": "lidarrUrl",
"title": "Lidarr URL",
"description": "Base URL of your Lidarr instance. Leave empty to hide Lidarr features.",
"type": "textfield",
"required": false,
"placeholder": "https://lidarr.example.com"
},
{
"name": "lidarrApiKey",
"title": "Lidarr API Key",
"description": "Settings \u2192 General.",
"type": "password",
"required": false
},
{
"name": "chaptarrUrl",
"title": "Chaptarr / Readarr URL",
"description": "Base URL of your Chaptarr / Readarr instance. Leave empty to hide Chaptarr / Readarr features.",
"type": "textfield",
"required": false,
"placeholder": "https://chaptarr.example.com"
},
{
"name": "chaptarrApiKey",
"title": "Chaptarr / Readarr API Key",
"description": "Settings \u2192 General (any Readarr-compatible fork).",
"type": "password",
"required": false
},
{
"name": "prowlarrUrl",
"title": "Prowlarr URL",
"description": "Base URL of your Prowlarr instance. Leave empty to hide Prowlarr features.",
"type": "textfield",
"required": false,
"placeholder": "https://prowlarr.example.com"
},
{
"name": "prowlarrApiKey",
"title": "Prowlarr API Key",
"description": "Settings \u2192 General.",
"type": "password",
"required": false
},
{
"name": "bazarrUrl",
"title": "Bazarr URL",
"description": "Base URL of your Bazarr instance. Leave empty to hide Bazarr features.",
"type": "textfield",
"required": false,
"placeholder": "https://bazarr.example.com"
},
{
"name": "bazarrApiKey",
"title": "Bazarr API Key",
"description": "Settings \u2192 General.",
"type": "password",
"required": false
},
{
"name": "subsyncUrl",
"title": "Subtitle Sync Server URL",
"description": "Base URL of your Subtitle Sync Server instance. Leave empty to hide Subtitle Sync Server features.",
"type": "textfield",
"required": false,
"placeholder": "https://subtitles.example.com"
},
{
"name": "absUrl",
"title": "Audiobookshelf URL",
"description": "Base URL of your Audiobookshelf instance. Leave empty to hide Audiobookshelf features.",
"type": "textfield",
"required": false,
"placeholder": "https://audiobooks.example.com"
},
{
"name": "absToken",
"title": "Audiobookshelf API Token",
"description": "Settings \u2192 Users \u2192 your user \u2192 API token.",
"type": "password",
"required": false
},
{
"name": "navidromeUrl",
"title": "Navidrome URL",
"description": "Base URL of your Navidrome instance. Leave empty to hide Navidrome features.",
"type": "textfield",
"required": false,
"placeholder": "https://music.example.com"
},
{
"name": "navidromeUser",
"title": "Navidrome Username",
"description": "Any user; Subsonic token auth is used.",
"type": "textfield",
"required": false,
"placeholder": "admin"
},
{
"name": "navidromePassword",
"title": "Navidrome Password",
"description": "Password of that user.",
"type": "password",
"required": false
},
{
"name": "immichUrl",
"title": "Immich URL",
"description": "Base URL of your Immich instance. Leave empty to hide Immich features.",
"type": "textfield",
"required": false,
"placeholder": "https://immich.example.com"
},
{
"name": "immichApiKey",
"title": "Immich API Key",
"description": "Account Settings \u2192 API Keys.",
"type": "password",
"required": false
},
{
"name": "calibreUrl",
"title": "Calibre-Web URL",
"description": "Base URL of your Calibre-Web instance. Leave empty to hide Calibre-Web features.",
"type": "textfield",
"required": false,
"placeholder": "https://reader.example.com"
},
{
"name": "calibreUser",
"title": "Calibre-Web Username",
"description": "Used for OPDS + Send-to-Kindle.",
"type": "textfield",
"required": false,
"placeholder": "admin"
},
{
"name": "calibrePassword",
"title": "Calibre-Web Password",
"description": "Password of that user.",
"type": "password",
"required": false
},
{
"name": "paperlessUrl",
"title": "Paperless URL",
"description": "Base URL of your Paperless-ngx instance. Leave empty to hide Paperless features.",
"type": "textfield",
"required": false,
"placeholder": "https://paperless.example.com"
},
{
"name": "paperlessToken",
"title": "Paperless API Token",
"description": "Your Paperless profile \u2192 API Auth Token. Documents must be visible to this user.",
"type": "password",
"required": false
},
{
"name": "metubeUrl",
"title": "MeTube URL",
"description": "Base URL of your MeTube instance. Leave empty to hide MeTube features.",
"type": "textfield",
"required": false,
"placeholder": "https://metube.example.com"
},
{
"name": "metubeFolders",
"title": "MeTube Destinations",
"description": "Comma-separated extra folders as folder|Label[|video]. Add |video to download video instead of opus audio. Example: music|Music,clips|Clips|video",
"type": "textfield",
"required": false,
"placeholder": "music|Music,clips|Clips|video"
},
{
"name": "kumaUrl",
"title": "Uptime Kuma URL",
"description": "Base URL of your Uptime Kuma instance. Leave empty to hide Uptime Kuma features.",
"type": "textfield",
"required": false,
"placeholder": "https://kuma.example.com"
},
{
"name": "kumaStatusSlug",
"title": "Uptime Kuma Status Page Slug",
"description": "Slug of a public status page (used when no API key is set).",
"type": "textfield",
"required": false,
"placeholder": "home"
},
{
"name": "kumaApiKey",
"title": "Uptime Kuma API Key",
"description": "Settings \u2192 API Keys. With a key every monitor is read from /metrics, not just the status page.",
"type": "password",
"required": false
},
{
"name": "ntfyUrl",
"title": "ntfy URL",
"description": "Base URL of your ntfy instance. Leave empty to hide ntfy features.",
"type": "textfield",
"required": false,
"placeholder": "https://ntfy.example.com"
},
{
"name": "ntfyTopics",
"title": "ntfy Topics",
"description": "Comma-separated topics to read.",
"type": "textfield",
"required": false,
"placeholder": "alerts,downloads"
},
{
"name": "adguardUrl",
"title": "AdGuard Home URL",
"description": "Base URL of your AdGuard Home instance. Leave empty to hide AdGuard Home features.",
"type": "textfield",
"required": false,
"placeholder": "https://dns.example.com"
},
{
"name": "adguardUsername",
"title": "AdGuard Home Username",
"description": "Web UI username.",
"type": "textfield",
"required": false,
"placeholder": "admin"
},
{
"name": "adguardPassword",
"title": "AdGuard Home Password",
"description": "Web UI password.",
"type": "password",
"required": false
},
{
"name": "komodoUrl",
"title": "Komodo URL",
"description": "Base URL of your Komodo instance. Leave empty to hide Komodo features.",
"type": "textfield",
"required": false,
"placeholder": "https://komodo.example.com"
},
{
"name": "komodoApiKey",
"title": "Komodo API Key",
"description": "Settings \u2192 Profile \u2192 API keys.",
"type": "password",
"required": false
},
{
"name": "komodoApiSecret",
"title": "Komodo API Secret",
"description": "Shown once when the key is created.",
"type": "password",
"required": false
},
{
"name": "servicesSshHost",
"title": "Services SSH Host",
"description": "SSH destination for Services & Jobs: user@host or an alias from ~/.ssh/config. Uses noninteractive key or agent authentication and a previously trusted host key. Leave empty to disable.",
"type": "textfield",
"required": false,
"placeholder": "user@server.example.com"
},
{
"name": "servicesSshPort",
"title": "Services SSH Port",
"description": "Optional SSH port (1\u201365535). Leave empty to use your SSH configuration or port 22.",
"type": "textfield",
"required": false,
"placeholder": "22"
},
{
"name": "servicesSshIdentityFile",
"title": "Services SSH Identity File",
"description": "Optional path to your local SSH private key; ~/ is supported. Leave empty to use your SSH configuration or agent. Enter a file path, never the key itself.",
"type": "textfield",
"required": false,
"placeholder": "~/.ssh/id_ed25519"
},
{
"name": "backrestUrl",
"title": "Backrest URL",
"description": "Base URL of your Backrest instance. Leave empty to hide Backrest features.",
"type": "textfield",
"required": false,
"placeholder": "https://backrest.example.com"
},
{
"name": "backrestUsername",
"title": "Backrest Username",
"description": "Web UI username.",
"type": "textfield",
"required": false,
"placeholder": "admin"
},
{
"name": "backrestPassword",
"title": "Backrest Password",
"description": "Web UI password.",
"type": "password",
"required": false
},
{
"name": "backrestGraceHours",
"title": "Backup Freshness Grace (Hours)",
"description": "Extra time beyond each backup/check schedule before it is overdue. Defaults to 2 hours. Manual plans have no deadline.",
"type": "textfield",
"required": false,
"placeholder": "2"
},
{
"name": "scrutinyUrl",
"title": "Scrutiny URL",
"description": "Base URL of your Scrutiny instance. Leave empty to hide Scrutiny features.",
"type": "textfield",
"required": false,
"placeholder": "https://scrutiny.example.com"
},
{
"name": "speedtestUrl",
"title": "Speedtest Tracker URL",
"description": "Base URL of your Speedtest Tracker instance. Leave empty to hide Speedtest Tracker features.",
"type": "textfield",
"required": false,
"placeholder": "https://speedtest.example.com"
},
{
"name": "fireflyUrl",
"title": "Firefly III URL",
"description": "Base URL of your Firefly III instance. Leave empty to hide Firefly III features.",
"type": "textfield",
"required": false,
"placeholder": "https://firefly.example.com"
},
{
"name": "fireflyToken",
"title": "Firefly III Personal Access Token",
"description": "Options \u2192 Profile \u2192 OAuth \u2192 Personal Access Tokens.",
"type": "password",
"required": false
},
{
"name": "picoUrl",
"title": "Firefly Pico URL",
"description": "Base URL of your Firefly Pico instance. Leave empty to hide Firefly Pico features.",
"type": "textfield",
"required": false,
"placeholder": "https://pico.example.com"
},
{
"name": "subscriptionsUrl",
"title": "Subscriptions JSON URL",
"description": "Optional URL of a subscriptions.json published by the companion firefly-sub-publish script (upcoming bills summary).",
"type": "textfield",
"required": false,
"placeholder": "https://home.example.com/images/subscriptions.json"
},
{
"name": "forgejoUrl",
"title": "Forgejo / Gitea URL",
"description": "Base URL of your Forgejo / Gitea instance. Leave empty to hide Forgejo / Gitea features.",
"type": "textfield",
"required": false,
"placeholder": "https://git.example.com"
},
{
"name": "forgejoToken",
"title": "Forgejo / Gitea Access Token",
"description": "Settings → Applications → Generate token, with read/write on repository, issue and notification. Unlocks the Code screen (repos, pull requests, reviews, Actions).",
"type": "password",
"required": false
},
{
"name": "nextcloudUrl",
"title": "Nextcloud URL",
"description": "Base URL of Nextcloud, including its subpath if any.",
"type": "textfield",
"required": false
},
{
"name": "nextcloudUsername",
"title": "Nextcloud Username",
"description": "Your Nextcloud user ID (not display name).",
"type": "textfield",
"required": false
},
{
"name": "nextcloudAppPassword",
"title": "Nextcloud App Password",
"description": "Create an app password in Nextcloud \u2192 Personal settings \u2192 Security.",
"type": "password",
"required": false
},
{
"name": "lubeloggerUrl",
"type": "textfield",
"required": false,
"title": "LubeLogger URL",
"description": "Base URL of your LubeLogger instance, e.g. https://lubelogger.example.org",
"placeholder": "https://lubelogger.example.org"
},
{
"name": "lubeloggerUsername",
"type": "textfield",
"required": false,
"title": "LubeLogger Username",
"description": "Only needed if your LubeLogger requires a login (basic auth)",
"placeholder": "leave empty when LubeLogger has no account"
},
{
"name": "lubeloggerPassword",
"type": "password",
"required": false,
"title": "LubeLogger Password",
"description": "Only needed if your LubeLogger requires a login (basic auth)",
"placeholder": "leave empty when LubeLogger has no account"
},
{
"name": "lubeloggerCurrency",
"type": "textfield",
"required": false,
"title": "Vehicle Currency Label",
"description": "Shown next to costs, e.g. KM or EUR. LubeLogger's API does not report one.",
"placeholder": "KM"
},
{
"name": "lubeloggerDistanceUnit",
"type": "textfield",
"required": false,
"title": "Distance Unit Label",
"description": "Defaults to km",
"placeholder": "km"
},
{
"name": "lubeloggerVolumeUnit",
"type": "textfield",
"required": false,
"title": "Fuel Volume Unit Label",
"description": "Defaults to L",
"placeholder": "L"
},
{
"name": "lubeloggerVehicleId",
"type": "textfield",
"required": false,
"title": "Default Vehicle ID",
"description": "Which vehicle the Home row summarises when you have several",
"placeholder": "first vehicle"
},
{
"name": "lubeloggerDecimal",
"type": "dropdown",
"required": false,
"title": "LubeLogger Decimal Separator",
"description": "How LubeLogger's server locale parses numbers. Auto-detects from its own data.",
"default": "auto",
"data": [
{
"title": "Auto-detect",
"value": "auto"
},
{
"title": "Comma (1234,56)",
"value": ","
},
{
"title": "Dot (1234.56)",
"value": "."
}
]
},
{
"name": "searxngUrl",
"title": "SearXNG URL",
"description": "Base URL of your SearXNG instance (JSON API enabled). Leave empty to hide web search.",
"type": "textfield",
"required": false,
"placeholder": "https://search.example.com"
},
{
"name": "jellystatUrl",
"title": "Jellystat URL",
"description": "Base URL of your Jellystat instance. Leave empty to hide watch statistics.",
"type": "textfield",
"required": false,
"placeholder": "https://jellystat.example.com"
},
{
"name": "jellystatApiKey",
"title": "Jellystat API Key",
"description": "Jellystat → Settings → API Keys.",
"type": "password",
"required": false
}
],
"dependencies": {
"@raycast/api": "^1.88.4",
"@raycast/utils": "^1.18.1",
"cron-parser": "^5.10.0",
"fast-xml-parser": "^5.11.1"
},
"devDependencies": {
"@raycast/eslint-config": "^2.2.0",
"@types/node": "^22.9.0",
"@types/react": "^19.2.18",
"eslint": "^10.9.1",
"typescript": "^5.6.3"
},
"scripts": {
"dev": "ray develop",
"build": "ray build -e dist",
"typecheck": "tsc --noEmit",
"test:paperless": "node --test scripts/paperless-api.test.cjs",
"lint": "ray lint",
"lint:local": "eslint src",
"fix-lint": "ray lint --fix",
"gen:env": "node scripts/gen-env-example.mjs",
"test:nextcloud": "node --test scripts/nextcloud-api.test.cjs",
"test:services": "node --test scripts/services-api.test.cjs && python3 scripts/services-jobs.test.py",
"test:backups": "node --test scripts/backups-api.test.cjs scripts/backup-storage-api.test.cjs && python3 scripts/backup-storage.test.py"
},
"categories": [
"Developer Tools",
"Media",
"Productivity"
],
"keywords": [
"raycast",
"raycast-extension",
"homelab",
"self-hosted",
"jellyfin",
"jellyseerr",
"sonarr",
"radarr",
"lidarr",
"audiobookshelf",
"immich",
"paperless-ngx",
"uptime-kuma",
"firefly-iii"
],
"repository": {
"type": "git",
"url": "https://github.com/abjelosevic88/raycast-homelab.git"
},
"homepage": "https://github.com/abjelosevic88/raycast-homelab#readme"
}