Documentation
Jan Data Folder

Jan Data Folder

Jan stores your data locally in your own filesystem in a universal file format (JSON). We build for privacy by default and do not collect or sell your data.

This guide helps you understand where and how this data is stored.

Open the Data Folder

To open the Jan data folder from the app:

  1. Click the System monitor button on your Jan app.
  2. Click the App Log button.
  3. This redirects you to the Jan data folder.

# Windows
~/AppData/Roaming/Jan/data
# Mac
~/Library/Application\ Support/Jan/data
# Linux
## Custom installation directory
$XDG_CONFIG_HOME = /home/username/custom_config
or
## Default installation directory
~/.config/Jan/data

Folder Structure

Jan app data folder should have the following folder structure:

Jan is stored in the root ~/jan by default.


/assistants
/jan
assistant.json
/extensions
extensions.json
/@janhq
/extension_A
package.json
/logs
/app.txt
/models
/model_A
model.yaml
model_A.yaml
/settings
settings.json
/@janhq
/extension_A_Settings
settings.json
/themes
/dark-dimmed
/joi-dark
/joi-light
/night-blue
/threads
/jan_thread_A
messages.jsonl
thread.json
messages.jsonl

jan/ (The Root Directory)

This is the primary directory where all files related to Jan are stored. It typically resides in the user's home directory.

assistants/

Stores configuration files for various AI assistants. Each assistant within this directory can have different settings.

  • Default Assistant: Located in /assistants/jan/, it includes an assistant.json configuring the default settings and capabilities. The default sample of assistan.json is as follows:

{
"avatar": "",
"id": "jan",
"object": "assistant",
"created_at": 1715132389207,
"name": "Jan",
"description": "A default assistant that can use all downloaded models",
"model": "*",
"instructions": ""
}

Each parameter in the file is defined as follows:

ParameterDescriptionTypeDefault Value
idIdentifier for the assistant, defaults to "jan".stringjan
avatarThe avatar image for the assistant.stringNone
objectSpecifies the assistant type in OpenAI-compatible API responses.stringNone
created_atTimestamp indicating when the assistant was created.stringNone
nameDisplay name for the assistant.stringJan
descriptionA description of the assistant's role.stringA default assistant that can use all downloaded models.
modelDefines which models the assistant can use, with * indicating all models are available.string*
instructionsDefault instructions provided to new threads.stringNone
file_idsField for referencing file IDs in OpenAI-compatible responses.stringNone
toolsList of tools available for the assistant, with only the "retrieval" tool supported so far.arrayretrieval
typeSpecifies the type of tool, default is "retrieval".stringretrieval
enabledIndicates whether the tool is enabled by default.booleantrue
useTimeWeightedRetrieverControls if the time-weighted retrieval feature is enabled.booleanfalse
settingsConfiguration settings for the tool (retrieval tool in this case).objectNone
top_kNumber of top results to return in retrieval, with a default of 2.number2
chunk_sizeDefines the size of text chunks to process for the retrieval tool.number1024
chunk_overlapDetermines the amount of overlap between text chunks in the retrieval process.number64
retrieval_templateTemplate for formatting the retrieval tool's responses to queries.stringNone

extensions/

Extensions enhance Jan's functionality by adding new capabilities or integrating external services.

  • @janhq: The root folder for all extensions by the author. Extensions with organization-level names (e.g., @janhq/monitoring-extension) are stored here. If there is no organization, the folder holds the extension directly (e.g., example-extension).

  • extensions.json: A file that lists all installed extensions and their metadata, taken from each extension’s package.json. It helps avoid scanning all extension folders, improving performance.

logs/

Logs from the application are stored here. This is useful for troubleshooting and monitoring the application's behavior over time. The file /logs/app.txt uses prefixes to indicate the source of the logs:

  • [APP]: App logs
  • [SERVER]: API server logs
  • [SPECS]: Hardware information logs

models/

