diff --git a/.github/workflows/jan-docs.yml b/.github/workflows/jan-docs.yml index 3e92903c5..e6cc0977b 100644 --- a/.github/workflows/jan-docs.yml +++ b/.github/workflows/jan-docs.yml @@ -53,6 +53,9 @@ jobs: - name: Install dependencies working-directory: docs run: yarn install + - name: Clean output directory + working-directory: docs + run: rm -rf out/* .next/* - name: Build website working-directory: docs run: export NODE_ENV=production && yarn build && cp _redirects out/_redirects && cp _headers out/_headers diff --git a/.github/workflows/jan-tauri-build-nightly-external.yaml b/.github/workflows/jan-tauri-build-nightly-external.yaml index b281cdbc1..167b4d223 100644 --- a/.github/workflows/jan-tauri-build-nightly-external.yaml +++ b/.github/workflows/jan-tauri-build-nightly-external.yaml @@ -15,7 +15,6 @@ on: - 'pre-install/**' - 'Makefile' - 'package.json' - - 'mise.toml' jobs: get-update-version: diff --git a/.github/workflows/jan-tauri-build-nightly.yaml b/.github/workflows/jan-tauri-build-nightly.yaml index 65a035c38..7949c0723 100644 --- a/.github/workflows/jan-tauri-build-nightly.yaml +++ b/.github/workflows/jan-tauri-build-nightly.yaml @@ -35,7 +35,6 @@ on: - 'pre-install/**' - 'Makefile' - 'package.json' - - 'mise.toml' jobs: diff --git a/.github/workflows/template-tauri-build-linux-x64-external.yml b/.github/workflows/template-tauri-build-linux-x64-external.yml index 59c14a3d6..a88c48267 100644 --- a/.github/workflows/template-tauri-build-linux-x64-external.yml +++ b/.github/workflows/template-tauri-build-linux-x64-external.yml @@ -79,8 +79,33 @@ jobs: jq --arg version "${{ inputs.new_version }}" '.version = $version' web-app/package.json > /tmp/package.json mv /tmp/package.json web-app/package.json - ctoml ./src-tauri/Cargo.toml dependencies.tauri.features[] "devtools" + # Update tauri plugin versions + + jq --arg version "${{ inputs.new_version }}" '.version = $version' ./src-tauri/plugins/tauri-plugin-hardware/package.json > /tmp/package.json + mv /tmp/package.json ./src-tauri/plugins/tauri-plugin-hardware/package.json + + echo "---------./src-tauri/plugins/tauri-plugin-hardware/package.json---------" + cat ./src-tauri/plugins/tauri-plugin-hardware/package.json + + jq --arg version "${{ inputs.new_version }}" '.version = $version' ./src-tauri/plugins/tauri-plugin-llamacpp/package.json > /tmp/package.json + mv /tmp/package.json ./src-tauri/plugins/tauri-plugin-llamacpp/package.json + + echo "---------./src-tauri/plugins/tauri-plugin-llamacpp/package.json---------" + cat ./src-tauri/plugins/tauri-plugin-llamacpp/package.json + + ctoml ./src-tauri/plugins/tauri-plugin-hardware/Cargo.toml package.version "${{ inputs.new_version }}" + echo "---------./src-tauri/plugins/tauri-plugin-hardware/Cargo.toml---------" + cat ./src-tauri/plugins/tauri-plugin-hardware/Cargo.toml + + ctoml ./src-tauri/plugins/tauri-plugin-llamacpp/Cargo.toml package.version "${{ inputs.new_version }}" + echo "---------./src-tauri/plugins/tauri-plugin-llamacpp/Cargo.toml---------" + cat ./src-tauri/plugins/tauri-plugin-llamacpp/Cargo.toml + ctoml ./src-tauri/Cargo.toml package.version "${{ inputs.new_version }}" + echo "---------./src-tauri/Cargo.toml---------" + cat ./src-tauri/Cargo.toml + + ctoml ./src-tauri/Cargo.toml dependencies.tauri.features[] "devtools" if [ "${{ inputs.channel }}" != "stable" ]; then jq '.plugins.updater.endpoints = ["https://delta.jan.ai/${{ inputs.channel }}/latest.json"]' ./src-tauri/tauri.conf.json > /tmp/tauri.conf.json diff --git a/.github/workflows/template-tauri-build-linux-x64-flatpak.yml b/.github/workflows/template-tauri-build-linux-x64-flatpak.yml index 2807a74ae..15d4827f7 100644 --- a/.github/workflows/template-tauri-build-linux-x64-flatpak.yml +++ b/.github/workflows/template-tauri-build-linux-x64-flatpak.yml @@ -100,13 +100,36 @@ jobs: jq --arg version "${{ inputs.new_version }}" '.version = $version' web-app/package.json > /tmp/package.json mv /tmp/package.json web-app/package.json - # Temporarily enable devtool on prod build - ctoml ./src-tauri/Cargo.toml dependencies.tauri.features[] "devtools" - cat ./src-tauri/Cargo.toml + # Update tauri plugin versions + + jq --arg version "${{ inputs.new_version }}" '.version = $version' ./src-tauri/plugins/tauri-plugin-hardware/package.json > /tmp/package.json + mv /tmp/package.json ./src-tauri/plugins/tauri-plugin-hardware/package.json + + echo "---------./src-tauri/plugins/tauri-plugin-hardware/package.json---------" + cat ./src-tauri/plugins/tauri-plugin-hardware/package.json + + jq --arg version "${{ inputs.new_version }}" '.version = $version' ./src-tauri/plugins/tauri-plugin-llamacpp/package.json > /tmp/package.json + mv /tmp/package.json ./src-tauri/plugins/tauri-plugin-llamacpp/package.json + + echo "---------./src-tauri/plugins/tauri-plugin-llamacpp/package.json---------" + cat ./src-tauri/plugins/tauri-plugin-llamacpp/package.json + + ctoml ./src-tauri/plugins/tauri-plugin-hardware/Cargo.toml package.version "${{ inputs.new_version }}" + echo "---------./src-tauri/plugins/tauri-plugin-hardware/Cargo.toml---------" + cat ./src-tauri/plugins/tauri-plugin-hardware/Cargo.toml + + ctoml ./src-tauri/plugins/tauri-plugin-llamacpp/Cargo.toml package.version "${{ inputs.new_version }}" + echo "---------./src-tauri/plugins/tauri-plugin-llamacpp/Cargo.toml---------" + cat ./src-tauri/plugins/tauri-plugin-llamacpp/Cargo.toml ctoml ./src-tauri/Cargo.toml package.version "${{ inputs.new_version }}" + echo "---------./src-tauri/Cargo.toml---------" cat ./src-tauri/Cargo.toml + # Temporarily enable devtool on prod build + ctoml ./src-tauri/Cargo.toml dependencies.tauri.features[] "devtools" + cat ./src-tauri/Cargo.toml + # Change app name for beta and nightly builds if [ "${{ inputs.channel }}" != "stable" ]; then jq '.plugins.updater.endpoints = ["https://delta.jan.ai/${{ inputs.channel }}/latest.json"]' ./src-tauri/tauri.conf.json > /tmp/tauri.conf.json diff --git a/.github/workflows/template-tauri-build-linux-x64.yml b/.github/workflows/template-tauri-build-linux-x64.yml index 3b9daebb5..bd9b38369 100644 --- a/.github/workflows/template-tauri-build-linux-x64.yml +++ b/.github/workflows/template-tauri-build-linux-x64.yml @@ -53,7 +53,7 @@ on: value: ${{ jobs.build-linux-x64.outputs.APPIMAGE_FILE_NAME }} jobs: build-linux-x64: - runs-on: ubuntu-22.04 + runs-on: ubuntu-latest outputs: DEB_SIG: ${{ steps.packageinfo.outputs.DEB_SIG }} APPIMAGE_SIG: ${{ steps.packageinfo.outputs.APPIMAGE_SIG }} @@ -117,11 +117,34 @@ jobs: jq --arg version "${{ inputs.new_version }}" '.version = $version' web-app/package.json > /tmp/package.json mv /tmp/package.json web-app/package.json - # Temporarily enable devtool on prod build - ctoml ./src-tauri/Cargo.toml dependencies.tauri.features[] "devtools" - cat ./src-tauri/Cargo.toml + # Update tauri plugin versions + + jq --arg version "${{ inputs.new_version }}" '.version = $version' ./src-tauri/plugins/tauri-plugin-hardware/package.json > /tmp/package.json + mv /tmp/package.json ./src-tauri/plugins/tauri-plugin-hardware/package.json + + echo "---------./src-tauri/plugins/tauri-plugin-hardware/package.json---------" + cat ./src-tauri/plugins/tauri-plugin-hardware/package.json + + jq --arg version "${{ inputs.new_version }}" '.version = $version' ./src-tauri/plugins/tauri-plugin-llamacpp/package.json > /tmp/package.json + mv /tmp/package.json ./src-tauri/plugins/tauri-plugin-llamacpp/package.json + + echo "---------./src-tauri/plugins/tauri-plugin-llamacpp/package.json---------" + cat ./src-tauri/plugins/tauri-plugin-llamacpp/package.json + + ctoml ./src-tauri/plugins/tauri-plugin-hardware/Cargo.toml package.version "${{ inputs.new_version }}" + echo "---------./src-tauri/plugins/tauri-plugin-hardware/Cargo.toml---------" + cat ./src-tauri/plugins/tauri-plugin-hardware/Cargo.toml + + ctoml ./src-tauri/plugins/tauri-plugin-llamacpp/Cargo.toml package.version "${{ inputs.new_version }}" + echo "---------./src-tauri/plugins/tauri-plugin-llamacpp/Cargo.toml---------" + cat ./src-tauri/plugins/tauri-plugin-llamacpp/Cargo.toml ctoml ./src-tauri/Cargo.toml package.version "${{ inputs.new_version }}" + echo "---------./src-tauri/Cargo.toml---------" + cat ./src-tauri/Cargo.toml + + # Temporarily enable devtool on prod build + ctoml ./src-tauri/Cargo.toml dependencies.tauri.features[] "devtools" cat ./src-tauri/Cargo.toml # Change app name for beta and nightly builds diff --git a/.github/workflows/template-tauri-build-macos-external.yml b/.github/workflows/template-tauri-build-macos-external.yml index 8f61b86fa..0357cc2a2 100644 --- a/.github/workflows/template-tauri-build-macos-external.yml +++ b/.github/workflows/template-tauri-build-macos-external.yml @@ -42,31 +42,6 @@ jobs: run: | cargo install ctoml - - name: Create bun and uv universal - run: | - mkdir -p ./src-tauri/resources/bin/ - cd ./src-tauri/resources/bin/ - curl -L -o bun-darwin-x64.zip https://github.com/oven-sh/bun/releases/download/bun-v1.2.10/bun-darwin-x64.zip - curl -L -o bun-darwin-aarch64.zip https://github.com/oven-sh/bun/releases/download/bun-v1.2.10/bun-darwin-aarch64.zip - unzip bun-darwin-x64.zip - unzip bun-darwin-aarch64.zip - lipo -create -output bun-universal-apple-darwin bun-darwin-x64/bun bun-darwin-aarch64/bun - cp -f bun-darwin-aarch64/bun bun-aarch64-apple-darwin - cp -f bun-darwin-x64/bun bun-x86_64-apple-darwin - cp -f bun-universal-apple-darwin bun - - curl -L -o uv-x86_64.tar.gz https://github.com/astral-sh/uv/releases/download/0.6.17/uv-x86_64-apple-darwin.tar.gz - curl -L -o uv-arm64.tar.gz https://github.com/astral-sh/uv/releases/download/0.6.17/uv-aarch64-apple-darwin.tar.gz - tar -xzf uv-x86_64.tar.gz - tar -xzf uv-arm64.tar.gz - mv uv-x86_64-apple-darwin uv-x86_64 - mv uv-aarch64-apple-darwin uv-aarch64 - lipo -create -output uv-universal-apple-darwin uv-x86_64/uv uv-aarch64/uv - cp -f uv-x86_64/uv uv-x86_64-apple-darwin - cp -f uv-aarch64/uv uv-aarch64-apple-darwin - cp -f uv-universal-apple-darwin uv - ls -la - - name: Update app version run: | echo "Version: ${{ inputs.new_version }}" @@ -74,8 +49,35 @@ jobs: mv /tmp/tauri.conf.json ./src-tauri/tauri.conf.json jq --arg version "${{ inputs.new_version }}" '.version = $version' web-app/package.json > /tmp/package.json mv /tmp/package.json web-app/package.json + + # Update tauri plugin versions + + jq --arg version "${{ inputs.new_version }}" '.version = $version' ./src-tauri/plugins/tauri-plugin-hardware/package.json > /tmp/package.json + mv /tmp/package.json ./src-tauri/plugins/tauri-plugin-hardware/package.json + + echo "---------./src-tauri/plugins/tauri-plugin-hardware/package.json---------" + cat ./src-tauri/plugins/tauri-plugin-hardware/package.json + + jq --arg version "${{ inputs.new_version }}" '.version = $version' ./src-tauri/plugins/tauri-plugin-llamacpp/package.json > /tmp/package.json + mv /tmp/package.json ./src-tauri/plugins/tauri-plugin-llamacpp/package.json + + echo "---------./src-tauri/plugins/tauri-plugin-llamacpp/package.json---------" + cat ./src-tauri/plugins/tauri-plugin-llamacpp/package.json + + ctoml ./src-tauri/plugins/tauri-plugin-hardware/Cargo.toml package.version "${{ inputs.new_version }}" + echo "---------./src-tauri/plugins/tauri-plugin-hardware/Cargo.toml---------" + cat ./src-tauri/plugins/tauri-plugin-hardware/Cargo.toml + + ctoml ./src-tauri/plugins/tauri-plugin-llamacpp/Cargo.toml package.version "${{ inputs.new_version }}" + echo "---------./src-tauri/plugins/tauri-plugin-llamacpp/Cargo.toml---------" + cat ./src-tauri/plugins/tauri-plugin-llamacpp/Cargo.toml + ctoml ./src-tauri/Cargo.toml package.version "${{ inputs.new_version }}" + echo "---------./src-tauri/Cargo.toml---------" + cat ./src-tauri/Cargo.toml + ctoml ./src-tauri/Cargo.toml dependencies.tauri.features[] "devtools" + if [ "${{ inputs.channel }}" != "stable" ]; then jq '.plugins.updater.endpoints = ["https://delta.jan.ai/${{ inputs.channel }}/latest.json"]' ./src-tauri/tauri.conf.json > /tmp/tauri.conf.json mv /tmp/tauri.conf.json ./src-tauri/tauri.conf.json diff --git a/.github/workflows/template-tauri-build-macos.yml b/.github/workflows/template-tauri-build-macos.yml index 4646041cf..9f8d46f6c 100644 --- a/.github/workflows/template-tauri-build-macos.yml +++ b/.github/workflows/template-tauri-build-macos.yml @@ -101,7 +101,30 @@ jobs: jq --arg version "${{ inputs.new_version }}" '.version = $version' web-app/package.json > /tmp/package.json mv /tmp/package.json web-app/package.json + # Update tauri plugin versions + + jq --arg version "${{ inputs.new_version }}" '.version = $version' ./src-tauri/plugins/tauri-plugin-hardware/package.json > /tmp/package.json + mv /tmp/package.json ./src-tauri/plugins/tauri-plugin-hardware/package.json + + echo "---------./src-tauri/plugins/tauri-plugin-hardware/package.json---------" + cat ./src-tauri/plugins/tauri-plugin-hardware/package.json + + jq --arg version "${{ inputs.new_version }}" '.version = $version' ./src-tauri/plugins/tauri-plugin-llamacpp/package.json > /tmp/package.json + mv /tmp/package.json ./src-tauri/plugins/tauri-plugin-llamacpp/package.json + + echo "---------./src-tauri/plugins/tauri-plugin-llamacpp/package.json---------" + cat ./src-tauri/plugins/tauri-plugin-llamacpp/package.json + + ctoml ./src-tauri/plugins/tauri-plugin-hardware/Cargo.toml package.version "${{ inputs.new_version }}" + echo "---------./src-tauri/plugins/tauri-plugin-hardware/Cargo.toml---------" + cat ./src-tauri/plugins/tauri-plugin-hardware/Cargo.toml + + ctoml ./src-tauri/plugins/tauri-plugin-llamacpp/Cargo.toml package.version "${{ inputs.new_version }}" + echo "---------./src-tauri/plugins/tauri-plugin-llamacpp/Cargo.toml---------" + cat ./src-tauri/plugins/tauri-plugin-llamacpp/Cargo.toml + ctoml ./src-tauri/Cargo.toml package.version "${{ inputs.new_version }}" + echo "---------./src-tauri/Cargo.toml---------" cat ./src-tauri/Cargo.toml # Temporarily enable devtool on prod build diff --git a/.github/workflows/template-tauri-build-windows-x64-external.yml b/.github/workflows/template-tauri-build-windows-x64-external.yml index 59a200093..16895de65 100644 --- a/.github/workflows/template-tauri-build-windows-x64-external.yml +++ b/.github/workflows/template-tauri-build-windows-x64-external.yml @@ -49,68 +49,61 @@ jobs: # Update tauri.conf.json jq --arg version "${{ inputs.new_version }}" '.version = $version | .bundle.createUpdaterArtifacts = false' ./src-tauri/tauri.conf.json > /tmp/tauri.conf.json mv /tmp/tauri.conf.json ./src-tauri/tauri.conf.json - jq '.bundle.windows.nsis.template = "tauri.bundle.windows.nsis.template"' ./src-tauri/tauri.windows.conf.json > /tmp/tauri.windows.conf.json - mv /tmp/tauri.windows.conf.json ./src-tauri/tauri.windows.conf.json jq '.bundle.windows.signCommand = "echo External build - skipping signature: %1"' ./src-tauri/tauri.windows.conf.json > /tmp/tauri.windows.conf.json mv /tmp/tauri.windows.conf.json ./src-tauri/tauri.windows.conf.json jq --arg version "${{ inputs.new_version }}" '.version = $version' web-app/package.json > /tmp/package.json mv /tmp/package.json web-app/package.json - ctoml ./src-tauri/Cargo.toml package.version "${{ inputs.new_version }}" - echo "---------Cargo.toml---------" - cat ./src-tauri/Cargo.toml + # Update tauri plugin versions + + jq --arg version "${{ inputs.new_version }}" '.version = $version' ./src-tauri/plugins/tauri-plugin-hardware/package.json > /tmp/package.json + mv /tmp/package.json ./src-tauri/plugins/tauri-plugin-hardware/package.json - generate_build_version() { - ### Examble - ### input 0.5.6 output will be 0.5.6 and 0.5.6.0 - ### input 0.5.6-rc2-beta output will be 0.5.6 and 0.5.6.2 - ### input 0.5.6-1213 output will be 0.5.6 and and 0.5.6.1213 - local new_version="$1" - local base_version - local t_value + echo "---------./src-tauri/plugins/tauri-plugin-hardware/package.json---------" + cat ./src-tauri/plugins/tauri-plugin-hardware/package.json - # Check if it has a "-" - if [[ "$new_version" == *-* ]]; then - base_version="${new_version%%-*}" # part before - - suffix="${new_version#*-}" # part after - + jq --arg version "${{ inputs.new_version }}" '.version = $version' ./src-tauri/plugins/tauri-plugin-llamacpp/package.json > /tmp/package.json + mv /tmp/package.json ./src-tauri/plugins/tauri-plugin-llamacpp/package.json - # Check if it is rcX-beta - if [[ "$suffix" =~ ^rc([0-9]+)-beta$ ]]; then - t_value="${BASH_REMATCH[1]}" - else - t_value="$suffix" - fi - else - base_version="$new_version" - t_value="0" - fi + echo "---------./src-tauri/plugins/tauri-plugin-llamacpp/package.json---------" + cat ./src-tauri/plugins/tauri-plugin-llamacpp/package.json - # Export two values - new_base_version="$base_version" - new_build_version="${base_version}.${t_value}" - } - generate_build_version ${{ inputs.new_version }} - sed -i "s/jan_version/$new_base_version/g" ./src-tauri/tauri.bundle.windows.nsis.template - sed -i "s/jan_build/$new_build_version/g" ./src-tauri/tauri.bundle.windows.nsis.template + ctoml ./src-tauri/plugins/tauri-plugin-hardware/Cargo.toml package.version "${{ inputs.new_version }}" + echo "---------./src-tauri/plugins/tauri-plugin-hardware/Cargo.toml---------" + cat ./src-tauri/plugins/tauri-plugin-hardware/Cargo.toml + + ctoml ./src-tauri/plugins/tauri-plugin-llamacpp/Cargo.toml package.version "${{ inputs.new_version }}" + echo "---------./src-tauri/plugins/tauri-plugin-llamacpp/Cargo.toml---------" + cat ./src-tauri/plugins/tauri-plugin-llamacpp/Cargo.toml + + ctoml ./src-tauri/Cargo.toml package.version "${{ inputs.new_version }}" + echo "---------./src-tauri/Cargo.toml---------" + cat ./src-tauri/Cargo.toml if [ "${{ inputs.channel }}" != "stable" ]; then jq '.plugins.updater.endpoints = ["https://delta.jan.ai/${{ inputs.channel }}/latest.json"]' ./src-tauri/tauri.conf.json > /tmp/tauri.conf.json mv /tmp/tauri.conf.json ./src-tauri/tauri.conf.json + + # Update product name + jq --arg name "Jan-${{ inputs.channel }}" '.productName = $name' ./src-tauri/tauri.conf.json > /tmp/tauri.conf.json + mv /tmp/tauri.conf.json ./src-tauri/tauri.conf.json + chmod +x .github/scripts/rename-tauri-app.sh .github/scripts/rename-tauri-app.sh ./src-tauri/tauri.conf.json ${{ inputs.channel }} + + echo "---------tauri.conf.json---------" + cat ./src-tauri/tauri.conf.json + + # Update Cargo.toml ctoml ./src-tauri/Cargo.toml package.name "Jan-${{ inputs.channel }}" ctoml ./src-tauri/Cargo.toml dependencies.tauri.features[] "devtools" + echo "------------------" + cat ./src-tauri/Cargo.toml + chmod +x .github/scripts/rename-workspace.sh .github/scripts/rename-workspace.sh ./package.json ${{ inputs.channel }} - sed -i "s/jan_productname/Jan-${{ inputs.channel }}/g" ./src-tauri/tauri.bundle.windows.nsis.template - sed -i "s/jan_mainbinaryname/jan-${{ inputs.channel }}/g" ./src-tauri/tauri.bundle.windows.nsis.template - else - sed -i "s/jan_productname/Jan/g" ./src-tauri/tauri.bundle.windows.nsis.template - sed -i "s/jan_mainbinaryname/jan/g" ./src-tauri/tauri.bundle.windows.nsis.template + cat ./package.json fi - echo "---------nsis.template---------" - cat ./src-tauri/tauri.bundle.windows.nsis.template - - name: Build app shell: bash run: | diff --git a/.github/workflows/template-tauri-build-windows-x64.yml b/.github/workflows/template-tauri-build-windows-x64.yml index 958b7c9f7..643fef5ac 100644 --- a/.github/workflows/template-tauri-build-windows-x64.yml +++ b/.github/workflows/template-tauri-build-windows-x64.yml @@ -95,47 +95,41 @@ jobs: # Update tauri.conf.json jq --arg version "${{ inputs.new_version }}" '.version = $version | .bundle.createUpdaterArtifacts = true' ./src-tauri/tauri.conf.json > /tmp/tauri.conf.json mv /tmp/tauri.conf.json ./src-tauri/tauri.conf.json - jq '.bundle.windows.nsis.template = "tauri.bundle.windows.nsis.template"' ./src-tauri/tauri.windows.conf.json > /tmp/tauri.windows.conf.json - mv /tmp/tauri.windows.conf.json ./src-tauri/tauri.windows.conf.json jq --arg version "${{ inputs.new_version }}" '.version = $version' web-app/package.json > /tmp/package.json mv /tmp/package.json web-app/package.json + # Update tauri plugin versions + + jq --arg version "${{ inputs.new_version }}" '.version = $version' ./src-tauri/plugins/tauri-plugin-hardware/package.json > /tmp/package.json + mv /tmp/package.json ./src-tauri/plugins/tauri-plugin-hardware/package.json + + echo "---------./src-tauri/plugins/tauri-plugin-hardware/package.json---------" + cat ./src-tauri/plugins/tauri-plugin-hardware/package.json + + jq --arg version "${{ inputs.new_version }}" '.version = $version' ./src-tauri/plugins/tauri-plugin-llamacpp/package.json > /tmp/package.json + mv /tmp/package.json ./src-tauri/plugins/tauri-plugin-llamacpp/package.json + + echo "---------./src-tauri/plugins/tauri-plugin-llamacpp/package.json---------" + cat ./src-tauri/plugins/tauri-plugin-llamacpp/package.json + + ctoml ./src-tauri/plugins/tauri-plugin-hardware/Cargo.toml package.version "${{ inputs.new_version }}" + echo "---------./src-tauri/plugins/tauri-plugin-hardware/Cargo.toml---------" + cat ./src-tauri/plugins/tauri-plugin-hardware/Cargo.toml + + ctoml ./src-tauri/plugins/tauri-plugin-llamacpp/Cargo.toml package.version "${{ inputs.new_version }}" + echo "---------./src-tauri/plugins/tauri-plugin-llamacpp/Cargo.toml---------" + cat ./src-tauri/plugins/tauri-plugin-llamacpp/Cargo.toml + ctoml ./src-tauri/Cargo.toml package.version "${{ inputs.new_version }}" - echo "---------Cargo.toml---------" + echo "---------./src-tauri/Cargo.toml---------" cat ./src-tauri/Cargo.toml - generate_build_version() { - ### Examble - ### input 0.5.6 output will be 0.5.6 and 0.5.6.0 - ### input 0.5.6-rc2-beta output will be 0.5.6 and 0.5.6.2 - ### input 0.5.6-1213 output will be 0.5.6 and and 0.5.6.1213 - local new_version="$1" - local base_version - local t_value - - # Check if it has a "-" - if [[ "$new_version" == *-* ]]; then - base_version="${new_version%%-*}" # part before - - suffix="${new_version#*-}" # part after - - - # Check if it is rcX-beta - if [[ "$suffix" =~ ^rc([0-9]+)-beta$ ]]; then - t_value="${BASH_REMATCH[1]}" - else - t_value="$suffix" - fi - else - base_version="$new_version" - t_value="0" - fi - - # Export two values - new_base_version="$base_version" - new_build_version="${base_version}.${t_value}" - } - generate_build_version ${{ inputs.new_version }} - sed -i "s/jan_version/$new_base_version/g" ./src-tauri/tauri.bundle.windows.nsis.template - sed -i "s/jan_build/$new_build_version/g" ./src-tauri/tauri.bundle.windows.nsis.template + # Add sign commands to tauri.windows.conf.json + jq '.bundle.windows.signCommand = "powershell -ExecutionPolicy Bypass -File ./sign.ps1 %1"' ./src-tauri/tauri.windows.conf.json > /tmp/tauri.windows.conf.json + mv /tmp/tauri.windows.conf.json ./src-tauri/tauri.windows.conf.json + + echo "---------tauri.windows.conf.json---------" + cat ./src-tauri/tauri.windows.conf.json # Temporarily enable devtool on prod build ctoml ./src-tauri/Cargo.toml dependencies.tauri.features[] "devtools" @@ -143,8 +137,13 @@ jobs: # Change app name for beta and nightly builds if [ "${{ inputs.channel }}" != "stable" ]; then + # Update updater endpoint jq '.plugins.updater.endpoints = ["https://delta.jan.ai/${{ inputs.channel }}/latest.json"]' ./src-tauri/tauri.conf.json > /tmp/tauri.conf.json mv /tmp/tauri.conf.json ./src-tauri/tauri.conf.json + + # Update product name + jq --arg name "Jan-${{ inputs.channel }}" '.productName = $name' ./src-tauri/tauri.conf.json > /tmp/tauri.conf.json + mv /tmp/tauri.conf.json ./src-tauri/tauri.conf.json chmod +x .github/scripts/rename-tauri-app.sh .github/scripts/rename-tauri-app.sh ./src-tauri/tauri.conf.json ${{ inputs.channel }} @@ -161,15 +160,7 @@ jobs: chmod +x .github/scripts/rename-workspace.sh .github/scripts/rename-workspace.sh ./package.json ${{ inputs.channel }} cat ./package.json - - sed -i "s/jan_productname/Jan-${{ inputs.channel }}/g" ./src-tauri/tauri.bundle.windows.nsis.template - sed -i "s/jan_mainbinaryname/jan-${{ inputs.channel }}/g" ./src-tauri/tauri.bundle.windows.nsis.template - else - sed -i "s/jan_productname/Jan/g" ./src-tauri/tauri.bundle.windows.nsis.template - sed -i "s/jan_mainbinaryname/jan/g" ./src-tauri/tauri.bundle.windows.nsis.template fi - echo "---------nsis.template---------" - cat ./src-tauri/tauri.bundle.windows.nsis.template - name: Install AzureSignTool run: | diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 16379e575..2876e4598 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -126,8 +126,7 @@ jan/ ├── scripts/ # Build utilities │ ├── package.json # Root workspace configuration -├── Makefile # Build automation commands -├── mise.toml # Mise tool configuration +├── Makefile # Build automation commands ├── LICENSE # Apache 2.0 license └── README.md # Project overview ``` @@ -149,19 +148,6 @@ cd jan make dev ``` -**Option 2: The Easier Way (Mise)** -```bash -git clone https://github.com/menloresearch/jan -cd jan - -# Install mise -curl https://mise.run | sh - -# Let mise handle everything -mise install # installs Node.js, Rust, and other tools -mise dev # runs the full development setup -``` - ## How Can I Contribute? ### Reporting Bugs diff --git a/Makefile b/Makefile index 085e42e74..9a03ddaad 100644 --- a/Makefile +++ b/Makefile @@ -72,6 +72,9 @@ lint: install-and-build test: lint yarn download:bin yarn download:lib +ifeq ($(OS),Windows_NT) + yarn download:windows-installer +endif yarn test yarn copy:assets:tauri yarn build:icon diff --git a/README.md b/README.md index b90cc8907..656917634 100644 --- a/README.md +++ b/README.md @@ -93,29 +93,6 @@ This handles everything: installs dependencies, builds core components, and laun - `make test` - Run tests and linting - `make clean` - Delete everything and start fresh -### Run with Mise (easier) - -You can also run with [mise](https://mise.jdx.dev/), which is a bit easier as it ensures Node.js, Rust, and other dependency versions are automatically managed: - -```bash -git clone https://github.com/menloresearch/jan -cd jan - -# Install mise (if not already installed) -curl https://mise.run | sh - -# Install tools and start development -mise install # installs Node.js, Rust, and other tools -mise dev # runs the full development setup -``` - -**Available mise commands:** -- `mise dev` - Full development setup and launch -- `mise build` - Production build -- `mise test` - Run tests and linting -- `mise clean` - Delete everything and start fresh -- `mise tasks` - List all available tasks - ### Manual Commands ```bash diff --git a/core/src/browser/extensions/engines/AIEngine.ts b/core/src/browser/extensions/engines/AIEngine.ts index 0e8a75fca..a4f98e71c 100644 --- a/core/src/browser/extensions/engines/AIEngine.ts +++ b/core/src/browser/extensions/engines/AIEngine.ts @@ -240,6 +240,12 @@ export abstract class AIEngine extends BaseExtension { EngineManager.instance().register(this) } + /** + * Gets model info + * @param modelId + */ + abstract get(modelId: string): Promise + /** * Lists available models */ @@ -268,6 +274,10 @@ export abstract class AIEngine extends BaseExtension { */ abstract delete(modelId: string): Promise + /** + * Updates a model + */ + abstract update(modelId: string, model: Partial): Promise /** * Imports a model */ @@ -283,11 +293,6 @@ export abstract class AIEngine extends BaseExtension { */ abstract getLoadedModels(): Promise - /** - * Optional method to get the underlying chat client - */ - getChatClient?(sessionId: string): any - /** * Check if a tool is supported by the model * @param modelId diff --git a/core/src/browser/fs.ts b/core/src/browser/fs.ts index 0a05d4c56..42d43ca65 100644 --- a/core/src/browser/fs.ts +++ b/core/src/browser/fs.ts @@ -43,6 +43,12 @@ const mkdir = (...args: any[]) => globalThis.core.api?.mkdir({ args }) */ const rm = (...args: any[]) => globalThis.core.api?.rm({ args }) +/** + * Moves a file from the source path to the destination path. + * @returns {Promise} A Promise that resolves when the file is moved successfully. + */ +const mv = (...args: any[]) => globalThis.core.api?.mv({ args }) + /** * Deletes a file from the local file system. * @param {string} path - The path of the file to delete. @@ -92,6 +98,7 @@ export const fs = { readdirSync, mkdir, rm, + mv, unlinkSync, appendFileSync, copyFile, diff --git a/core/src/types/api/index.ts b/core/src/types/api/index.ts index d40aab852..6d6d1c4a6 100644 --- a/core/src/types/api/index.ts +++ b/core/src/types/api/index.ts @@ -91,6 +91,7 @@ export enum FileSystemRoute { existsSync = 'existsSync', readdirSync = 'readdirSync', rm = 'rm', + mv = 'mv', mkdir = 'mkdir', readFileSync = 'readFileSync', writeFileSync = 'writeFileSync', diff --git a/docs/_redirects b/docs/_redirects index 748da60c5..17342a020 100644 --- a/docs/_redirects +++ b/docs/_redirects @@ -1,699 +1,133 @@ -/team /about/team 302 -/about/teams /about/team 302 -/about/faq /docs 302 -/about/acknowledgements /docs 302 -/about/community /about 302 -/guides /docs 302 -/docs/troubleshooting/failed-to-fetch /docs/troubleshooting 302 -/guides/troubleshooting/gpu-not-used /docs/troubleshooting#troubleshooting-nvidia-gpu 302 -/guides/troubleshooting /docs/troubleshooting 302 -/docs/troubleshooting/stuck-on-broken-build /docs/troubleshooting 302 -/docs/troubleshooting/somethings-amiss /docs/troubleshooting 302 -/docs/troubleshooting/how-to-get-error-logs /docs/troubleshooting 302 -/docs/troubleshooting/permission-denied /docs/troubleshooting 302 -/docs/troubleshooting/unexpected-token /docs/troubleshooting 302 -/docs/troubleshooting/undefined-issue /docs/troubleshooting 302 -/getting-started/troubleshooting /docs/troubleshooting 302 -/docs/troubleshooting/gpu-not-used /docs/troubleshooting 302 -/guides/integrations/openrouter /docs/remote-models/openrouter 302 -/guides/integrations/continue /integrations/coding/continue-dev 302 -/docs/extension-capabilities /docs/extensions 302 -/guides/using-extensions /docs/extensions 302 -/docs/extension-guides /docs/extensions 302 -/features/extensions /docs/extensions 302 -/integrations/tensorrt /docs/built-in/tensorrt-llm 302 -/guides/using-models/integrate-with-remote-server /docs/remote-inference/generic-openai 302 -/guides/using-models/customize-engine-settings /docs/built-in/llama-cpp 302 -/developers/plugins/azure-openai /docs/remote-models/openai 302 -/docs/api-reference/assistants /api-reference#tag/assistants 302 -/docs/api-reference/models/list /api-reference#tag/models 302 -/docs/api-reference/threads /api-reference#tag/chat 302 -/docs/api-reference/messages /api-reference#tag/messages 302 -/docs/api-reference/models /api-reference#tag/models 302 -/chat /docs/threads 302 -/guides/chatting/manage-history /docs/threads/ 302 -/guides/chatting/start-thread /docs/threads/ 302 -/guides/using-server /docs/local-api/ 302 -/guides/using-server/server /docs/local-api#step-2-srt-and-use-the-built-in-api-server 302 -/docs/get-started /docs 302 -/guides/how-jan-works /about/how-we-work 302 -/acknowledgements /about/acknowledgements 302 -/community /about/community 302 -/faq /about/faq 302 -/how-we-work /about/how-we-work 302 -/wall-of-love /about/wall-of-love 302 -/guides/troubleshooting/failed-to-fetch /docs/troubleshooting 302 -/docs/troubleshooting/gpu-not-used /docs/troubleshooting 302 -/docs/troubleshooting/failed-to-fetch /docs/troubleshooting 302 -/guides/ /docs 302 -/guides/quickstart/ /docs/quickstart 302 -/guides/models/ /docs/models 302 -/guides/threads/ /docs/threads 302 -/guides/local-api/ /docs/local-api 302 -/guides/advanced/ /docs/settings 302 -/guides/engines/llamacpp/ /docs/built-in/llama-cpp 302 -/guides/engines/tensorrt-llm/ /docs/built-in/tensorrt-llm 302 -/guides/engines/lmstudio/ /docs/local-models/lmstudio 302 -/guides/engines/ollama/ /docs/built-in/llama-cpp 302 -/guides/engines/groq/ /docs/remote-models/groq 302 -/guides/engines/mistral/ /docs/remote-models/mistralai 302 -/guides/engines/openai/ /docs/remote-models/openai 302 -/guides/engines/remote-server/ /docs/remote-inference/generic-openai 302 -/extensions/ /docs/extensions 302 -/integrations/discord/ /integrations/messaging/llmcord 302 -/discord https://discord.gg/FTk2MvZwJH 301 -/integrations/interpreter/ /integrations/function-calling/interpreter 302 -/integrations/raycast/ /integrations/workflow-automation/raycast 302 -/docs/integrations/raycast /integrations/workflow-automation/raycast 302 -/docs/integrations /integrations 302 -/docs/engineering/files/ /docs 302 -/integrations/openrouter/ /docs/remote-models/openrouter 302 -/integrations/continue/ /integrations/coding/continue-dev 302 -/troubleshooting/ /docs/troubleshooting 302 -/changelog/changelog-v0.4.9/ /changelog 302 -/changelog/changelog-v0.4.8/ /changelog 302 -/changelog/changelog-v0.4.7/ /changelog 302 -/changelog/changelog-v0.4.6/ /changelog 302 -/changelog/changelog-v0.4.5/ /changelog 302 -/changelog/changelog-v0.4.4/ /changelog 302 -/changelog/changelog-v0.4.3/ /changelog 302 -/changelog/changelog-v0.4.2/ /changelog 302 -/changelog/changelog-v0.4.1/ /changelog 302 -/changelog/changelog-v0.4.0/ /changelog 302 -/changelog/changelog-v0.3.3/ /changelog 302 -/changelog/changelog-v0.3.2/ /changelog 302 -/changelog/changelog-v0.3.1/ /changelog 302 -/changelog/changelog-v0.3.0/ /changelog 302 -/changelog/changelog-v0.2.3/ /changelog 302 -/changelog/changelog-v0.2.2/ /changelog 302 -/changelog/changelog-v0.2.1/ /changelog 302 -/changelog/changelog-v0.2.0/ /changelog 302 -/team/ /about/team 302 -/team/contributor-program/ /about/team 302 -/team/join-us/ /about/team 302 -/how-we-work/ /about/how-we-work 302 -/how-we-work/strategy/ /about/how-we-work/strategy 302 -/how-we-work/project-management/ /about/how-we-work/project-management 302 -/engineering/ /about/how-we-work/engineering 302 -/engineering/ci-cd/ /about/how-we-work/engineering/ci-cd 302 -/engineering/qa/ /about/how-we-work/engineering/qa 302 -/how-we-work/product-design/ /about 302 -/about/how-we-work/product-design /about 302 -/how-we-work/analytics/ /about/how-we-work/analytics 302 -/how-we-work/website-docs/ /about/how-we-work/website-docs 302 -/blog/postmortems/january-10-2024-bitdefender-false-positive-flag/ /post/bitdefender 302 -/guides/error-codes/something-amiss/ /docs/troubleshooting#somethings-amiss 302 -/guides/error-codes/how-to-get-error-logs/ /docs/troubleshooting#how-to-get-error-logs 302 -/guides/chatting/ /docs/threads 302 -/guides/integration/openinterpreter/ /integrations/function-calling/interpreter 302 -/developer/build-assistant/ /docs/assistants 302 -/guides/integrations/ /integrations 302 -/specs/hub/ /docs 302 -/install/windows/ /docs/desktop/windows 302 -/install/linux/ /docs/desktop/linux 302 -/install/nightly/ /docs/desktop/windows 302 -/docs/engineering/fine-tuning/ /docs 302 -/developer/assistant/ /docs/assistants 302 -/guides/common-error/broken-build/ /docs/troubleshooting#broken-build 302 -/guides/using-server/using-server/ /docs/local-api 302 -/guides/integrations/azure-openai-service/ /docs/remote-models/openai 302 -/specs/messages/ /docs/threads 302 -/docs/engineering/models/ /docs/models 302 -/docs/specs/assistants/ /docs/assistants 302 -/docs/engineering/chats/ /docs/threads 302 -/guides/using-extensions/extension-settings/ /docs/extensions 302 -/guides/models/customize-engine/ /docs/models 302 -/guides/integration/mistral/ /docs/remote-models/mistralai 302 -/guides/common-error/ /docs/troubleshooting 302 -/guides/integrations/ollama/ /docs/local-models/ollama 302 -/server-suite/ /api-reference 302 -/guides/integrations/lmstudio/ /docs/local-models/lmstudio 302 -/guides/integrations/mistral-ai/ /docs/remote-models/mistralai 302 -/guides/start-server/ /docs/local-api 302 -/guides/changelog/ /changelog 302 -/guides/models-list/ /docs/models 302 -/guides/thread/ /docs/threads 302 -/docs/engineering/messages/ /docs/threads 302 -/guides/faqs/ /about/faq 302 -/docs/integrations/openrouter/ /docs/remote-models/openrouter 302 -/guides/windows /docs/desktop/windows 302 -/docs/integrations/ollama/ /docs/local-models/ollama 302 -/api/overview/ /api-reference 302 -/docs/extension-guides/ /docs/extensions 302 -/specs/settings/ /docs 302 -/docs/UI/ /docs 302 -/guides/using-models/import-models-using-absolute-filepath/ /docs/models 302 -/install/docker/ /docs/desktop 302 -/install/ /docs/desktop 302 -/install/from-source/ /docs/desktop 302 -/docs/installation/server /docs/desktop 302 -/v1/models /docs/models 302 -/guides/advanced-settings/ /docs/settings 302 -/guides/using-models/install-from-hub/ /docs/models/manage-models#download-from-jan-hub 302 -/guides/using-models/import-manually/ /docs/models 302 -/docs/team/contributor-program/ /about/team 302 -/docs/modules/models /docs/models 302 -/getting-started/install/linux /docs/desktop/linux 302 -/guides/chatting/start-thread/ /docs/threads 302 -/api/files/ /docs 302 -/specs/threads/ /docs/threads 302 -/about/brand-assets /about 302 -/guides/chatting/upload-images/ /docs/threads 302 -/guides/using-models/customize-models/ /docs/models 302 -/docs/modules/models/ /docs/models 302 -/getting-started/install/linux/ /docs/desktop/linux 302 -/specs/chats/ /docs/threads 302 -/specs/engine/ /docs 302 -/specs/data-structures /docs 302 -/docs/extension-capabilities/ /docs/extensions 302 -/docs/get-started/use-local-server/ /docs/local-api 302 -/guides/how-jan-works/ /about/how-we-work 302 -/guides/install/cloud-native /docs/desktop 302 -/guides/windows/ /docs/desktop/windows 302 -/specs/ /docs 302 -/docs/get-started/build-extension/ /docs/extensions 302 -/specs/files/ /docs 302 -/guides/using-models/package-models/ /docs/models 302 -/install/overview/ /docs/desktop/windows 302 -/docs/get-started/extension-anatomy/ /docs/extensions 302 -/docs/get-started/ /docs 302 -/guides/mac/ /docs/desktop/mac 302 -/intro/ /about 302 -/specs/fine-tuning/ /docs 302 -/guides/server/ /docs/desktop 302 -/specs/file-based/ /docs 302 -/docs/extension-guides/monitoring/ /docs/extensions 302 -/api/ /api-reference 302 -/getting-started/build-an-app /docs/quickstart 302 -/features/ai-models/ /docs/models 302 -/reference/store/ /api-reference 302 -/tutorials/build-chat-app /docs/quickstart 302 -/features/acceleration /docs/built-in/llama-cpp 302 -/getting-started/install/mac /docs/desktop/mac 302 -docs/guides/fine-tuning/what-models-can-be-fine-tuned /docs 302 -/docs/specs/threads /docs/threads 302 -/docs/api-reference/fine-tuning /api-reference 302 -/docs/guides/speech-to-text/prompting /docs/quickstart 302 -/docs/guides/legacy-fine-tuning/analyzing-your-fine-tuned-model /docs 302 -/getting-started/install/windows /docs/desktop/windows 302 -/docs/modules/assistants /docs/assistants 302 -/docs/modules/chats /docs/threads 302 -/docs/specs/chats /docs/threads 302 -/docs/modules/files /docs 302 -/tutorials/build-rag-app /docs/tools/retrieval 302 -/docs/models/model-endpoint-compatibility /docs/models 302 -/docs/guides/legacy-fine-tuning/creating-training-data /docs 302 -/docs/specs/models /docs/models 302 -/docs/guides/safety-best-practices/end-user-ids /docs/quickstart 302 -/docs/modules/assistants/ /docs/assistants 302 -/docs/models/overview /docs/models 302 -/docs/api-reference/files /api-reference 302 -/docs/models/tts /docs/models 302 -/docs/guides/fine-tuning /docs 302 -/docs/specs/files /docs 302 -/docs/modules/threads /docs/threads 302 -/guides/linux /docs/desktop/linux 302 -/developer/build-engine/engine-anatomy/ /docs 302 -/developer/engine/ /docs 302 -/docs/product/system-monitor/ /docs 302 -/docs/product/settings/ /docs 302 -/developer/build-assistant/your-first-assistant/ /docs 302 -/engineering/research/ /docs 302 -/guides/troubleshooting/gpu-not-used/ /docs/troubleshooting#troubleshooting-nvidia-gpu 302 -/troubleshooting/gpu-not-used/ /docs/troubleshooting#troubleshooting-nvidia-gpu 302 -/docs/integrations/langchain/ /integrations 302 -/onboarding/ /docs/quickstart 302 -/cortex/docs https://cortex.so/ 301 -/installation/hardware/ /docs/desktop/windows 302 -/docs/features/load-unload /docs 302 -/guides/chatting/upload-docs/ /docs/threads 302 -/developer/build-extension/package-your-assistant/ /docs 302 -/blog/hello-world /blog 302 -/docs/get-started/build-on-mobile/ /docs/quickstart 302 -/ai/anything-v4 /docs 302 -/nitro /docs 302 -/tokenizer /docs 302 -/hardware/examples/3090x1-@dan-jan /docs 302 -/guides/concepts/ /about 302 -/platform/ /docs 302 -/hardware/examples/AMAZON-LINK-HERE /docs 302 -/guides/threads/?productId=openai&prompt=What /docs 302 -/guides/threads/?productId=openjourney&prompt=realistic%20portrait%20of%20an%20gray%20dog,%20bright%20eyes,%20radiant%20and%20ethereal%20intricately%20detailed%20photography,%20cinematic%20lighting,%2050mm%20lens%20with%20bokeh /docs 302 -/guides/threads/?productId=openjourney&prompt=old,%20female%20robot,%20metal,%20rust,%20wisible%20wires,%20destroyed,%20sad,%20dark,%20dirty,%20looking%20at%20viewer,%20portrait,%20photography,%20detailed%20skin,%20realistic,%20photo-realistic,%208k,%20highly%20detailed,%20full%20length%20frame,%20High%20detail%20RAW%20color%20art,%20piercing,%20diffused%20soft%20lighting,%20shallow%20depth%20of%20field,%20sharp%20focus,%20hyperrealism,%20cinematic%20lighting /docs 302 -/guides/threads/?productId=openjourney&prompt=a%20young%20caucasian%20man%20holding%20his%20chin.pablo%20picasso%20style,%20acrylic%20painting,%20trending%20on%20pixiv%20fanbox,%20palette%20knife%20and%20brush.%20strokes /docs 302 -/guides/threads/?productId=airoboros&prompt=Let%27s%20role%20play.%20You%20are%20a%20robot%20in%20a%20post-apocalyptic%20world. /docs 302 -/chat?productId=pirsus-epic-realism /docs 302 -/chat?productId=ether-blu-mix /docs 302 -/chat?productId=deliberate /docs 302 -/chat?productId=wizard_vicuna /docs 302 -/chat?productId=disneypixar /docs 302 -/chat?productId=meina-mix /docs 302 -/chat?productId=anything-v4 /docs 302 -/chat?productId=airoboros /docs 302 -/chat?productId=ghost-mix /docs 302 -/ai/toonyou /docs 302 -/chat?productId=xrica-mix /docs 302 -/ai/openai /docs 302 -/chat?productId=been-you /docs 302 -/chat?productId=toonyou /docs 302 -/handbook/product-and-community/ /about/community 302 -/handbook/contributing-to-jan/how-to-get-involved-and-faq/ /about 302 -/handbook/engineering-exellence/one-the-tools-what-we-use-and-why/ /about 302 -/handbook/from-spaghetti-flinging-to-strategy/how-we-gtm/ /about/how-we-work/strategy 302 -/handbook/product-and-community/our-okrs/ /about 302 -/products-and-innovations/philosophy-behind-product-development/ /about 302 -/handbook/core-contributors/ /about/team 302 -/handbook/contributing-to-jan/feedback-channels/ /about/how-we-work 302 -/handbook/meet-jan/ /docs 302 -/handbook/engineering-exellence/ /about 302 -/blog/tags/hello/ /blog 302 -/about/community/events/nvidia-llm-day-nov-23/ /about 302 -/guides/gpus-and-vram /docs 302 -/careers/ /about/team 302 -/handbook/engineering/ /about/team 302 -/handbook/products-and-innovations/ /about 302 -/handbook/contributing-to-jan/ /about 302 -/handbook/meet-jan/vision-and-mission/ /about 302 -/handbook/products-and-innovations/roadmap-present-and-future-directions/ /about 302 -/handbook/what-we-do/ /about/team 302 -/handbook/onboarding/ /docs 302 -/handbook/products-and-innovations/overview-of-jan-framework-and-its-applications/ /docs 302 -/handbook/product/ /docs 302 -/running /docs 302 -/running?model=Open%20Journey%20SD /docs 302 -/ai/been-you /about 302 -/tokenizer?view=bpe /docs 302 -/docs/engineering/ /docs 302 -/developer/install-and-prerequisites#system-requirements /docs/desktop/windows 302 -/guides/quickstart /docs/quickstart 302 -/guides/models /docs/models 302 -/guides/threads /docs/threads 302 -/guides/local-api /docs/local-api 302 -/guides/advanced /docs/settings 302 -/guides/engines/llamacpp /docs/built-in/llama-cpp 302 -/guides/engines/tensorrt-llm /docs/built-in/tensorrt-llm 302 -/guides/engines/lmstudio /docs/local-models/lmstudio 302 -/guides/engines/ollama /docs/local-models/ollama 302 -/guides/engines/groq /docs/remote-models/groq 302 -/guides/engines/mistral /docs/remote-models/mistralai 302 -/guides/engines/openai /docs/remote-models/openai 302 -/guides/engines/remote-server /docs/remote-inference/generic-openai 302 -/extensions /docs/extensions 302 -/integrations/discord /integrations/messaging/llmcord 302 -/docs/integrations/discord /integrations/messaging/llmcord 302 -/integrations/interpreter /integrations/function-calling/interpreter 302 -/integrations/raycast /integrations/workflow-automation/raycast 302 -/integrations/openrouter /docs/remote-models/openrouter 302 -/integrations/continue /integrations/coding/continue-dev 302 -/troubleshooting /docs/troubleshooting 302 -/changelog/changelog-v0.4.9 /changelog 302 -/changelog/changelog-v0.4.8 /changelog 302 -/changelog/changelog-v0.4.7 /changelog 302 -/changelog/changelog-v0.4.6 /changelog 302 -/changelog/changelog-v0.4.5 /changelog 302 -/changelog/changelog-v0.4.4 /changelog 302 -/changelog/changelog-v0.4.3 /changelog 302 -/changelog/changelog-v0.4.2 /changelog 302 -/changelog/changelog-v0.4.1 /changelog 302 -/changelog/changelog-v0.4.0 /changelog 302 -/changelog/changelog-v0.3.3 /changelog 302 -/changelog/changelog-v0.3.2 /changelog 302 -/changelog/changelog-v0.3.1 /changelog 302 -/changelog/changelog-v0.3.0 /changelog 302 -/changelog/changelog-v0.2.3 /changelog 302 -/changelog/changelog-v0.2.2 /changelog 302 -/changelog/changelog-v0.2.1 /changelog 302 -/changelog/changelog-v0.2.0 /changelog 302 -/guides/troubleshooting/ /docs/troubleshooting 302 -/docs/troubleshooting/failed-to-fetch/ /docs/troubleshooting 302 -/docs/troubleshooting/stuck-on-broken-build/ /docs/troubleshooting 302 -/docs/troubleshooting/somethings-amiss/ /docs/troubleshooting 302 -/docs/troubleshooting/how-to-get-error-logs/ /docs/troubleshooting 302 -/docs/troubleshooting/permission-denied/ /docs/troubleshooting 302 -/docs/troubleshooting/unexpected-token/ /docs/troubleshooting 302 -/docs/troubleshooting/undefined-issue/ /docs/troubleshooting 302 -/getting-started/troubleshooting/ /docs/troubleshooting 302 -/docs/troubleshooting/gpu-not-used/ /docs/troubleshooting#troubleshooting-nvidia-gpu 302 -/guides/integrations/openrouter/ /docs/remote-models/openrouter 302 -/guides/integrations/continue/ /integrations/coding/continue-dev 302 -/guides/using-extensions/ /docs/extensions 302 -/features/extensions/ /docs/extensions 302 -/integrations/tensorrt /docs/built-in/tensorrt-llm 302 -/integrations/tensorrt/ /docs/built-in/tensorrt-llm 302 -/guides/using-models/integrate-with-remote-server/ /docs/remote-inference/generic-openai 302 -/guides/using-models/customize-engine-settings/ /docs/built-in/llama-cpp 302 -/developers/plugins/azure-openai/ /docs/remote-models/openai 302 -/docs/api-reference/assistants/ /api-reference#tag/assistants 302 -/docs/api-reference/models/list/ /api-reference#tag/models 302 -/docs/api-reference/threads/ /api-reference#tag/chat 302 -/docs/api-reference/messages/ /api-reference#tag/messages 302 -/docs/api-reference/models/ /api-reference#tag/models 302 -/chat/ /docs/threads 302 -/guides/chatting/manage-history/ /docs/threads/ 302 -/guides/using-server/ /docs/local-api 302 -/guides/using-server/server /docs/local-api 302 -/guides/server /docs/desktop 302 -/acknowledgements/ /about/acknowledgements 302 -/community/ /about/community 302 -/faq/ /about/faq 302 -/wall-of-love/ /about/wall-of-love 302 -/guides/troubleshooting/failed-to-fetch/ /docs/troubleshooting 302 -/docs/troubleshooting/gpu-not-used/ /docs/troubleshooting#troubleshooting-nvidia-gpu 302 -/docs/troubleshooting/failed-to-fetch/ /docs/troubleshooting 302 -/team/contributor-program /about/team 302 -/team/join-us /about/team 302 -/how-we-work/strategy /about/how-we-work/strategy 302 -/how-we-work/strategy/ /about/how-we-work/strategy 302 -/how-we-work/project-management /about/how-we-work/project-management 302 -/engineering /about/how-we-work/engineering 302 -/engineering/ci-cd /about/how-we-work/engineering/ci-cd 302 -/engineering/qa /about/how-we-work/engineering/qa 302 -/how-we-work/product-design /about 302 -/how-we-work/analytics /about/how-we-work/analytics 302 -/how-we-work/website-docs /about/how-we-work/website-docs 302 -/blog/postmortems/january-10-2024-bitdefender-false-positive-flag /post/bitdefender 302 -/guides/error-codes/something-amiss /docs/troubleshooting#somethings-amiss 302 -/guides/error-codes/how-to-get-error-logs /docs/troubleshooting#how-to-get-error-logs 302 -/guides/chatting /docs/threads 302 -/guides/integration/openinterpreter /integrations/function-calling/interpreter 302 -/developer/build-assistant /docs/assistants 302 -/guides/integrations /integrations 302 -/specs/hub /docs 302 -/install/windows /docs/desktop/windows 302 -/install/linux /docs/desktop/linux 302 -/install/nightly /docs/desktop/windows 302 -/docs/engineering/fine-tuning /docs 302 -/developer/assistant /docs/assistants 302 -/guides/common-error/broken-build /docs/troubleshooting#broken-build 302 -/guides/using-server/using-server /docs/local-api 302 -/guides/integrations/azure-openai-service /docs/remote-models/openai 302 -/specs/messages /docs/threads 302 -/docs/engineering/models /docs/models 302 -/docs/specs/assistants /docs/assistants 302 -/docs/engineering/chats /docs/threads 302 -/guides/using-extensions/extension-settings /docs/extensions 302 -/guides/models/customize-engine /docs/models 302 -/guides/integration/mistral /docs/remote-models/mistralai 302 -/guides/common-error /docs/troubleshooting 302 -/guides/integrations/ollama /docs/local-models/ollama 302 -/server-suite /api-reference 302 -/guides/integrations/lmstudio /docs/local-models/lmstudio 302 -/guides/integrations/mistral-ai /docs/remote-models/mistralai 302 -/guides/start-server /docs/local-api 302 -/guides/changelog /changelog 302 -/guides/models-list /docs/models 302 -/guides/thread /docs/threads 302 -/docs/engineering/messages /docs/threads 302 -/guides/faqs /about/faq 302 -/docs/integrations/openrouter /docs/remote-models/openrouter 302 -/docs/integrations/ollama/ /docs/local-models/ollama 302 -/api/overview /api-reference 302 -/docs/extension-guides /docs/extensions 302 -/specs/settings /docs 302 -/docs/UI /docs 302 -/guides/using-models/import-models-using-absolute-filepath /docs/models 302 -/install/docker /docs/desktop 302 -/v1/models/ /docs/models 302 -/guides/using-models/import-manually /docs/models 302 -/docs/team/contributor-program /about/team 302 -/guides/chatting/start-thread /docs/threads 302 -/api/files /docs 302 -/specs/threads /docs/threads 302 -/about/brand-assets/ /about 302 -/guides/chatting/upload-images /docs/threads 302 -/guides/using-models/customize-models /docs/models 302 -/specs/chats /docs/threads 302 -/specs/engine /docs 302 -/specs/data-structures/ /docs 302 -/docs/extension-capabilities /docs/extensions 302 -/docs/get-started/use-local-server /docs/local-api 302 -/guides/install/cloud-native/ /docs/desktop 302 -/guides/install/ /docs/desktop 302 -/docs/installation/desktop /docs/desktop 302 -/specs /docs 302 -/docs/get-started/build-extension /docs/extensions 302 -/specs/files /docs 302 -/guides/using-models/package-models /docs/models 302 -/guides/using-models/ /docs/models 302 -/install/overview /docs/desktop/windows 302 -/developer/prereq/ /docs 302 -/docs/get-started/extension-anatomy /docs/extensions 302 -/guides/mac /docs/desktop/mac 302 -/intro /about 302 -/specs/fine-tuning /docs 302 -/specs/file-based /docs 302 -/docs/extension-guides/monitoring /docs/extensions 302 -/api /api-reference 302 -/getting-started/build-an-app/ /docs/quickstart 302 -/features/ai-models /docs/models 302 -/reference/store /api-reference 302 -/tutorials/build-chat-app/ /docs/quickstart 302 -/features/acceleration/ /docs/built-in/llama-cpp 302 -/getting-started/install/mac/ /docs/desktop/mac 302 -docs/guides/fine-tuning/what-models-can-be-fine-tuned/ /docs 302 -/docs/specs/threads/ /docs/threads 302 -/docs/api-reference/fine-tuning/ /api-reference 302 -/docs/guides/speech-to-text/prompting/ /docs/quickstart 302 -/docs/guides/legacy-fine-tuning/analyzing-your-fine-tuned-model/ /docs 302 -/getting-started/install/windows/ /docs/desktop/windows 302 -/docs/modules/chats/ /docs/threads 302 -/docs/specs/chats/ /docs/threads 302 -/docs/modules/files/ /docs 302 -/tutorials/build-rag-app/ /docs/tools/retrieval 302 -/docs/models/model-endpoint-compatibility/ /docs/models 302 -/docs/guides/legacy-fine-tuning/creating-training-data/ /docs 302 -/docs/specs/models/ /docs/models 302 -/docs/guides/safety-best-practices/end-user-ids/ /docs/quickstart 302 -/docs/models/overview/ /docs/models 302 -/docs/api-reference/files/ /api-reference 302 -/docs/models/tts/ /docs/models 302 -/docs/guides/fine-tuning/ /docs 302 -/docs/specs/files/ /docs 302 -/docs/modules/threads/ /docs/threads 302 -/guides/linux/ /docs/desktop/linux 302 -/developer/build-engine/engine-anatomy /docs 302 -/developer/engine /docs 302 -/docs/product/system-monitor /docs 302 -/docs/product/settings /docs 302 -/developer/build-assistant/your-first-assistant /docs 302 -/engineering/research /docs 302 -/docs/integrations/langchain /integrations 302 -/onboarding /docs/quickstart 302 -/installation/hardware /docs/desktop/windows 302 -/docs/features/load-unload/ /docs 302 -/guides/chatting/upload-docs /docs/threads 302 -/developer/build-extension/package-your-assistant /docs 302 -/blog/hello-world/ /blog 302 -/docs/get-started/build-on-mobile /docs/quickstart 302 -/ai/anything-v4/ /docs 302 -/nitro/ /docs 302 -/tokenizer/ /docs 302 -/hardware/examples/3090x1-@dan-jan/ /docs 302 -/guides/concepts /about 302 -/platform /docs 302 -/hardware/examples/AMAZON-LINK-HERE/ /docs 302 -/guides/threads/?productId=openai&prompt=What/ /docs 302 -/guides/threads/?productId=openjourney&prompt=realistic%20portrait%20of%20an%20gray%20dog,%20bright%20eyes,%20radiant%20and%20ethereal%20intricately%20detailed%20photography,%20cinematic%20lighting,%2050mm%20lens%20with%20bokeh/ /docs 302 -/guides/threads/?productId=openjourney&prompt=old,%20female%20robot,%20metal,%20rust,%20wisible%20wires,%20destroyed,%20sad,%20dark,%20dirty,%20looking%20at%20viewer,%20portrait,%20photography,%20detailed%20skin,%20realistic,%20photo-realistic,%208k,%20highly%20detailed,%20full%20length%20frame,%20High%20detail%20RAW%20color%20art,%20piercing,%20diffused%20soft%20lighting,%20shallow%20depth%20of%20field,%20sharp%20focus,%20hyperrealism,%20cinematic%20lighting/ /docs 302 -/guides/threads/?productId=openjourney&prompt=a%20young%20caucasian%20man%20holding%20his%20chin.pablo%20picasso%20style,%20acrylic%20painting,%20trending%20on%20pixiv%20fanbox,%20palette%20knife%20and%20brush.%20strokes/ /docs 302 -/guides/threads/?productId=airoboros&prompt=Let%27s%20role%20play.%20You%20are%20a%20robot%20in%20a%20post-apocalyptic%20world./ /docs 302 -/chat?productId=pirsus-epic-realism/ /docs 302 -/chat?productId=ether-blu-mix/ /docs 302 -/chat?productId=deliberate/ /docs 302 -/chat?productId=wizard_vicuna/ /docs 302 -/chat?productId=disneypixar/ /docs 302 -/chat?productId=meina-mix/ /docs 302 -/chat?productId=anything-v4/ /docs 302 -/chat?productId=airoboros/ /docs 302 -/chat?productId=ghost-mix/ /docs 302 -/ai/toonyou/ /docs 302 -/chat?productId=xrica-mix/ /docs 302 -/ai/openai/ /docs 302 -/chat?productId=been-you/ /docs 302 -/chat?productId=toonyou/ /docs 302 -/handbook/product-and-community /about/community 302 -/handbook/contributing-to-jan/how-to-get-involved-and-faq /about 302 -/handbook/engineering-exellence/one-the-tools-what-we-use-and-why /about 302 -/handbook/from-spaghetti-flinging-to-strategy/how-we-gtm /about/how-we-work/strategy 302 -/handbook/product-and-community/our-okrs /about 302 -/products-and-innovations/philosophy-behind-product-development /about 302 -/handbook/core-contributors /about/team 302 -/handbook/contributing-to-jan/feedback-channels /about/how-we-work 302 -/handbook/meet-jan /docs 302 -/handbook/engineering-exellence /about 302 -/blog/tags/hello /blog 302 -/about/community/events/nvidia-llm-day-nov-23 /about 302 -/guides/gpus-and-vram/ /docs 302 -/careers /about/team 302 -/handbook/engineering /about/team 302 -/handbook/products-and-innovations /about 302 -/handbook/contributing-to-jan /about 302 -/handbook/meet-jan/vision-and-mission /about 302 -/handbook/products-and-innovations/roadmap-present-and-future-directions /about 302 -/handbook/what-we-do /about/team 302 -/handbook/onboarding /docs 302 -/handbook/products-and-innovations/overview-of-jan-framework-and-its-applications /docs 302 -/handbook/product /docs 302 -/running/ /docs 302 -/running?model=Open%20Journey%20SD/ /docs 302 -/ai/been-you/ /about 302 -/tokenizer?view=bpe/ /docs 302 -/docs/engineering /docs 302 -/developer /docs 302 -/developer/ /docs 302 -/developer/architecture /docs/architecture 302 -/developer/architecture/ /docs/architecture 302 -/developer/file-based /docs 302 -/developer/file-based/ /docs 302 -/developer/framework /docs 302 -/developer/framework/ /docs 302 -/developer/framework/engineering /docs 302 -/developer/framework/engineering/ /docs 302 -/developer/framework/engineering/assistants /docs/assistants 302 -/developer/framework/engineering/assistants/ /docs/assistants 302 -/developer/framework/engineering/chats /docs/threads 302 -/developer/framework/engineering/chats/ /docs/threads 302 -/developer/framework/engineering/engine /docs 302 -/developer/framework/engineering/engine/ /docs 302 -/developer/framework/engineering/files /docs 302 -/developer/framework/engineering/files/ /docs 302 -/developer/framework/engineering/fine-tuning /docs 302 -/developer/framework/engineering/fine-tuning/ /docs 302 -/developer/framework/engineering/messages /docs/threads 302 -/developer/framework/engineering/messages/ /docs/threads 302 -/developer/framework/engineering/models /docs/models 302 -/developer/framework/engineering/models/ /docs/models 302 -/developer/framework/engineering/prompts /docs 302 -/developer/framework/engineering/prompts/ /docs 302 -/developer/framework/engineering/threads /docs/threads 302 -/developer/framework/engineering/threads/ /docs/threads 302 -/developer/framework/product /docs 302 -/developer/framework/product/ /docs 302 -/developer/framework/product/chat /docs/threads 302 -/developer/framework/product/chat/ /docs/threads 302 -/developer/framework/product/hub /docs 302 -/developer/framework/product/hub/ /docs 302 -/developer/framework/product/jan /about 302 -/developer/framework/product/jan/ /about 302 -/developer/framework/product/settings /docs/settings 302 -/developer/framework/product/settings/ /docs/settings 302 -/developer/framework/product/system-monitor /docs 302 -/developer/framework/product/system-monitor/ /docs 302 -/developer/user-interface /docs 302 -/developer/user-interface/ /docs 302 -/docs/desktop /docs/desktop/windows 302 -/docs/desktop/ /docs/desktop/windows 302 -/docs/inferences/groq /docs/remote-models/groq 302 -/docs/inferences/groq/ /docs/remote-models/groq 302 -/docs/inferences/llamacpp /docs/built-in/llama-cpp 302 -/docs/inferences/llamacpp/ /docs/built-in/llama-cpp 302 -/docs/inferences/lmstudio /docs/local-models/lmstudio 302 -/docs/inferences/lmstudio/ /docs/local-models/lmstudio 302 -/docs/inferences/mistralai /docs/remote-models/mistralai 302 -/docs/inferences/mistralai/ /docs/remote-models/mistralai 302 -/docs/inferences/ollama /docs/local-models/ollama 302 -/docs/inferences/ollama/ /docs/local-models/ollama 302 -/docs/inferences/openai /docs/remote-models/openai 302 -/docs/inferences/openai/ /docs/remote-models/openai 302 -/docs/inferences/remote-server-integration /docs/remote-inference/generic-openai 302 -/docs/inferences/remote-server-integration/ /docs/remote-inference/generic-openai 302 -/docs/inferences/tensorrtllm /docs/built-in/tensorrt-llm 302 -/docs/inferences/tensorrtllm/ /docs/built-in/tensorrt-llm 302 -/docs/integrations/router /docs/remote-models/openrouter 302 -/docs/integrations/router/ /docs/remote-models/openrouter 302 -/docs/server /docs/local-api 302 -/docs/server/ /docs/local-api 302 -/features/ /docs 302 -/features /docs 302 -/features/local/ /docs/local-api 302 -/features/local /docs/local-api 302 -/guides/providers/tensorrt-llm /docs/built-in/tensorrt-llm 302 -/guides/providers/tensorrt-llm/ /docs/built-in/tensorrt-llm 302 -/hardware/recommendations/by-model/ /docs 302 -/hardware/recommendations/by-hardware/ /docs 302 -/product /docs 302 -/product/features /docs 302 -/product/features/agents-framework /docs 302 -/product/features/api-server /docs/local-api 302 -/product/features/data-security /docs 302 -/product/features/extensions-framework /docs/extensions 302 -/product/features/local /docs 302 -/product/features/remote /docs 302 -/product/home-server /docs/local-api 302 -/guides/providers/tensorrt-llm/ /docs/built-in/tensorrt-llm 302 -/docs/tools /docs/tools/retrieval 302 -/docs/local-inference/llamacpp /docs/built-in/llama-cpp 302 -/docs/local-inference/tensorrtllm /docs/built-in/tensorrt-llm 302 -/guides/using-server/server/ /docs/local-api 302 -/integrations/coding/vscode /integrations/coding/continue-dev 302 -/docs/integrations/interpreter /integrations/function-calling/interpreter 302 -/cortex/built-in/llama-cpp /docs 302 -/docs/desktop-installation/linux /docs/desktop/linux 302 -/docs/desktop-installation/windows /docs/desktop/windows 302 -/docs/desktop-installation/mac /docs/desktop/mac 302 -/desktop/ /docs/desktop 302 -/developer/ui/ /docs 302 -/docs/local-inference/lmstudio /docs/local-models/lmstudio 302 -/docs/local-inference/ollama /docs/local-models/ollama 302 -/docs/remote-inference/openai /docs/remote-models/openai 302 -/docs/remote-inference/groq /docs/remote-models/groq 302 -/docs/remote-inference/mistralai /docs/remote-models/mistralai 302 -/docs/remote-inference/openrouter /docs/remote-models/openrouter 302 -/docs/remote-inference/generic-openai /docs/remote-models/generic-openai 302 -/docs/desktop-installation /docs/desktop 302 -/hardware/concepts/gpu-and-vram/ /docs 302 -/hardware/recommendations/by-usecase/ /docs 302 -/about/how-we-work/strategy /about 302 -/docs/engineering/assistants/ /docs 302 -/cortex https://cortex.so/docs/ 301 -/cortex/quickstart https://cortex.so/docs/quickstart 301 -/cortex/hardware https://cortex.so/docs/hardware 301 -/cortex/installation https://cortex.so/docs/category/installation 301 -/cortex/installation/mac https://cortex.so/docs/instalation/mac 301 -/cortex/installation/windows https://cortex.so/docs/instalation/windows 301 -/cortex/installation/linux https://cortex.so/docs/instalation/linux 301 -/cortex/command-line https://cortex.so/docs/command-line 301 -/cortex/ts-library https://cortex.so/docs/ts-library 301 -/cortex/py-library https://cortex.so/docs/py-library 301 -/cortex/server https://cortex.so/docs/server 301 -/cortex/text-generation https://cortex.so/docs/text-generation 301 -/cortex/cli https://cortex.so/docs/cli/ 301 -/cortex/cli/init https://cortex.so/docs/cli/init 301 -/cortex/cli/pull https://cortex.so/docs/cli/pull 301 -/cortex/cli/run https://cortex.so/docs/cli/run 301 -/cortex/cli/models https://cortex.so/docs/cli/models/ 301 -/cortex/cli/models/download https://cortex.so/docs/cli/models/download 301 -/cortex/cli/models/list https://cortex.so/docs/cli/models/list 301 -/cortex/cli/models/get https://cortex.so/docs/cli/models/get 301 -/cortex/cli/models/update https://cortex.so/docs/cli/models/update 301 -/cortex/cli/models/start https://cortex.so/docs/cli/models/start 301 -/cortex/cli/models/stop https://cortex.so/docs/cli/models/stop 301 -/cortex/cli/models/remove https://cortex.so/docs/cli/models/remove 301 -/cortex/cli/ps https://cortex.so/docs/cli/ps 301 -/cortex/cli/chat https://cortex.so/docs/cli/chat 301 -/cortex/cli/kill https://cortex.so/docs/cli/kill 301 -/cortex/cli/serve https://cortex.so/docs/cli/serve 301 -/cortex/architecture https://cortex.so/docs/architecture 301 -/cortex/cortex-cpp https://cortex.so/docs/cortex-cpp 301 -/cortex/cortex-llamacpp https://cortex.so/docs/cortex-llamacpp 301 -/api-reference https://cortex.so/api-reference 301 -/docs/assistants /docs 302 -/docs/server-installation/ /docs/desktop 302 -/docs/server-installation/onprem /docs/desktop 302 -/docs/server-installation/aws /docs/desktop 302 -/docs/server-installation/gcp /docs/desktop 302 -/docs/server-installation/azure /docs/desktop 302 -/about /docs 302 -/api-server /docs/api-server 302 -/cdn-cgi/l/email-protection 302 -/docs/built-in/tensorrt-llm 302 -/docs/desktop/beta /docs 302 -/docs/docs/data-folder /docs/data-folder 302 -/docs/docs/desktop/linux /docs/desktop/linux 302 -/docs/docs/troubleshooting /docs/troubleshooting 302 -/docs/local-engines/llama-cpp 302 -/docs/models/model-parameters 302 -/mcp /docs/mcp 302 -/quickstart /docs/quickstart 302 -/server-examples/continue-dev /docs/server-examples/continue-dev 302 +/about /handbook 302 +/about/ /handbook 302 +/about/community /handbook 302 +/about/handbook /handbook 302 +/about/handbook/analytics /handbook 302 +/about/handbook/project-management /handbook 302 +/about/handbook/strategy /handbook 302 +/about/handbook/website-docs /handbook 302 +/about/how-we-work/product-design /handbook 302 +/about/how-we-work/strategy /handbook 302 +/about/investors /handbook 302 +/about/roadmap /handbook 302 +/about/team /handbook 302 +/about/vision /handbook 302 +/about/wall-of-love /handbook 302 +/handbook/contributing-to-jan/ /handbook 302 +/handbook/core-contributors/how-we-hire/ /handbook 302 +/handbook/engineering-excellence/ /handbook 302 +/handbook/engineering/ /handbook 302 +/handbook/product-and-community/ /handbook 302 +/handbook/products-and-innovations/ /handbook 302 +/handbook/what-we-do/our-approach-to-design/ /handbook 302 +/how-we-work/product-design /handbook 302 +/handbook/product-and-community/approaches-to-beta-testing-and-user-engagement/ /handbook 302 +/cortex/assistants /docs/ 302 +/cortex/build-extension /docs/ 302 +/cortex/built-in/tensorrt-llm /docs/ 302 +/cortex/cli/kill /docs/ 302 +/cortex/command-line /docs/ 302 +/cortex/cortex-openvino /docs/ 302 +/cortex/cortex-python /docs/ 302 +/cortex/cortex-tensorrt-llm /docs/ 302 +/cortex/desktop-installation/linux /docs/ 302 +/cortex/embeddings /docs/ 302 +/cortex/ext-architecture /docs/ 302 +/cortex/fine-tuning /docs/ 302 +/cortex/fine-tuning/overview /docs/ 302 +/cortex/function-calling /docs/ 302 +/cortex/installation/linux /docs/ 302 +/cortex/installation/mac /docs/ 302 +/cortex/model-operations /docs/ 302 +/cortex/model-operations/overview /docs/ 302 +/cortex/rag/overview /docs/ 302 +/cortex/server /docs/ 302 +/docs/tools/retrieval /docs/ 302 +/developer/framework/engineering/chats /docs/ 302 +/developer/framework/engineering/threads/ /docs/ 302 +/developer/framework/product/chat /docs/ 302 +/docs/extensions /docs/ 302 +/docs/shortcuts /docs/ 302 +/docs/models /docs/ 302 +/integrations/function-calling/interpreter /docs/ 302 +/docs/desktop/built-in/tensorrt-llm /docs 302 +/docs/desktop/beta /docs/desktop 302 +/platforms /docs/desktop 302 +/docs/built-in/llama-cpp /docs/desktop/llama-cpp 302 +/docs/install-engines /docs/desktop/llama-cpp 302 +/docs/local-api /docs/desktop/api-server 302 +/docs/local-engines/llama-cpp /docs/desktop/llama-cpp 302 +/docs/api-server /docs/desktop/api-server 302 +/docs/assistants /docs/desktop/assistants 302 +/docs/models/manage-models /docs/desktop/manage-models 302 +/docs/data-folder /docs/desktop/data-folder 302 +/cortex/vision /handbook/open-superintelligence 302 +/docs/models/model-parameters /docs/desktop/model-parameters 302 +/docs/remote-models/generic-openai /docs/desktop/remote-models/openai 302 +/docs/threads /changelog/2024-01-16-settings-options-right-panel 302 +/docs/desktop/docs/data-folder /docs/desktop/data-folder 302 +/docs/desktop/docs/desktop/install/linux /docs/desktop/install/linux 302 +/docs/desktop/docs/desktop/troubleshooting /docs/desktop/troubleshooting 302 +/docs/desktop/linux /docs/desktop/install/linux 302 +/docs/desktop/local-engines/llama-cpp /docs/desktop/llama-cpp-server 302 +/docs/desktop/models/model-parameters /docs/desktop/model-parameters 302 +/docs/desktop/windows /docs/desktop/install/windows 302 +/docs/docs/data-folder /docs/desktop/data-folder 302 +/docs/docs/desktop/linux /docs/desktop/install/linux 302 +/docs/docs/troubleshooting /docs/desktop/troubleshooting 302 +/docs/jan-models/jan-nano-32 /docs/desktop/jan-models/jan-nano-32 302 +/docs/jan-models/jan-v1 /docs/desktop/jan-models/jan-v1 302 +/docs/jan-models/lucy /docs/desktop/jan-models/lucy 302 +/docs/llama-cpp /docs/desktop/llama-cpp 302 +/docs/manage-models /docs/desktop/manage-models 302 +/docs/mcp /docs/desktop/mcp 302 +/docs/mcp-examples/data-analysis/e2b /docs/desktop/mcp-examples/data-analysis/e2b 302 +/docs/mcp-examples/deepresearch/octagon /docs/desktop/mcp-examples/deepresearch/octagon 302 +/docs/mcp-examples/design/canva /docs/desktop/mcp-examples/design/canva 302 +/docs/mcp-examples/productivity/linear /docs/desktop/mcp-examples/productivity/linear 302 +/docs/mcp-examples/search/exa /docs/desktop/mcp-examples/search/exa 302 +/docs/model-parameters /docs/desktop/model-parameters 302 +/docs/remote-models/cohere /docs/desktop/remote-models/cohere 302 +/docs/remote-models/google /docs/desktop/remote-models/google 302 +/docs/remote-models/groq /docs/desktop/remote-models/groq 302 +/docs/remote-models/huggingface /docs/desktop/remote-models/huggingface 302 +/docs/remote-models/mistralai /docs/desktop/remote-models/mistralai 302 +/docs/remote-models/openai /docs/desktop/remote-models/openai 302 +/docs/server-examples/continue-dev /docs/desktop/server-examples/continue-dev 302 +/docs/server-examples/n8n /docs/desktop/server-examples/n8n 302 +/docs/server-troubleshooting /docs/desktop/troubleshooting 302 +/docs/privacy-policy /privacy 302 +/docs/server-settings /docs/desktop/server-settings 302 +/docs/settings /docs/desktop/settings 302 +/docs/llama-cpp-server /docs/desktop/llama-cpp-server 302 +/docs/install/linux /docs/desktop/install/linux 302 +/docs/install/macos /docs/desktop/install/mac 302 +/docs/install/windows /docs/desktop/install/windows 302 +/docs/mcp-examples/browser/browserbase /docs/desktop/mcp-examples/browser/browserbase 302 +/docs/jan-models/jan-nano-128 /docs/desktop/jan-models/jan-nano-128 302 +/docs/mcp-examples/search/serper /docs/desktop/mcp-examples/search/serper 302 +/docs/mcp-examples/data-analysis/jupyter /docs/desktop/mcp-examples/data-analysis/jupyter 302 +/docs/mcp-examples/productivity/todoist /docs/desktop/mcp-examples/productivity/todoist 302 +/docs/remote-models/anthropic /docs/desktop/remote-models/anthropic 302 +/docs/remote-models/openrouter /docs/desktop/remote-models/openrouter 302 +/docs/server-examples/llmcord /docs/desktop/server-examples/llmcord 302 +/docs/server-examples/tabby /docs/desktop/server-examples/tabby 302 +/guides/integrations/continue/ /docs/desktop/server-examples/continue-dev 302 +/continue-dev /docs/desktop/server-examples/continue-dev 302 +/integrations /docs/desktop/server-examples/continue-dev 302 +/integrations/coding/continue-dev /docs/desktop/server-examples/continue-dev 302 +/integrations/continue/ /docs/desktop/server-examples/continue-dev 302 +/integrations/coding/tabby /docs/desktop/server-examples/tabby 302 +/integrations/messaging/llmcord /docs/desktop/server-examples/llmcord 302 +/integrations/workflow-automation/n8n /docs/desktop/server-examples/n8n 302 +/local-server/continue-dev /docs/desktop/server-examples/continue-dev 302 +/local-server/data-folder /docs/desktop/desktop/data-folder 302 +/local-server/llama-cpp /docs/desktop/desktop/llama-cpp 302 +/local-server/n8n /docs/desktop/server-examples/n8n 302 +/local-server/settings /docs/desktop/server-settings 302 +/local-server/tabby /docs/desktop/server-examples/tabby 302 +/local-server/troubleshooting /docs/desktop/troubleshooting 302 +/mcp /docs/desktop/mcp 302 +/quickstart /docs/desktop/quickstart 302 +/server-examples/continue-dev /docs/desktop/server-examples/continue-dev 302 \ No newline at end of file diff --git a/docs/public/sitemap-0.xml b/docs/public/sitemap-0.xml index 517d84329..131222295 100644 --- a/docs/public/sitemap-0.xml +++ b/docs/public/sitemap-0.xml @@ -1,148 +1,125 @@ -https://jan.ai2025-03-10T05:06:47.876Zdaily1 -https://jan.ai/about2025-03-10T05:06:47.877Zdaily1 -https://jan.ai/about/handbook2025-03-10T05:06:47.877Zdaily1 -https://jan.ai/about/handbook/analytics2025-03-10T05:06:47.877Zdaily1 -https://jan.ai/about/handbook/engineering2025-03-10T05:06:47.877Zdaily1 -https://jan.ai/about/handbook/engineering/ci-cd2025-03-10T05:06:47.877Zdaily1 -https://jan.ai/about/handbook/engineering/qa2025-03-10T05:06:47.877Zdaily1 -https://jan.ai/about/handbook/product-design2025-03-10T05:06:47.877Zdaily1 -https://jan.ai/about/handbook/project-management2025-03-10T05:06:47.877Zdaily1 -https://jan.ai/about/handbook/strategy2025-03-10T05:06:47.877Zdaily1 -https://jan.ai/about/handbook/website-docs2025-03-10T05:06:47.877Zdaily1 -https://jan.ai/about/investors2025-03-10T05:06:47.877Zdaily1 -https://jan.ai/about/team2025-03-10T05:06:47.877Zdaily1 -https://jan.ai/about/vision2025-03-10T05:06:47.877Zdaily1 -https://jan.ai/about/wall-of-love2025-03-10T05:06:47.877Zdaily1 -https://jan.ai/blog2025-03-10T05:06:47.877Zdaily1 -https://jan.ai/changelog2025-03-10T05:06:47.877Zdaily1 -https://jan.ai/changelog/2023-12-21-faster-inference-across-platform2025-03-10T05:06:47.877Zdaily1 -https://jan.ai/changelog/2024-01-16-settings-options-right-panel2025-03-10T05:06:47.877Zdaily1 -https://jan.ai/changelog/2024-01-29-local-api-server2025-03-10T05:06:47.877Zdaily1 -https://jan.ai/changelog/2024-02-05-jan-data-folder2025-03-10T05:06:47.877Zdaily1 -https://jan.ai/changelog/2024-02-10-jan-is-more-stable2025-03-10T05:06:47.877Zdaily1 -https://jan.ai/changelog/2024-02-26-home-servers-with-helm2025-03-10T05:06:47.877Zdaily1 -https://jan.ai/changelog/2024-03-06-ui-revamp-settings2025-03-10T05:06:47.877Zdaily1 -https://jan.ai/changelog/2024-03-11-import-models2025-03-10T05:06:47.877Zdaily1 -https://jan.ai/changelog/2024-03-19-nitro-tensorrt-llm-extension2025-03-10T05:06:47.877Zdaily1 -https://jan.ai/changelog/2024-04-02-groq-api-integration2025-03-10T05:06:47.877Zdaily1 -https://jan.ai/changelog/2024-04-15-new-mistral-extension2025-03-10T05:06:47.877Zdaily1 -https://jan.ai/changelog/2024-04-25-llama3-command-r-hugginface2025-03-10T05:06:47.877Zdaily1 -https://jan.ai/changelog/2024-05-20-llamacpp-upgrade-new-remote-models2025-03-10T05:06:47.877Zdaily1 -https://jan.ai/changelog/2024-05-28-cohere-aya-23-8b-35b-phi-3-medium2025-03-10T05:06:47.877Zdaily1 -https://jan.ai/changelog/2024-06-21-nvidia-nim-support2025-03-10T05:06:47.877Zdaily1 -https://jan.ai/changelog/2024-07-15-claude-3-5-support2025-03-10T05:06:47.877Zdaily1 -https://jan.ai/changelog/2024-09-01-llama3-1-gemma2-support2025-03-10T05:06:47.877Zdaily1 -https://jan.ai/changelog/2024-09-17-improved-cpu-performance2025-03-10T05:06:47.877Zdaily1 -https://jan.ai/changelog/2024-10-24-jan-stable2025-03-10T05:06:47.877Zdaily1 -https://jan.ai/changelog/2024-11-22-jan-bugs2025-03-10T05:06:47.877Zdaily1 -https://jan.ai/changelog/2024-11.14-jan-supports-qwen-coder2025-03-10T05:06:47.877Zdaily1 -https://jan.ai/changelog/2024-12-03-jan-is-faster2025-03-10T05:06:47.877Zdaily1 -https://jan.ai/changelog/2024-12-05-jan-hot-fix-mac2025-03-10T05:06:47.877Zdaily1 -https://jan.ai/changelog/2024-12-30-jan-new-privacy2025-03-10T05:06:47.877Zdaily1 -https://jan.ai/changelog/2025-01-06-key-issues-resolved2025-03-10T05:06:47.877Zdaily1 -https://jan.ai/changelog/2025-01-23-deepseek-r1-jan2025-03-10T05:06:47.877Zdaily1 -https://jan.ai/cortex2025-03-10T05:06:47.877Zdaily1 -https://jan.ai/cortex/architecture2025-03-10T05:06:47.877Zdaily1 -https://jan.ai/cortex/assistants2025-03-10T05:06:47.877Zdaily1 -https://jan.ai/cortex/build-extension2025-03-10T05:06:47.877Zdaily1 -https://jan.ai/cortex/cli2025-03-10T05:06:47.877Zdaily1 -https://jan.ai/cortex/cli/chat2025-03-10T05:06:47.877Zdaily1 -https://jan.ai/cortex/cli/init2025-03-10T05:06:47.877Zdaily1 -https://jan.ai/cortex/cli/kill2025-03-10T05:06:47.877Zdaily1 -https://jan.ai/cortex/cli/models2025-03-10T05:06:47.877Zdaily1 -https://jan.ai/cortex/cli/models/download2025-03-10T05:06:47.877Zdaily1 -https://jan.ai/cortex/cli/models/get2025-03-10T05:06:47.877Zdaily1 -https://jan.ai/cortex/cli/models/list2025-03-10T05:06:47.877Zdaily1 -https://jan.ai/cortex/cli/models/remove2025-03-10T05:06:47.877Zdaily1 -https://jan.ai/cortex/cli/models/start2025-03-10T05:06:47.877Zdaily1 -https://jan.ai/cortex/cli/models/stop2025-03-10T05:06:47.877Zdaily1 -https://jan.ai/cortex/cli/models/update2025-03-10T05:06:47.877Zdaily1 -https://jan.ai/cortex/cli/ps2025-03-10T05:06:47.877Zdaily1 -https://jan.ai/cortex/cli/pull2025-03-10T05:06:47.877Zdaily1 -https://jan.ai/cortex/cli/run2025-03-10T05:06:47.877Zdaily1 -https://jan.ai/cortex/cli/serve2025-03-10T05:06:47.877Zdaily1 -https://jan.ai/cortex/command-line2025-03-10T05:06:47.877Zdaily1 -https://jan.ai/cortex/cortex-cpp2025-03-10T05:06:47.877Zdaily1 -https://jan.ai/cortex/cortex-llamacpp2025-03-10T05:06:47.877Zdaily1 -https://jan.ai/cortex/cortex-openvino2025-03-10T05:06:47.877Zdaily1 -https://jan.ai/cortex/cortex-python2025-03-10T05:06:47.877Zdaily1 -https://jan.ai/cortex/cortex-tensorrt-llm2025-03-10T05:06:47.877Zdaily1 -https://jan.ai/cortex/embeddings2025-03-10T05:06:47.877Zdaily1 -https://jan.ai/cortex/embeddings/overview2025-03-10T05:06:47.877Zdaily1 -https://jan.ai/cortex/error-codes2025-03-10T05:06:47.877Zdaily1 -https://jan.ai/cortex/ext-architecture2025-03-10T05:06:47.877Zdaily1 -https://jan.ai/cortex/fine-tuning2025-03-10T05:06:47.877Zdaily1 -https://jan.ai/cortex/fine-tuning/overview2025-03-10T05:06:47.877Zdaily1 -https://jan.ai/cortex/function-calling2025-03-10T05:06:47.877Zdaily1 -https://jan.ai/cortex/hardware2025-03-10T05:06:47.877Zdaily1 -https://jan.ai/cortex/installation2025-03-10T05:06:47.877Zdaily1 -https://jan.ai/cortex/installation/linux2025-03-10T05:06:47.877Zdaily1 -https://jan.ai/cortex/installation/mac2025-03-10T05:06:47.877Zdaily1 -https://jan.ai/cortex/installation/windows2025-03-10T05:06:47.877Zdaily1 -https://jan.ai/cortex/model-operations2025-03-10T05:06:47.877Zdaily1 -https://jan.ai/cortex/model-operations/overview2025-03-10T05:06:47.877Zdaily1 -https://jan.ai/cortex/py-library2025-03-10T05:06:47.877Zdaily1 -https://jan.ai/cortex/quickstart2025-03-10T05:06:47.877Zdaily1 -https://jan.ai/cortex/rag2025-03-10T05:06:47.877Zdaily1 -https://jan.ai/cortex/rag/overview2025-03-10T05:06:47.877Zdaily1 -https://jan.ai/cortex/server2025-03-10T05:06:47.877Zdaily1 -https://jan.ai/cortex/text-generation2025-03-10T05:06:47.877Zdaily1 -https://jan.ai/cortex/ts-library2025-03-10T05:06:47.877Zdaily1 -https://jan.ai/cortex/vision2025-03-10T05:06:47.877Zdaily1 -https://jan.ai/cortex/vision/overview2025-03-10T05:06:47.877Zdaily1 -https://jan.ai/docs2025-03-10T05:06:47.877Zdaily1 -https://jan.ai/docs/api-server2025-03-10T05:06:47.877Zdaily1 -https://jan.ai/docs/assistants2025-03-10T05:06:47.877Zdaily1 -https://jan.ai/docs/configure-extensions2025-03-10T05:06:47.877Zdaily1 -https://jan.ai/docs/data-folder2025-03-10T05:06:47.877Zdaily1 -https://jan.ai/docs/desktop2025-03-10T05:06:47.877Zdaily1 -https://jan.ai/docs/desktop/linux2025-03-10T05:06:47.877Zdaily1 -https://jan.ai/docs/desktop/mac2025-03-10T05:06:47.877Zdaily1 -https://jan.ai/docs/desktop/windows2025-03-10T05:06:47.877Zdaily1 -https://jan.ai/docs/error-codes2025-03-10T05:06:47.877Zdaily1 -https://jan.ai/docs/extensions2025-03-10T05:06:47.877Zdaily1 -https://jan.ai/docs/extensions-settings/model-management2025-03-10T05:06:47.877Zdaily1 -https://jan.ai/docs/extensions-settings/system-monitoring2025-03-10T05:06:47.877Zdaily1 -https://jan.ai/docs/install-engines2025-03-10T05:06:47.877Zdaily1 -https://jan.ai/docs/install-extensions2025-03-10T05:06:47.877Zdaily1 -https://jan.ai/docs/local-engines/llama-cpp2025-03-10T05:06:47.877Zdaily1 -https://jan.ai/docs/models2025-03-10T05:06:47.877Zdaily1 -https://jan.ai/docs/models/manage-models2025-03-10T05:06:47.877Zdaily1 -https://jan.ai/docs/models/model-parameters2025-03-10T05:06:47.877Zdaily1 -https://jan.ai/docs/privacy2025-03-10T05:06:47.877Zdaily1 -https://jan.ai/docs/privacy-policy2025-03-10T05:06:47.877Zdaily1 -https://jan.ai/docs/quickstart2025-03-10T05:06:47.877Zdaily1 -https://jan.ai/docs/remote-models/anthropic2025-03-10T05:06:47.877Zdaily1 -https://jan.ai/docs/remote-models/cohere2025-03-10T05:06:47.877Zdaily1 -https://jan.ai/docs/remote-models/deepseek2025-03-10T05:06:47.877Zdaily1 -https://jan.ai/docs/remote-models/google2025-03-10T05:06:47.877Zdaily1 -https://jan.ai/docs/remote-models/groq2025-03-10T05:06:47.877Zdaily1 -https://jan.ai/docs/remote-models/martian2025-03-10T05:06:47.877Zdaily1 -https://jan.ai/docs/remote-models/mistralai2025-03-10T05:06:47.877Zdaily1 -https://jan.ai/docs/remote-models/nvidia-nim2025-03-10T05:06:47.877Zdaily1 -https://jan.ai/docs/remote-models/openai2025-03-10T05:06:47.877Zdaily1 -https://jan.ai/docs/remote-models/openrouter2025-03-10T05:06:47.877Zdaily1 -https://jan.ai/docs/remote-models/triton2025-03-10T05:06:47.877Zdaily1 -https://jan.ai/docs/settings2025-03-10T05:06:47.877Zdaily1 -https://jan.ai/docs/threads2025-03-10T05:06:47.877Zdaily1 -https://jan.ai/docs/tools/retrieval2025-03-10T05:06:47.877Zdaily1 -https://jan.ai/docs/troubleshooting2025-03-10T05:06:47.877Zdaily1 -https://jan.ai/download2025-03-10T05:06:47.877Zdaily1 -https://jan.ai/integrations2025-03-10T05:06:47.877Zdaily1 -https://jan.ai/integrations/coding/continue-dev2025-03-10T05:06:47.877Zdaily1 -https://jan.ai/integrations/coding/tabby2025-03-10T05:06:47.877Zdaily1 -https://jan.ai/integrations/function-calling/interpreter2025-03-10T05:06:47.877Zdaily1 -https://jan.ai/integrations/messaging/llmcord2025-03-10T05:06:47.877Zdaily1 -https://jan.ai/integrations/workflow-automation/n8n2025-03-10T05:06:47.877Zdaily1 -https://jan.ai/post/benchmarking-nvidia-tensorrt-llm2025-03-10T05:06:47.877Zdaily1 -https://jan.ai/post/bitdefender2025-03-10T05:06:47.877Zdaily1 -https://jan.ai/post/data-is-moat2025-03-10T05:06:47.877Zdaily1 -https://jan.ai/post/deepseek-r1-locally2025-03-10T05:06:47.877Zdaily1 -https://jan.ai/post/offline-chatgpt-alternative2025-03-10T05:06:47.877Zdaily1 -https://jan.ai/post/rag-is-not-enough2025-03-10T05:06:47.877Zdaily1 -https://jan.ai/post/run-ai-models-locally2025-03-10T05:06:47.877Zdaily1 -https://jan.ai/privacy2025-03-10T05:06:47.877Zdaily1 -https://jan.ai/support2025-03-10T05:06:47.877Zdaily1 +https://jan.ai2025-09-24T03:40:05.491Zdaily1 +https://jan.ai/api-reference2025-09-24T03:40:05.492Zdaily1 +https://jan.ai/api-reference/api-reference2025-09-24T03:40:05.492Zdaily1 +https://jan.ai/api-reference/architecture2025-09-24T03:40:05.492Zdaily1 +https://jan.ai/api-reference/configuration2025-09-24T03:40:05.492Zdaily1 +https://jan.ai/api-reference/development2025-09-24T03:40:05.492Zdaily1 +https://jan.ai/api-reference/installation2025-09-24T03:40:05.492Zdaily1 +https://jan.ai/blog2025-09-24T03:40:05.492Zdaily1 +https://jan.ai/changelog2025-09-24T03:40:05.492Zdaily1 +https://jan.ai/changelog/2023-12-21-faster-inference-across-platform2025-09-24T03:40:05.492Zdaily1 +https://jan.ai/changelog/2024-01-16-settings-options-right-panel2025-09-24T03:40:05.492Zdaily1 +https://jan.ai/changelog/2024-01-29-local-api-server2025-09-24T03:40:05.492Zdaily1 +https://jan.ai/changelog/2024-02-05-jan-data-folder2025-09-24T03:40:05.492Zdaily1 +https://jan.ai/changelog/2024-02-10-jan-is-more-stable2025-09-24T03:40:05.492Zdaily1 +https://jan.ai/changelog/2024-02-26-home-servers-with-helm2025-09-24T03:40:05.492Zdaily1 +https://jan.ai/changelog/2024-03-06-ui-revamp-settings2025-09-24T03:40:05.492Zdaily1 +https://jan.ai/changelog/2024-03-11-import-models2025-09-24T03:40:05.492Zdaily1 +https://jan.ai/changelog/2024-03-19-nitro-tensorrt-llm-extension2025-09-24T03:40:05.492Zdaily1 +https://jan.ai/changelog/2024-04-02-groq-api-integration2025-09-24T03:40:05.492Zdaily1 +https://jan.ai/changelog/2024-04-15-new-mistral-extension2025-09-24T03:40:05.492Zdaily1 +https://jan.ai/changelog/2024-04-25-llama3-command-r-hugginface2025-09-24T03:40:05.492Zdaily1 +https://jan.ai/changelog/2024-05-20-llamacpp-upgrade-new-remote-models2025-09-24T03:40:05.492Zdaily1 +https://jan.ai/changelog/2024-05-28-cohere-aya-23-8b-35b-phi-3-medium2025-09-24T03:40:05.492Zdaily1 +https://jan.ai/changelog/2024-06-21-nvidia-nim-support2025-09-24T03:40:05.492Zdaily1 +https://jan.ai/changelog/2024-07-15-claude-3-5-support2025-09-24T03:40:05.492Zdaily1 +https://jan.ai/changelog/2024-09-01-llama3-1-gemma2-support2025-09-24T03:40:05.492Zdaily1 +https://jan.ai/changelog/2024-09-17-improved-cpu-performance2025-09-24T03:40:05.492Zdaily1 +https://jan.ai/changelog/2024-10-24-jan-stable2025-09-24T03:40:05.492Zdaily1 +https://jan.ai/changelog/2024-11-22-jan-bugs2025-09-24T03:40:05.492Zdaily1 +https://jan.ai/changelog/2024-11.14-jan-supports-qwen-coder2025-09-24T03:40:05.492Zdaily1 +https://jan.ai/changelog/2024-12-03-jan-is-faster2025-09-24T03:40:05.492Zdaily1 +https://jan.ai/changelog/2024-12-05-jan-hot-fix-mac2025-09-24T03:40:05.492Zdaily1 +https://jan.ai/changelog/2024-12-30-jan-new-privacy2025-09-24T03:40:05.492Zdaily1 +https://jan.ai/changelog/2025-01-06-key-issues-resolved2025-09-24T03:40:05.492Zdaily1 +https://jan.ai/changelog/2025-01-23-deepseek-r1-jan2025-09-24T03:40:05.492Zdaily1 +https://jan.ai/changelog/2025-02-18-advanced-llama.cpp-settings2025-09-24T03:40:05.492Zdaily1 +https://jan.ai/changelog/2025-03-14-jan-security-patch2025-09-24T03:40:05.492Zdaily1 +https://jan.ai/changelog/2025-05-14-jan-qwen3-patch2025-09-24T03:40:05.492Zdaily1 +https://jan.ai/changelog/2025-06-19-jan-ui-revamp2025-09-24T03:40:05.492Zdaily1 +https://jan.ai/changelog/2025-06-26-jan-nano-mcp2025-09-24T03:40:05.492Zdaily1 +https://jan.ai/changelog/2025-07-17-responsive-ui2025-09-24T03:40:05.492Zdaily1 +https://jan.ai/changelog/2025-07-31-llamacpp-tutorials2025-09-24T03:40:05.492Zdaily1 +https://jan.ai/changelog/2025-08-07-gpt-oss2025-09-24T03:40:05.492Zdaily1 +https://jan.ai/changelog/2025-08-14-general-improvs2025-09-24T03:40:05.492Zdaily1 +https://jan.ai/changelog/2025-08-28-image-support2025-09-24T03:40:05.492Zdaily1 +https://jan.ai/changelog/2025-09-18-auto-optimize-vision-imports2025-09-24T03:40:05.492Zdaily1 +https://jan.ai/docs2025-09-24T03:40:05.492Zdaily1 +https://jan.ai/docs/desktop2025-09-24T03:40:05.492Zdaily1 +https://jan.ai/docs/desktop/api-server2025-09-24T03:40:05.492Zdaily1 +https://jan.ai/docs/desktop/assistants2025-09-24T03:40:05.492Zdaily1 +https://jan.ai/docs/desktop/data-folder2025-09-24T03:40:05.492Zdaily1 +https://jan.ai/docs/desktop/install/linux2025-09-24T03:40:05.492Zdaily1 +https://jan.ai/docs/desktop/install/mac2025-09-24T03:40:05.492Zdaily1 +https://jan.ai/docs/desktop/install/windows2025-09-24T03:40:05.492Zdaily1 +https://jan.ai/docs/desktop/jan-models/jan-nano-1282025-09-24T03:40:05.492Zdaily1 +https://jan.ai/docs/desktop/jan-models/jan-nano-322025-09-24T03:40:05.492Zdaily1 +https://jan.ai/docs/desktop/jan-models/jan-v12025-09-24T03:40:05.492Zdaily1 +https://jan.ai/docs/desktop/jan-models/lucy2025-09-24T03:40:05.492Zdaily1 +https://jan.ai/docs/desktop/llama-cpp2025-09-24T03:40:05.492Zdaily1 +https://jan.ai/docs/desktop/llama-cpp-server2025-09-24T03:40:05.492Zdaily1 +https://jan.ai/docs/desktop/manage-models2025-09-24T03:40:05.492Zdaily1 +https://jan.ai/docs/desktop/mcp2025-09-24T03:40:05.492Zdaily1 +https://jan.ai/docs/desktop/mcp-examples/browser/browserbase2025-09-24T03:40:05.492Zdaily1 +https://jan.ai/docs/desktop/mcp-examples/data-analysis/e2b2025-09-24T03:40:05.492Zdaily1 +https://jan.ai/docs/desktop/mcp-examples/data-analysis/jupyter2025-09-24T03:40:05.492Zdaily1 +https://jan.ai/docs/desktop/mcp-examples/deepresearch/octagon2025-09-24T03:40:05.492Zdaily1 +https://jan.ai/docs/desktop/mcp-examples/design/canva2025-09-24T03:40:05.492Zdaily1 +https://jan.ai/docs/desktop/mcp-examples/productivity/linear2025-09-24T03:40:05.492Zdaily1 +https://jan.ai/docs/desktop/mcp-examples/productivity/todoist2025-09-24T03:40:05.492Zdaily1 +https://jan.ai/docs/desktop/mcp-examples/search/exa2025-09-24T03:40:05.492Zdaily1 +https://jan.ai/docs/desktop/mcp-examples/search/serper2025-09-24T03:40:05.492Zdaily1 +https://jan.ai/docs/desktop/model-parameters2025-09-24T03:40:05.492Zdaily1 +https://jan.ai/docs/desktop/privacy2025-09-24T03:40:05.492Zdaily1 +https://jan.ai/docs/desktop/privacy-policy2025-09-24T03:40:05.492Zdaily1 +https://jan.ai/docs/desktop/quickstart2025-09-24T03:40:05.492Zdaily1 +https://jan.ai/docs/desktop/remote-models/anthropic2025-09-24T03:40:05.492Zdaily1 +https://jan.ai/docs/desktop/remote-models/cohere2025-09-24T03:40:05.492Zdaily1 +https://jan.ai/docs/desktop/remote-models/google2025-09-24T03:40:05.492Zdaily1 +https://jan.ai/docs/desktop/remote-models/groq2025-09-24T03:40:05.492Zdaily1 +https://jan.ai/docs/desktop/remote-models/huggingface2025-09-24T03:40:05.492Zdaily1 +https://jan.ai/docs/desktop/remote-models/mistralai2025-09-24T03:40:05.492Zdaily1 +https://jan.ai/docs/desktop/remote-models/openai2025-09-24T03:40:05.492Zdaily1 +https://jan.ai/docs/desktop/remote-models/openrouter2025-09-24T03:40:05.492Zdaily1 +https://jan.ai/docs/desktop/server-examples/continue-dev2025-09-24T03:40:05.492Zdaily1 +https://jan.ai/docs/desktop/server-examples/llmcord2025-09-24T03:40:05.492Zdaily1 +https://jan.ai/docs/desktop/server-examples/n8n2025-09-24T03:40:05.492Zdaily1 +https://jan.ai/docs/desktop/server-examples/tabby2025-09-24T03:40:05.492Zdaily1 +https://jan.ai/docs/desktop/server-settings2025-09-24T03:40:05.492Zdaily1 +https://jan.ai/docs/desktop/server-troubleshooting2025-09-24T03:40:05.492Zdaily1 +https://jan.ai/docs/desktop/settings2025-09-24T03:40:05.492Zdaily1 +https://jan.ai/docs/desktop/troubleshooting2025-09-24T03:40:05.492Zdaily1 +https://jan.ai/docs/server2025-09-24T03:40:05.492Zdaily1 +https://jan.ai/docs/server/api-reference2025-09-24T03:40:05.492Zdaily1 +https://jan.ai/docs/server/api-reference-administration2025-09-24T03:40:05.492Zdaily1 +https://jan.ai/docs/server/api-reference-authentication2025-09-24T03:40:05.492Zdaily1 +https://jan.ai/docs/server/api-reference-chat2025-09-24T03:40:05.492Zdaily1 +https://jan.ai/docs/server/api-reference-chat-conversations2025-09-24T03:40:05.492Zdaily1 +https://jan.ai/docs/server/api-reference-conversations2025-09-24T03:40:05.492Zdaily1 +https://jan.ai/docs/server/api-reference-jan-responses2025-09-24T03:40:05.492Zdaily1 +https://jan.ai/docs/server/api-reference-jan-server2025-09-24T03:40:05.492Zdaily1 +https://jan.ai/docs/server/architecture2025-09-24T03:40:05.492Zdaily1 +https://jan.ai/docs/server/configuration2025-09-24T03:40:05.492Zdaily1 +https://jan.ai/docs/server/development2025-09-24T03:40:05.492Zdaily1 +https://jan.ai/docs/server/installation2025-09-24T03:40:05.492Zdaily1 +https://jan.ai/docs/server/overview2025-09-24T03:40:05.492Zdaily1 +https://jan.ai/download2025-09-24T03:40:05.492Zdaily1 +https://jan.ai/handbook2025-09-24T03:40:05.492Zdaily1 +https://jan.ai/handbook/betting-on-open-source2025-09-24T03:40:05.492Zdaily1 +https://jan.ai/handbook/open-superintelligence2025-09-24T03:40:05.492Zdaily1 +https://jan.ai/post/benchmarking-nvidia-tensorrt-llm2025-09-24T03:40:05.492Zdaily1 +https://jan.ai/post/bitdefender2025-09-24T03:40:05.492Zdaily1 +https://jan.ai/post/data-is-moat2025-09-24T03:40:05.492Zdaily1 +https://jan.ai/post/deepresearch2025-09-24T03:40:05.492Zdaily1 +https://jan.ai/post/deepseek-r1-locally2025-09-24T03:40:05.492Zdaily1 +https://jan.ai/post/jan-v1-for-research2025-09-24T03:40:05.492Zdaily1 +https://jan.ai/post/offline-chatgpt-alternative2025-09-24T03:40:05.492Zdaily1 +https://jan.ai/post/qwen3-settings2025-09-24T03:40:05.492Zdaily1 +https://jan.ai/post/rag-is-not-enough2025-09-24T03:40:05.492Zdaily1 +https://jan.ai/post/run-ai-models-locally2025-09-24T03:40:05.492Zdaily1 +https://jan.ai/post/run-gpt-oss-locally2025-09-24T03:40:05.492Zdaily1 +https://jan.ai/privacy2025-09-24T03:40:05.492Zdaily1 +https://jan.ai/support2025-09-24T03:40:05.492Zdaily1 \ No newline at end of file diff --git a/docs/src/components/FooterMenu/index.tsx b/docs/src/components/FooterMenu/index.tsx index 1609430bf..68e1e6e78 100644 --- a/docs/src/components/FooterMenu/index.tsx +++ b/docs/src/components/FooterMenu/index.tsx @@ -77,9 +77,9 @@ export default function Footer() { return (