Skip to Content
DocumentationReferenceconfig.json Options

Details of all options available in config.json

When adding a new app to the Companion App Store, you need to create a config.json file in the app’s folder. This file contains all the information needed to run the app. Below you can find all the options available in the config.json file.

OptionDescriptionExample valueRequired
nameName of the appNextcloudyes
idThis should be the same name as the foldernextcloudyes
availableIf set to false, the app will not be available in the app storetrueyes
short_descShort description of the appNextcloud is a suite of client-server software for creating and using file hosting services.yes
authorThe GitHub name of the authorhttps://nextcloud.comΒ yes
portPort used by the app. This port will be exposed to the host.8100yes
categoriesOne or more categories for the app[β€œutilities”, β€œnetwork”]yes
descriptionLong description of the appNextcloud is a suite of client-server software for creating and using file hosting services. Nextcloud is free and open-source, which means that anyone is allowed to install and operate it on their own private server devices.yes
cihub_app_versionApp manifest version. Start at 1 for new apps; increment when you change compose or config10yes
tipi_versionLegacy alias for cihub_app_version β€” still accepted but prefer cihub_app_version1no
versionThe actual version of the app (not the Companion Hub version)1.25.1yes
sourceLink for git repositoryhttps://github.com/nextcloud/dockerΒ yes
websiteLink to the official websitehttps://nextcloud.comΒ no
exposableIf set to true, the app will allow the user to expose it via a domain name.trueyes
force_exposeIf set to true, the app will require a domain name.trueno
generate_vapid_keysIf set to true, the app will generate VAPID keys for web push notifications. VAPID_PUBLIC_KEY and VAPID_PRIVATE_KEY will be available as environment variablestrueno
url_suffixIf set, the app will be accessible at https://<your-domain>/<url_suffix>my-appno
httpsIf set to true, the app will be accessible via https only.trueno
no_guiSet to true for apps with no GUI. Open button will be hiddentrueno
supported_architecturesIf the app is only available for a specific architecture, you can specify it here. If not given, app will be available for all architectures[β€œarm64”, β€œamd64”]yes
uid, gidThese parameters allow you to give a specific set of permission for the app’s data folder. Companion Hub will automatically chown the data directory with the provided gid and uid. Both options need to be specified in order to apply1000no
form_fieldsForm fields allow you to promt the user for input during the install, like a username or a passwordSee belowyes
dynamicUse the new docker-compose.json to dynamically generate a compose file. See Dynamic Composetrueno
deprecatedIf the app is deprecated it won’t exist in the app store and it will notify users that is no longer maintained.falseno
min_hub_versionMinimum Companion Hub version required for this appv4.5.0no
min_tipi_versionLegacy alias for min_hub_versionv3.0.0no
dynamic_configUse docker-compose.json dynamic compose (recommended for new apps)trueno
hub_integrationOpt-in Hub features: MCP client, inference variable mapping β€” see below{ "mcp_client": true }no
created_atThe date the app was created. You can use new Date().getTime() in your browser console to get the current timestamp1724134938430no
updated_atThe date the app was last updated. You can use new Date().getTime() in your browser console to get the current timestamp1724134938430no

Sometimes an app requires additional information to run, such as a username or a password. You can leverage the form_fields property in the config.json file to request that information. Here’s an example:

{ "form_fields": [ { "type": "text", "label": "Username", "max": 50, "min": 3, "required": true, "env_variable": "NEXTCLOUD_ADMIN_USER" }, { "type": "password", "label": "Password", "max": 50, "min": 3, "required": true, "env_variable": "NEXTCLOUD_ADMIN_PASSWORD" } ] }

You can choose between different types of fields. The app will automatically validate the user input before submitting.

TypeDescriptionExample value
textJust a string of textusername
passwordWill be hidden on typingpassword
emailAn email addresstest@example.org
numberAny number123
fqdnFully qualified domain nameexample.org
ipAny valid IPv4 address192.168.2.100
fqdnipCombination between IPv4 and FQDN192.168.2.100 or example.org
randomGenerate a random value for the user2e318419a49b70ad93766a5d6eb54d9ebbcceaeadd57c5f6897dbbe10afbc880
booleanA checkboxtrue or false

Here is a table of the available form_field properties:

NameDescriptionExample valueRequired
typeThe type of the form field to use, see above.textβœ…
labelThe label to show the user.Nextcloud Usernameβœ…
hintA small hint to show the user.The username you want to use for nextcloud❌
placeholderA placeholder for the form fielduser❌
defaultAdd a default value, used only if the required option is set to falseuser❌
regexUse a regex pattern to verify the user input^[0-9]+\.[0-9]+\.[0-9]+$❌
pattern_errorThe error to show when the regex pattern validation failsInvalid username❌
minThe minimum length for a text or password input5❌
maxThe maximum length for a text or password input100❌
requiredWhether the form field is required or nottrueβœ…
env_variableThe name of the variable you’ll use in your docker-compose.yml file.NEXTCLOUD_USERNAMEβœ…
optionsOptions for multi-selectSee below❌
encodingUsed only in addition to random type. Specify the random value encoding (base64 or hex)base64❌

When you use the random field type for a password or secret, the min value determines the generated string length. If min is omitted, a default length of 32 characters is used.

Using options in form fields

You can create a form field with options like this in your config.json. It will be rendered as a multi-select dropdown in the UI. label is what will be shown to the user and value is the actual value the environment variable will be set to when the corresponding option is selected.

Use options only when there are only specific pre-defined values for the field. If a user might want to use a custom value, use a normal text field and provide common examples in the label.

Hub integration (hub_integration)

Apps can opt in to Hub-provided environment variables and services.

MCP client

Agent apps that connect to Hub MCP set:

{ "hub_integration": { "mcp_client": true, "wake_endpoint": "/hooks/hub-wake", "wake_port": 3000, "sse_events": false } }

When enabled, Hub injects HUB_URL, HUB_MCP_URL, HUB_MCP_MESSAGES_URL, HUB_MCP_API_KEY, and HUB_WAKE_SECRET into the app’s environment.

Inference variables

AI apps map standardized Hub inference keys to their own env variable names:

{ "hub_integration": { "inference": { "llm_base_url": "LLM_API_BASE", "llm_api_key": "LLM_API_KEY", "chat_model": "LLM_DEFAULT_CHAT_MODEL", "embedding_model": "LLM_DEFAULT_EMBEDDING_MODEL", "vision_model": "LLM_DEFAULT_VISION_MODEL", "ollama_host": "OLLAMA_HOST" } } }
Hub keyHub resolves toDescription
llm_base_urlOpenAI-compatible base URLOllama /v1 or cloud provider
llm_api_keyAPI key"ollama" for local Ollama
chat_modelChat model IDFrom preferences or hardware recommendations
embedding_modelEmbedding model IDFrom preferences or recommendations
vision_modelVision model IDFrom preferences or recommendations
ollama_hostNative Ollama URLDirect Ollama API (not OpenAI-compatible)

See AI & Inference for resolution order and setup.

{ "label": "Select your favorite fruits", "type": "text", "required": true, "options": [ { "label": "Apple", "value": "apple" }, { "label": "Banana", "value": "banana" }, { "label": "Orange", "value": "orange" } ], "env_variable": "fruits" }
Last updated on