Stores the AI models that the assistants use to process requests and generate responses.

  • Model Configurations: Each model directory, such as /models/modelA/, contains a model.json with settings specific to that model.

To see the full list of model.json parameters, please see here.

settings/

General settings for the application are stored here, separate from individual assistant or engine configurations.

  • Extension-specific Settings: Additional settings for extensions are stored in respective subdirectories under /settings/@janhq/. Each parameter in the file is defined as follows:
ParameterDescription
keyThe setting key.
titleThe setting title.
descriptionThe setting description.
controllerTypeThe type of setting component (checkbox, input, slider, etc.).
controllerPropsProperties of the controller (e.g., value, placeholder, textAlign).
extensionNameThe extension ID, used to map with the parent extension.
  • General Settings: The settings.json in the /settings/ directory holds application settings related to the GPU acceleration. Each parameter in the file is defined as follows:
ParameterDescription
notifyWhether notifications are enabled (true/false).
run_modeThe mode the application is running in (e.g., "cpu").
nvidia_driver.existWhether the NVIDIA driver is present (true/false).
nvidia_driver.versionThe version of the installed NVIDIA driver.
cuda.existWhether CUDA is available (true/false).
cuda.versionThe version of CUDA installed.
gpus[0].idThe ID of the GPU (e.g., "0").
gpus[0].vramThe amount of VRAM for the GPU (in MB).
gpus[0].nameThe name of the GPU (e.g., "NVIDIA GeForce RTX 3050 Laptop GPU").
gpus[0].archThe architecture of the GPU (e.g., "ampere").
gpu_highest_vramThe ID of the GPU with the highest VRAM.
gpus_in_useThe list of GPU IDs currently in use (e.g., "0").
is_initialIndicates whether it's the initial run (true/false).
vulkanWhether Vulkan support is available (true/false).

themes/

The themes directory contains different visual themes for the application, allowing customization of the user interface. Each of theme directory contains the theme.json that has the following parameters:

ParameterDescription
idThe theme's ID.
displayNameTheme display name, as seen in theme settings.
reduceTransparentSetting to reduce transparency of the window/background.
nativeThemeIndicates whether the theme depends on the OS's light/dark settings.
variablesContains all possible component configurations.

threads/

Threads history is kept in this directory. Each session or thread is stored in a way that makes it easy to review past interactions. Each thread is stored in its subdirectory, such as /threads/jan_unixstamp/, with files like messages.jsonl and thread.json that contains the following parameters:

  • messages.jsonl: Array of OpenAI compatible message objects belong to the thread. For example:

{"id":"01J6Y6FH8PFTHQB5PNJTHEN27C","thread_id":"jan_1725437954","type":"Thread","role":"assistant","content":
[{"type":"text","text":{"value":"Hello! Is there something I can help you with or would you like to chat?","annotations":
[]}}],"status":"ready","created":1725442802966,"updated":1725442802966,"object":"thread.message"}

  • thread.json: The thread's metadata that contains the following parameters:
ParameterDescription
idThread's ID (can be generated by the folder name).
object"thread" (OpenAI-compatible field).
titleThread's title (editable in the GUI from the Thread List on the left panel).
assistantsContains cloned assistant metadata and specialized settings for the thread. Includes all assistant settings mentioned under the Jan assistant section.
modelThe selected model and its settings/parameters for the thread. Changes made by users to thread settings are written here, rather than in model.json. Also contains the ID and engine of the selected model for quick querying by extensions.
metadataAdditional thread data, such as lastMessage, which provides GUI information but does not use OpenAI-compatible fields.

Open the Data Folder

To open the Jan data folder, follow the steps in the Settings guide.

Delete Jan Data Folder

If you have uninstalled the Jan app, you may also want to delete the Jan data folder. You can automatically remove this folder during uninstallation by selecting OK when prompted.

Delete Data Folder

If you missed this step and need to delete the folder manually, please follow these instructions:

  1. Go to the root data folder in your Users directory.
  2. Locate the Jan data folder.
  3. Delete the folder manually.