Merge pull request #3822 from janhq/dev

release: Jan Release Cut v0.5.7
This commit is contained in:
Louis 2024-10-23 14:26:48 +07:00 committed by GitHub
commit 33eda227a5
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
508 changed files with 19544 additions and 333 deletions

47
.github/scripts/rename-app-beta.sh vendored Normal file
View File

@ -0,0 +1,47 @@
#!/bin/bash
# Check if the correct number of arguments is provided
if [ "$#" -ne 1 ]; then
echo "Usage: $0 <path_to_json_input_file>"
exit 1
fi
INPUT_JSON_FILE="$1"
# Check if the input file exists
if [ ! -f "$INPUT_JSON_FILE" ]; then
echo "Input file not found: $INPUT_JSON_FILE"
exit 1
fi
# Use jq to transform the content
jq '
.name = "jan-beta" |
.productName = "Jan-beta" |
.build.appId = "jan-beta.ai.app" |
.build.productName = "Jan-beta" |
.build.appId = "jan-beta.ai.app" |
.build.protocols[0].name = "Jan-beta" |
.build.protocols[0].schemes = ["jan-beta"] |
.build.artifactName = "jan-beta-${os}-${arch}-${version}.${ext}" |
.build.publish[0].channel = "beta"
' "$INPUT_JSON_FILE" > ./package.json.tmp
cat ./package.json.tmp
rm $INPUT_JSON_FILE
mv ./package.json.tmp $INPUT_JSON_FILE
# Update the layout file
LAYOUT_FILE_PATH="web/app/layout.tsx"
if [ ! -f "$LAYOUT_FILE_PATH" ]; then
echo "File does not exist: $LAYOUT_FILE_PATH"
exit 1
fi
# Perform the replacements
sed -i -e "s#Jan#Jan-beta#g" "$LAYOUT_FILE_PATH"
# Notify completion
echo "File has been updated: $LAYOUT_FILE_PATH"

View File

@ -0,0 +1,16 @@
#!/bin/bash
# File path to be modified
FILE_PATH="electron/scripts/uninstaller.nsh"
# Check if the file exists
if [ ! -f "$FILE_PATH" ]; then
echo "File does not exist: $FILE_PATH"
exit 1
fi
# Perform the replacements
sed -i -e "s#jan#jan-beta#g" "$FILE_PATH"
# Notify completion
echo "File has been updated: $FILE_PATH"

View File

@ -0,0 +1,16 @@
#!/bin/bash
# File path to be modified
FILE_PATH="$1"
# Check if the file exists
if [ ! -f "$FILE_PATH" ]; then
echo "File does not exist: $FILE_PATH"
exit 1
fi
# Perform the replacements
sed -i -e 's/yarn workspace jan/yarn workspace jan-beta/g' "$FILE_PATH"
# Notify completion
echo "File has been updated: $FILE_PATH"

View File

@ -1,25 +0,0 @@
name: Trigger Docs Workflow
on:
release:
types:
- published
workflow_dispatch:
push:
branches:
- ci/auto-trigger-jan-docs-for-new-release
jobs:
trigger_docs_workflow:
runs-on: ubuntu-latest
steps:
- name: Trigger external workflow using GitHub API
env:
GITHUB_TOKEN: ${{ secrets.PAT_SERVICE_ACCOUNT }}
run: |
curl -X POST \
-H "Accept: application/vnd.github.v3+json" \
-H "Authorization: token $GITHUB_TOKEN" \
https://api.github.com/repos/janhq/docs/actions/workflows/jan-docs.yml/dispatches \
-d '{"ref":"main"}'

View File

@ -0,0 +1,52 @@
name: "Clean old cloudflare pages preview urls and nightly build"
on:
schedule:
- cron: "0 0 * * *" # every day at 00:00
workflow_dispatch:
jobs:
clean-cloudflare-pages-preview-urls:
strategy:
matrix:
project: ["nitro", "docs"]
runs-on: ubuntu-latest
steps:
- uses: actions/setup-python@v4
with:
python-version: '3.x'
- name: install requests
run: |
python3 -m pip install requests pytz tqdm
- name: Python Inline script
uses: jannekem/run-python-script-action@v1
with:
script: |
import requests
from datetime import datetime, UTC
from pytz import timezone
from tqdm import tqdm
# Configuration
endpoint = "https://api.cloudflare.com/client/v4/accounts/${{ secrets.CLOUDFLARE_ACCOUNT_ID }}/pages/projects/${{ matrix.project }}/deployments"
expiration_days = 3
headers = {
"Content-Type": "application/json;charset=UTF-8",
"Authorization": "Bearer ${{ secrets.CLOUDFLARE_API_TOKEN }}"
}
utc_tz = timezone('UTC')
# Fetch the list of deployments
response = requests.get(endpoint, headers=headers)
deployments = response.json()
for deployment in tqdm(deployments['result']):
# Calculate the age of the deployment
created_on = datetime.strptime(deployment['created_on'], "%Y-%m-%dT%H:%M:%S.%fZ").replace(tzinfo=utc_tz)
if (datetime.now(UTC) - created_on).days > expiration_days:
# Delete the deployment
delete_response = requests.delete(f"{endpoint}/{deployment['id']}", headers=headers)
if delete_response.status_code == 200:
print(f"Deleted deployment: {deployment['id']}")
else:
print(f"Failed to delete deployment: {deployment['id']}")

View File

@ -0,0 +1,63 @@
name: Deploy Docs on new release
on:
release:
types:
- published
- edited
- released
jobs:
deploy:
name: Deploy to CloudFlare Pages
env:
CLOUDFLARE_PROJECT_NAME: docs
runs-on: ubuntu-latest
permissions:
contents: write
deployments: write
pull-requests: write
steps:
- uses: actions/checkout@v4
with:
ref: dev
- uses: actions/setup-node@v3
with:
node-version: 18
- name: Install jq
uses: dcarbone/install-jq-action@v2.0.1
- name: Fill env vars
working-directory: docs
run: |
env_example_file=".env.example"
touch .env
while IFS= read -r line || [[ -n "$line" ]]; do
if [[ "$line" == *"="* ]]; then
var_name=$(echo $line | cut -d '=' -f 1)
echo $var_name
var_value="$(jq -r --arg key "$var_name" '.[$key]' <<< "$SECRETS")"
echo "$var_name=$var_value" >> .env
fi
done < "$env_example_file"
env:
SECRETS: '${{ toJson(secrets) }}'
- name: Install dependencies
working-directory: docs
run: yarn install
- name: Build website
working-directory: docs
run: export NODE_ENV=production && yarn build && cp _redirects out/_redirects
- name: Publish to Cloudflare Pages Production
uses: cloudflare/pages-action@v1
with:
apiToken: ${{ secrets.CLOUDFLARE_API_TOKEN }}
accountId: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }}
projectName: ${{ env.CLOUDFLARE_PROJECT_NAME }}
directory: ./docs/out
branch: dev
# Optional: Enable this if you want to have GitHub Deployments triggered
gitHubToken: ${{ secrets.GITHUB_TOKEN }}

88
.github/workflows/jan-docs.yml vendored Normal file
View File

@ -0,0 +1,88 @@
name: Jan Docs
on:
push:
branches:
- dev
paths:
- 'docs/**'
- '.github/workflows/jan-docs.yml'
pull_request:
paths:
- 'docs/**'
- '.github/workflows/jan-docs.yml'
# Review gh actions docs if you want to further define triggers, paths, etc
# https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#on
workflow_dispatch:
jobs:
deploy:
name: Deploy to CloudFlare Pages
env:
CLOUDFLARE_PROJECT_NAME: docs
runs-on: ubuntu-latest
permissions:
contents: write
deployments: write
pull-requests: write
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
with:
node-version: 18
- name: Install jq
uses: dcarbone/install-jq-action@v2.0.1
- name: Fill env vars
working-directory: docs
run: |
env_example_file=".env.example"
touch .env
while IFS= read -r line || [[ -n "$line" ]]; do
if [[ "$line" == *"="* ]]; then
var_name=$(echo $line | cut -d '=' -f 1)
echo $var_name
var_value="$(jq -r --arg key "$var_name" '.[$key]' <<< "$SECRETS")"
echo "$var_name=$var_value" >> .env
fi
done < "$env_example_file"
env:
SECRETS: '${{ toJson(secrets) }}'
- name: Install dependencies
working-directory: docs
run: yarn install
- name: Build website
working-directory: docs
run: export NODE_ENV=production && yarn build && cp _redirects out/_redirects
- name: Publish to Cloudflare Pages PR Preview and Staging
if: github.event_name == 'pull_request'
uses: cloudflare/pages-action@v1
with:
apiToken: ${{ secrets.CLOUDFLARE_API_TOKEN }}
accountId: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }}
projectName: ${{ env.CLOUDFLARE_PROJECT_NAME }}
directory: ./docs/out
# Optional: Enable this if you want to have GitHub Deployments triggered
gitHubToken: ${{ secrets.GITHUB_TOKEN }}
id: deployCloudflarePages
- uses: mshick/add-pr-comment@v2
if: github.event_name == 'pull_request'
with:
message: |
Preview URL: ${{ steps.deployCloudflarePages.outputs.url }}
- name: Publish to Cloudflare Pages Production
if: (github.event_name == 'push' && github.ref == 'refs/heads/dev') || (github.event_name == 'workflow_dispatch' && github.ref == 'refs/heads/dev')
uses: cloudflare/pages-action@v1
with:
apiToken: ${{ secrets.CLOUDFLARE_API_TOKEN }}
accountId: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }}
projectName: ${{ env.CLOUDFLARE_PROJECT_NAME }}
directory: ./docs/out
branch: dev
# Optional: Enable this if you want to have GitHub Deployments triggered
gitHubToken: ${{ secrets.GITHUB_TOKEN }}

View File

@ -0,0 +1,136 @@
name: Electron Builder - Beta Build
on:
push:
tags: ["v[0-9]+.[0-9]+.[0-9]+-rc[0-9]+-beta"]
jobs:
# Job create Update app version based on latest release tag with build number and save to output
get-update-version:
uses: ./.github/workflows/template-get-update-version.yml
create-draft-release:
runs-on: ubuntu-latest
if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/')
outputs:
upload_url: ${{ steps.create_release.outputs.upload_url }}
version: ${{ steps.get_version.outputs.version }}
permissions:
contents: write
steps:
- name: Extract tag name without v prefix
id: get_version
run: echo "VERSION=${GITHUB_REF#refs/tags/v}" >> $GITHUB_ENV && echo "::set-output name=version::${GITHUB_REF#refs/tags/v}"
env:
GITHUB_REF: ${{ github.ref }}
- name: Create Draft Release
id: create_release
uses: softprops/action-gh-release@v2
with:
tag_name: ${{ github.ref_name }}
token: ${{ secrets.GITHUB_TOKEN }}
name: "${{ env.VERSION }}"
draft: true
prerelease: false
generate_release_notes: true
build-macos-x64:
uses: ./.github/workflows/template-build-macos-x64.yml
secrets: inherit
needs: [get-update-version]
with:
ref: ${{ github.ref }}
public_provider: github
new_version: ${{ needs.get-update-version.outputs.new_version }}
beta: true
build-macos-arm64:
uses: ./.github/workflows/template-build-macos-arm64.yml
secrets: inherit
needs: [get-update-version]
with:
ref: ${{ github.ref }}
public_provider: github
new_version: ${{ needs.get-update-version.outputs.new_version }}
beta: true
build-windows-x64:
uses: ./.github/workflows/template-build-windows-x64.yml
secrets: inherit
needs: [get-update-version]
with:
ref: ${{ github.ref }}
public_provider: github
new_version: ${{ needs.get-update-version.outputs.new_version }}
beta: true
build-linux-x64:
uses: ./.github/workflows/template-build-linux-x64.yml
secrets: inherit
needs: [get-update-version]
with:
ref: ${{ github.ref }}
public_provider: github
new_version: ${{ needs.get-update-version.outputs.new_version }}
beta: true
combine-beta-mac-yml:
needs: [build-macos-x64, build-macos-arm64, create-draft-release, build-windows-x64, build-linux-x64]
runs-on: ubuntu-latest
permissions:
contents: write
steps:
- name: Getting the repo
uses: actions/checkout@v3
- name: Download mac-x64 artifacts
uses: actions/download-artifact@v4
with:
name: beta-mac-x64
path: ./beta-mac-x64
- name: Download mac-arm artifacts
uses: actions/download-artifact@v4
with:
name: beta-mac-arm64
path: ./beta-mac-arm64
- name: 'Merge beta-mac.yml'
# unfortunately electron-builder doesn't understand that we have two different releases for mac-x64 and mac-arm, so we need to manually merge the latest files
# see https://github.com/electron-userland/electron-builder/issues/5592
run: |
ls -la .
ls -la ./beta-mac-x64
ls -la ./beta-mac-arm64
ls -la ./electron
cp ./electron/merge-latest-ymls.js /tmp/merge-beta-ymls.js
npm install js-yaml --prefix /tmp
node /tmp/merge-beta-ymls.js ./beta-mac-x64/beta-mac.yml ./beta-mac-arm64/beta-mac.yml ./beta-mac.yml
cat ./beta-mac.yml
- name: Yet Another Upload Release Asset Action
uses: shogo82148/actions-upload-release-asset@v1.7.2
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ needs.create-draft-release.outputs.upload_url }}
asset_path: ./beta-mac.yml
asset_name: beta-mac.yml
asset_content_type: text/yaml
overwrite: true
- name: Upload beta-mac.yml
run: |
aws s3 cp ./beta-mac.yml "s3://${{ secrets.DELTA_AWS_S3_BUCKET_NAME }}/temp-beta/beta-mac.yml"
# sync temp-beta to beta by copy files that are different or new
aws s3 sync "s3://${{ secrets.DELTA_AWS_S3_BUCKET_NAME }}/temp-beta/" "s3://${{ secrets.DELTA_AWS_S3_BUCKET_NAME }}/beta/"
env:
AWS_ACCESS_KEY_ID: ${{ secrets.DELTA_AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.DELTA_AWS_SECRET_ACCESS_KEY }}
AWS_DEFAULT_REGION: ${{ secrets.DELTA_AWS_REGION }}
AWS_EC2_METADATA_DISABLED: "true"
- name: set release to prerelease
run: |
gh release edit v${{ needs.create-draft-release.outputs.version }} --draft=false --prerelease
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

View File

@ -80,7 +80,7 @@ jobs:
new_version: ${{ needs.get-update-version.outputs.new_version }}
combine-latest-mac-yml:
needs: [set-public-provider, build-macos-x64, build-macos-arm64]
needs: [set-public-provider, build-macos-x64, build-macos-arm64, build-windows-x64, build-linux-x64]
runs-on: ubuntu-latest
steps:
- name: Getting the repo
@ -114,7 +114,8 @@ jobs:
- name: Upload latest-mac.yml
if: ${{ needs.set-public-provider.outputs.public_provider == 'aws-s3' }}
run: |
aws s3 cp ./latest-mac.yml "s3://${{ secrets.DELTA_AWS_S3_BUCKET_NAME }}/latest/latest-mac.yml"
aws s3 cp ./latest-mac.yml "s3://${{ secrets.DELTA_AWS_S3_BUCKET_NAME }}/temp-latest/latest-mac.yml"
aws s3 sync s3://${{ secrets.DELTA_AWS_S3_BUCKET_NAME }}/temp-latest/ s3://${{ secrets.DELTA_AWS_S3_BUCKET_NAME }}/latest/
env:
AWS_ACCESS_KEY_ID: ${{ secrets.DELTA_AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.DELTA_AWS_SECRET_ACCESS_KEY }}

View File

@ -105,9 +105,9 @@ jobs:
make test
env:
CSC_IDENTITY_AUTO_DISCOVERY: 'false'
TURBO_API: '${{ secrets.TURBO_API }}'
TURBO_TEAM: 'macos'
TURBO_TOKEN: '${{ secrets.TURBO_TOKEN }}'
# TURBO_API: '${{ secrets.TURBO_API }}'
# TURBO_TEAM: 'macos'
# TURBO_TOKEN: '${{ secrets.TURBO_TOKEN }}'
test-on-macos-pr-target:
if: github.event_name == 'pull_request' && github.event.pull_request.head.repo.full_name != github.repository
@ -185,10 +185,10 @@ jobs:
npm config set registry ${{ secrets.NPM_PROXY }} --global
yarn config set registry ${{ secrets.NPM_PROXY }} --global
make test
env:
TURBO_API: '${{ secrets.TURBO_API }}'
TURBO_TEAM: 'windows'
TURBO_TOKEN: '${{ secrets.TURBO_TOKEN }}'
# env:
# TURBO_API: '${{ secrets.TURBO_API }}'
# TURBO_TEAM: 'windows'
# TURBO_TOKEN: '${{ secrets.TURBO_TOKEN }}'
test-on-windows-pr:
if: (github.event_name == 'pull_request' && github.event.pull_request.head.repo.full_name == github.repository)
runs-on: windows-desktop-default-windows-security
@ -233,10 +233,10 @@ jobs:
npm config set registry ${{ secrets.NPM_PROXY }} --global
yarn config set registry ${{ secrets.NPM_PROXY }} --global
make test
env:
TURBO_API: '${{ secrets.TURBO_API }}'
TURBO_TEAM: 'windows'
TURBO_TOKEN: '${{ secrets.TURBO_TOKEN }}'
# env:
# TURBO_API: '${{ secrets.TURBO_API }}'
# TURBO_TEAM: 'windows'
# TURBO_TOKEN: '${{ secrets.TURBO_TOKEN }}'
test-on-windows-pr-target:
if: github.event_name == 'pull_request' && github.event.pull_request.head.repo.full_name != github.repository
@ -314,10 +314,10 @@ jobs:
npm config set registry ${{ secrets.NPM_PROXY }} --global
yarn config set registry ${{ secrets.NPM_PROXY }} --global
make test
env:
TURBO_API: '${{ secrets.TURBO_API }}'
TURBO_TEAM: 'linux'
TURBO_TOKEN: '${{ secrets.TURBO_TOKEN }}'
# env:
# TURBO_API: '${{ secrets.TURBO_API }}'
# TURBO_TEAM: 'linux'
# TURBO_TOKEN: '${{ secrets.TURBO_TOKEN }}'
coverage-check:
runs-on: [self-hosted, Linux, ubuntu-desktop]
@ -354,10 +354,10 @@ jobs:
make lint
yarn build:test
yarn test:coverage
env:
TURBO_API: '${{ secrets.TURBO_API }}'
TURBO_TEAM: 'linux'
TURBO_TOKEN: '${{ secrets.TURBO_TOKEN }}'
# env:
# TURBO_API: '${{ secrets.TURBO_API }}'
# TURBO_TEAM: 'linux'
# TURBO_TOKEN: '${{ secrets.TURBO_TOKEN }}'
- name: Generate Code Coverage report
id: code-coverage

View File

@ -19,6 +19,10 @@ on:
required: false
type: string
default: '/latest/'
beta:
required: false
type: boolean
default: false
secrets:
DELTA_AWS_S3_BUCKET_NAME:
required: false
@ -56,17 +60,29 @@ jobs:
mv /tmp/package.json electron/package.json
jq --arg version "${{ inputs.new_version }}" '.version = $version' web/package.json > /tmp/package.json
mv /tmp/package.json web/package.json
jq '.build.publish = [{"provider": "generic", "url": "${{ secrets.CLOUDFLARE_R2_PUBLIC_URL }}", "channel": "latest"}, {"provider": "s3", "acl": null, "bucket": "${{ secrets.DELTA_AWS_S3_BUCKET_NAME }}", "region": "${{ secrets.DELTA_AWS_REGION}}", "path": "${{ inputs.aws_s3_prefix }}", "channel": "latest"}]' electron/package.json > /tmp/package.json
jq '.build.publish = [{"provider": "generic", "url": "${{ secrets.CLOUDFLARE_R2_PUBLIC_URL }}", "channel": "latest"}, {"provider": "s3", "acl": null, "bucket": "${{ secrets.DELTA_AWS_S3_BUCKET_NAME }}", "region": "${{ secrets.DELTA_AWS_REGION}}", "path": "temp-latest", "channel": "latest"}]' electron/package.json > /tmp/package.json
mv /tmp/package.json electron/package.json
cat electron/package.json
- name: Change App Name for beta version
if: inputs.beta == true
shell: bash
run: |
chmod +x .github/scripts/rename-app-beta.sh
.github/scripts/rename-app-beta.sh ./electron/package.json
chmod +x .github/scripts/rename-workspace-beta.sh
.github/scripts/rename-workspace-beta.sh ./package.json
echo "------------------------"
cat ./electron/package.json
echo "------------------------"
cat ./package.json
jq '.build.publish = [{"provider": "generic", "url": "https://delta.jan.ai/beta", "channel": "beta"}, {"provider": "github", "owner": "janhq", "repo": "jan", "channel": "beta"}, {"provider": "s3", "acl": null, "bucket": "${{ secrets.DELTA_AWS_S3_BUCKET_NAME }}", "region": "${{ secrets.DELTA_AWS_REGION}}", "path": "temp-beta", "channel": "beta"}]' electron/package.json > /tmp/package.json
mv /tmp/package.json electron/package.json
cat electron/package.json
- name: Update app version base on tag
if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/') && inputs.public_provider == 'github'
run: |
if [[ ! "${VERSION_TAG}" =~ ^v[0-9]+\.[0-9]+\.[0-9]+$ ]]; then
echo "Error: Tag is not valid!"
exit 1
fi
jq --arg version "${VERSION_TAG#v}" '.version = $version' electron/package.json > /tmp/package.json
mv /tmp/package.json electron/package.json
jq --arg version "${VERSION_TAG#v}" '.version = $version' web/package.json > /tmp/package.json
@ -92,7 +108,7 @@ jobs:
AWS_MAX_ATTEMPTS: "5"
- name: Build and publish app to github
if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/') && inputs.public_provider == 'github'
if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/') && inputs.public_provider == 'github' && inputs.beta == false
run: |
make build-and-publish
env:
@ -100,6 +116,17 @@ jobs:
ANALYTICS_ID: ${{ secrets.JAN_APP_UMAMI_PROJECT_API_KEY }}
ANALYTICS_HOST: ${{ secrets.JAN_APP_UMAMI_URL }}
- name: Build and publish app to github
if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/') && inputs.public_provider == 'github' && inputs.beta == true
run: |
make build-and-publish
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
AWS_ACCESS_KEY_ID: ${{ secrets.DELTA_AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.DELTA_AWS_SECRET_ACCESS_KEY }}
AWS_EC2_METADATA_DISABLED: "true"
AWS_MAX_ATTEMPTS: "5"
- name: Upload Artifact .deb file
if: inputs.public_provider != 'github'
uses: actions/upload-artifact@v4

View File

@ -19,6 +19,10 @@ on:
required: false
type: string
default: '/latest/'
beta:
required: false
type: boolean
default: false
secrets:
DELTA_AWS_S3_BUCKET_NAME:
required: false
@ -68,7 +72,7 @@ jobs:
jq --arg version "${{ inputs.new_version }}" '.version = $version' web/package.json > /tmp/package.json
mv /tmp/package.json web/package.json
jq '.build.publish = [{"provider": "generic", "url": "${{ secrets.CLOUDFLARE_R2_PUBLIC_URL }}", "channel": "latest"}, {"provider": "s3", "acl": null, "bucket": "${{ secrets.DELTA_AWS_S3_BUCKET_NAME }}", "region": "${{ secrets.DELTA_AWS_REGION}}", "path": "${{ inputs.aws_s3_prefix }}", "channel": "latest"}]' electron/package.json > /tmp/package.json
jq '.build.publish = [{"provider": "generic", "url": "${{ secrets.CLOUDFLARE_R2_PUBLIC_URL }}", "channel": "latest"}, {"provider": "s3", "acl": null, "bucket": "${{ secrets.DELTA_AWS_S3_BUCKET_NAME }}", "region": "${{ secrets.DELTA_AWS_REGION}}", "path": "temp-latest", "channel": "latest"}]' electron/package.json > /tmp/package.json
mv /tmp/package.json electron/package.json
jq --arg teamid "${{ secrets.APPLE_TEAM_ID }}" '.build.mac.notarize.teamId = $teamid' electron/package.json > /tmp/package.json
@ -76,13 +80,25 @@ jobs:
cat electron/package.json
- name: Change App Name for beta version
if: inputs.beta == true
shell: bash
run: |
chmod +x .github/scripts/rename-app-beta.sh
.github/scripts/rename-app-beta.sh ./electron/package.json
chmod +x .github/scripts/rename-workspace-beta.sh
.github/scripts/rename-workspace-beta.sh ./package.json
echo "------------------------"
cat ./electron/package.json
echo "------------------------"
cat ./package.json
jq '.build.publish = [{"provider": "generic", "url": "https://delta.jan.ai/beta", "channel": "beta"}, {"provider": "github", "owner": "janhq", "repo": "jan", "channel": "beta"}, {"provider": "s3", "acl": null, "bucket": "${{ secrets.DELTA_AWS_S3_BUCKET_NAME }}", "region": "${{ secrets.DELTA_AWS_REGION}}", "path": "temp-beta", "channel": "beta"}]' electron/package.json > /tmp/package.json
mv /tmp/package.json electron/package.json
cat electron/package.json
- name: Update app version base on tag
if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/') && inputs.public_provider == 'github'
run: |
if [[ ! "${VERSION_TAG}" =~ ^v[0-9]+\.[0-9]+\.[0-9]+$ ]]; then
echo "Error: Tag is not valid!"
exit 1
fi
jq --arg version "${VERSION_TAG#v}" '.version = $version' electron/package.json > /tmp/package.json
mv /tmp/package.json electron/package.json
jq --arg version "${VERSION_TAG#v}" '.version = $version' web/package.json > /tmp/package.json
@ -131,7 +147,7 @@ jobs:
AWS_MAX_ATTEMPTS: "5"
- name: Build and publish app to github
if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/') && inputs.public_provider == 'github'
if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/') && inputs.public_provider == 'github' && inputs.beta == false
run: |
make build-and-publish
env:
@ -146,6 +162,25 @@ jobs:
ANALYTICS_ID: ${{ secrets.JAN_APP_UMAMI_PROJECT_API_KEY }}
ANALYTICS_HOST: ${{ secrets.JAN_APP_UMAMI_URL }}
- name: Build and publish app to github
if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/') && inputs.public_provider == 'github' && inputs.beta == true
run: |
make build-and-publish
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
CSC_LINK: "/tmp/codesign.p12"
CSC_KEY_PASSWORD: ${{ secrets.CODE_SIGN_P12_PASSWORD }}
CSC_IDENTITY_AUTO_DISCOVERY: "true"
APPLE_ID: ${{ secrets.APPLE_ID }}
APPLE_APP_SPECIFIC_PASSWORD: ${{ secrets.APPLE_APP_SPECIFIC_PASSWORD }}
APP_PATH: "."
DEVELOPER_ID: ${{ secrets.DEVELOPER_ID }}
AWS_ACCESS_KEY_ID: ${{ secrets.DELTA_AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.DELTA_AWS_SECRET_ACCESS_KEY }}
AWS_DEFAULT_REGION: auto
AWS_EC2_METADATA_DISABLED: "true"
AWS_MAX_ATTEMPTS: "5"
- name: Upload Artifact
if: inputs.public_provider != 'github'
uses: actions/upload-artifact@v4
@ -154,7 +189,15 @@ jobs:
path: ./electron/dist/jan-mac-arm64-${{ inputs.new_version }}.dmg
- name: Upload Artifact
if: inputs.beta == false
uses: actions/upload-artifact@v4
with:
name: latest-mac-arm64
path: ./electron/dist/latest-mac.yml
path: ./electron/dist/latest-mac.yml
- name: Upload Artifact
if: inputs.beta == true
uses: actions/upload-artifact@v4
with:
name: beta-mac-arm64
path: ./electron/dist/beta-mac.yml

View File

@ -19,6 +19,10 @@ on:
required: false
type: string
default: '/latest/'
beta:
required: false
type: boolean
default: false
secrets:
DELTA_AWS_S3_BUCKET_NAME:
required: false
@ -68,7 +72,7 @@ jobs:
jq --arg version "${{ inputs.new_version }}" '.version = $version' web/package.json > /tmp/package.json
mv /tmp/package.json web/package.json
jq '.build.publish = [{"provider": "generic", "url": "${{ secrets.CLOUDFLARE_R2_PUBLIC_URL }}", "channel": "latest"}, {"provider": "s3", "acl": null, "bucket": "${{ secrets.DELTA_AWS_S3_BUCKET_NAME }}", "region": "${{ secrets.DELTA_AWS_REGION}}", "path": "${{ inputs.aws_s3_prefix }}", "channel": "latest"}]' electron/package.json > /tmp/package.json
jq '.build.publish = [{"provider": "generic", "url": "${{ secrets.CLOUDFLARE_R2_PUBLIC_URL }}", "channel": "latest"}, {"provider": "s3", "acl": null, "bucket": "${{ secrets.DELTA_AWS_S3_BUCKET_NAME }}", "region": "${{ secrets.DELTA_AWS_REGION}}", "path": "temp-latest", "channel": "latest"}]' electron/package.json > /tmp/package.json
mv /tmp/package.json electron/package.json
jq --arg teamid "${{ secrets.APPLE_TEAM_ID }}" '.build.mac.notarize.teamId = $teamid' electron/package.json > /tmp/package.json
@ -76,13 +80,25 @@ jobs:
cat electron/package.json
- name: Change App Name for beta version
if: inputs.beta == true
shell: bash
run: |
chmod +x .github/scripts/rename-app-beta.sh
.github/scripts/rename-app-beta.sh ./electron/package.json
chmod +x .github/scripts/rename-workspace-beta.sh
.github/scripts/rename-workspace-beta.sh ./package.json
echo "------------------------"
cat ./electron/package.json
echo "------------------------"
cat ./package.json
jq '.build.publish = [{"provider": "generic", "url": "https://delta.jan.ai/beta", "channel": "beta"}, {"provider": "github", "owner": "janhq", "repo": "jan", "channel": "beta"}, {"provider": "s3", "acl": null, "bucket": "${{ secrets.DELTA_AWS_S3_BUCKET_NAME }}", "region": "${{ secrets.DELTA_AWS_REGION}}", "path": "temp-beta", "channel": "beta"}]' electron/package.json > /tmp/package.json
mv /tmp/package.json electron/package.json
cat electron/package.json
- name: Update app version base on tag
if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/') && inputs.public_provider == 'github'
run: |
if [[ ! "${VERSION_TAG}" =~ ^v[0-9]+\.[0-9]+\.[0-9]+$ ]]; then
echo "Error: Tag is not valid!"
exit 1
fi
jq --arg version "${VERSION_TAG#v}" '.version = $version' electron/package.json > /tmp/package.json
mv /tmp/package.json electron/package.json
jq --arg version "${VERSION_TAG#v}" '.version = $version' web/package.json > /tmp/package.json
@ -131,7 +147,7 @@ jobs:
AWS_MAX_ATTEMPTS: "5"
- name: Build and publish app to github
if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/') && inputs.public_provider == 'github'
if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/') && inputs.public_provider == 'github' && inputs.beta == false
run: |
make build-and-publish
env:
@ -146,6 +162,25 @@ jobs:
ANALYTICS_ID: ${{ secrets.JAN_APP_UMAMI_PROJECT_API_KEY }}
ANALYTICS_HOST: ${{ secrets.JAN_APP_UMAMI_URL }}
- name: Build and publish app to github
if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/') && inputs.public_provider == 'github' && inputs.beta == true
run: |
make build-and-publish
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
CSC_LINK: "/tmp/codesign.p12"
CSC_KEY_PASSWORD: ${{ secrets.CODE_SIGN_P12_PASSWORD }}
CSC_IDENTITY_AUTO_DISCOVERY: "true"
APPLE_ID: ${{ secrets.APPLE_ID }}
APPLE_APP_SPECIFIC_PASSWORD: ${{ secrets.APPLE_APP_SPECIFIC_PASSWORD }}
APP_PATH: "."
DEVELOPER_ID: ${{ secrets.DEVELOPER_ID }}
AWS_ACCESS_KEY_ID: ${{ secrets.DELTA_AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.DELTA_AWS_SECRET_ACCESS_KEY }}
AWS_DEFAULT_REGION: auto
AWS_EC2_METADATA_DISABLED: "true"
AWS_MAX_ATTEMPTS: "5"
- name: Upload Artifact
if: inputs.public_provider != 'github'
uses: actions/upload-artifact@v4
@ -154,7 +189,15 @@ jobs:
path: ./electron/dist/jan-mac-x64-${{ inputs.new_version }}.dmg
- name: Upload Artifact
if: inputs.beta == false
uses: actions/upload-artifact@v4
with:
name: latest-mac-x64
path: ./electron/dist/latest-mac.yml
path: ./electron/dist/latest-mac.yml
- name: Upload Artifact
if: inputs.beta == true
uses: actions/upload-artifact@v4
with:
name: beta-mac-x64
path: ./electron/dist/beta-mac.yml

View File

@ -19,6 +19,10 @@ on:
required: false
type: string
default: '/latest/'
beta:
required: false
type: boolean
default: false
secrets:
DELTA_AWS_S3_BUCKET_NAME:
required: false
@ -69,21 +73,37 @@ jobs:
jq --arg version "${{ inputs.new_version }}" '.version = $version' web/package.json > /tmp/package.json
mv /tmp/package.json web/package.json
jq '.build.publish = [{"provider": "generic", "url": "${{ secrets.CLOUDFLARE_R2_PUBLIC_URL }}", "channel": "latest"}, {"provider": "s3", "acl": null, "bucket": "${{ secrets.DELTA_AWS_S3_BUCKET_NAME }}", "region": "${{ secrets.DELTA_AWS_REGION}}", "path": "${{ inputs.aws_s3_prefix }}", "channel": "latest"}]' electron/package.json > /tmp/package.json
jq '.build.publish = [{"provider": "generic", "url": "${{ secrets.CLOUDFLARE_R2_PUBLIC_URL }}", "channel": "latest"}, {"provider": "s3", "acl": null, "bucket": "${{ secrets.DELTA_AWS_S3_BUCKET_NAME }}", "region": "${{ secrets.DELTA_AWS_REGION}}", "path": "temp-latest", "channel": "latest"}]' electron/package.json > /tmp/package.json
mv /tmp/package.json electron/package.json
jq '.build.win.sign = "./sign.js"' electron/package.json > /tmp/package.json
mv /tmp/package.json electron/package.json
cat electron/package.json
- name: Change App Name for beta version
if: inputs.beta == true
shell: bash
run: |
chmod +x .github/scripts/rename-app-beta.sh
.github/scripts/rename-app-beta.sh ./electron/package.json
chmod +x .github/scripts/rename-workspace-beta.sh
.github/scripts/rename-workspace-beta.sh ./package.json
chmod +x .github/scripts/rename-uninstaller-beta.sh
.github/scripts/rename-uninstaller-beta.sh
echo "------------------------"
cat ./electron/package.json
echo "------------------------"
cat ./package.json
echo "------------------------"
cat ./electron/scripts/uninstaller.nsh
jq '.build.publish = [{"provider": "generic", "url": "https://delta.jan.ai/beta", "channel": "beta"}, {"provider": "github", "owner": "janhq", "repo": "jan", "channel": "beta"}, {"provider": "s3", "acl": null, "bucket": "${{ secrets.DELTA_AWS_S3_BUCKET_NAME }}", "region": "${{ secrets.DELTA_AWS_REGION}}", "path": "temp-beta", "channel": "beta"}]' electron/package.json > /tmp/package.json
mv /tmp/package.json electron/package.json
cat electron/package.json
- name: Update app version base on tag
if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/') && inputs.public_provider == 'github'
shell: bash
run: |
if [[ ! "${VERSION_TAG}" =~ ^v[0-9]+\.[0-9]+\.[0-9]+$ ]]; then
echo "Error: Tag is not valid!"
exit 1
fi
jq --arg version "${VERSION_TAG#v}" '.version = $version' electron/package.json > /tmp/package.json
mv /tmp/package.json electron/package.json
jq --arg version "${VERSION_TAG#v}" '.version = $version' web/package.json > /tmp/package.json
@ -113,7 +133,7 @@ jobs:
AZURE_CLIENT_ID: ${{ secrets.AZURE_CLIENT_ID }}
AZURE_TENANT_ID: ${{ secrets.AZURE_TENANT_ID }}
AZURE_CLIENT_SECRET: ${{ secrets.AZURE_CLIENT_SECRET }}
AZURE_CERT_NAME: ${{ secrets.AZURE_CERT_NAME }}
AZURE_CERT_NAME: homebrewltd
AWS_ACCESS_KEY_ID: ${{ secrets.DELTA_AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.DELTA_AWS_SECRET_ACCESS_KEY }}
AWS_DEFAULT_REGION: auto
@ -121,7 +141,7 @@ jobs:
AWS_MAX_ATTEMPTS: "5"
- name: Build app and publish app to github
if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/') && inputs.public_provider == 'github'
if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/') && inputs.public_provider == 'github' && inputs.beta == false
run: |
make build-and-publish
env:
@ -132,7 +152,25 @@ jobs:
AZURE_CLIENT_ID: ${{ secrets.AZURE_CLIENT_ID }}
AZURE_TENANT_ID: ${{ secrets.AZURE_TENANT_ID }}
AZURE_CLIENT_SECRET: ${{ secrets.AZURE_CLIENT_SECRET }}
AZURE_CERT_NAME: ${{ secrets.AZURE_CERT_NAME }}
AZURE_CERT_NAME: homebrewltd
- name: Build app and publish app to github
if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/') && inputs.public_provider == 'github' && inputs.beta == true
run: |
make build-and-publish
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
AWS_ACCESS_KEY_ID: ${{ secrets.DELTA_AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.DELTA_AWS_SECRET_ACCESS_KEY }}
AWS_DEFAULT_REGION: auto
AWS_EC2_METADATA_DISABLED: "true"
AWS_MAX_ATTEMPTS: "5"
AZURE_KEY_VAULT_URI: ${{ secrets.AZURE_KEY_VAULT_URI }}
AZURE_CLIENT_ID: ${{ secrets.AZURE_CLIENT_ID }}
AZURE_TENANT_ID: ${{ secrets.AZURE_TENANT_ID }}
AZURE_CLIENT_SECRET: ${{ secrets.AZURE_CLIENT_SECRET }}
# AZURE_CERT_NAME: ${{ secrets.AZURE_CERT_NAME }}
AZURE_CERT_NAME: homebrewltd
- name: Upload Artifact
if: inputs.public_provider != 'github'

View File

@ -19,8 +19,7 @@
- <a href="https://discord.gg/AsJ8krTT3N">Discord</a>
</p>
>[!Warning]
>**Jan is currently in Development**: Expect breaking changes and bugs!
> [!Warning] >**Jan is currently in Development**: Expect breaking changes and bugs!
Jan is an open-source ChatGPT alternative that runs 100% offline on your computer.
@ -45,31 +44,31 @@ Jan is an open-source ChatGPT alternative that runs 100% offline on your compute
<td style="text-align:center"><b>Stable (Recommended)</b></td>
<td style="text-align:center">
<a href='https://app.jan.ai/download/latest/win-x64'>
<img src='https://github.com/janhq/docs/blob/main/static/img/windows.png' style="height:14px; width: 14px" />
<img src='https://github.com/janhq/jan/blob/dev/docs/static/img/windows.png' style="height:14px; width: 14px" />
<b>jan.exe</b>
</a>
</td>
<td style="text-align:center">
<a href='https://app.jan.ai/download/latest/mac-x64'>
<img src='https://github.com/janhq/docs/blob/main/static/img/mac.png' style="height:15px; width: 15px" />
<img src='https://github.com/janhq/jan/blob/dev/docs/static/img/mac.png' style="height:15px; width: 15px" />
<b>Intel</b>
</a>
</td>
<td style="text-align:center">
<a href='https://app.jan.ai/download/latest/mac-arm64'>
<img src='https://github.com/janhq/docs/blob/main/static/img/mac.png' style="height:15px; width: 15px" />
<img src='https://github.com/janhq/jan/blob/dev/docs/static/img/mac.png' style="height:15px; width: 15px" />
<b>M1/M2/M3/M4</b>
</a>
</td>
<td style="text-align:center">
<a href='https://app.jan.ai/download/latest/linux-amd64-deb'>
<img src='https://github.com/janhq/docs/blob/main/static/img/linux.png' style="height:14px; width: 14px" />
<img src='https://github.com/janhq/jan/blob/dev/docs/static/img/linux.png' style="height:14px; width: 14px" />
<b>jan.deb</b>
</a>
</td>
<td style="text-align:center">
<a href='https://app.jan.ai/download/latest/linux-amd64-appimage'>
<img src='https://github.com/janhq/docs/blob/main/static/img/linux.png' style="height:14px; width: 14px" />
<img src='https://github.com/janhq/jan/blob/dev/docs/static/img/linux.png' style="height:14px; width: 14px" />
<b>jan.AppImage</b>
</a>
</td>
@ -78,31 +77,31 @@ Jan is an open-source ChatGPT alternative that runs 100% offline on your compute
<td style="text-align:center"><b>Experimental (Nightly Build)</b></td>
<td style="text-align:center">
<a href='https://app.jan.ai/download/nightly/win-x64'>
<img src='https://github.com/janhq/docs/blob/main/static/img/windows.png' style="height:14px; width: 14px" />
<img src='https://github.com/janhq/jan/blob/dev/docs/static/img/windows.png' style="height:14px; width: 14px" />
<b>jan.exe</b>
</a>
</td>
<td style="text-align:center">
<a href='https://app.jan.ai/download/nightly/mac-x64'>
<img src='https://github.com/janhq/docs/blob/main/static/img/mac.png' style="height:15px; width: 15px" />
<img src='https://github.com/janhq/jan/blob/dev/docs/static/img/mac.png' style="height:15px; width: 15px" />
<b>Intel</b>
</a>
</td>
<td style="text-align:center">
<a href='https://app.jan.ai/download/nightly/mac-arm64'>
<img src='https://github.com/janhq/docs/blob/main/static/img/mac.png' style="height:15px; width: 15px" />
<img src='https://github.com/janhq/jan/blob/dev/docs/static/img/mac.png' style="height:15px; width: 15px" />
<b>M1/M2/M3/M4</b>
</a>
</td>
<td style="text-align:center">
<a href='https://app.jan.ai/download/nightly/linux-amd64-deb'>
<img src='https://github.com/janhq/docs/blob/main/static/img/linux.png' style="height:14px; width: 14px" />
<img src='https://github.com/janhq/jan/blob/dev/docs/static/img/linux.png' style="height:14px; width: 14px" />
<b>jan.deb</b>
</a>
</td>
<td style="text-align:center">
<a href='https://app.jan.ai/download/nightly/linux-amd64-appimage'>
<img src='https://github.com/janhq/docs/blob/main/static/img/linux.png' style="height:14px; width: 14px" />
<img src='https://github.com/janhq/jan/blob/dev/docs/static/img/linux.png' style="height:14px; width: 14px" />
<b>jan.AppImage</b>
</a>
</td>

1
docs/.env.example Normal file
View File

@ -0,0 +1 @@
GTM_ID=xxxx

3
docs/.eslintrc.json Normal file
View File

@ -0,0 +1,3 @@
{
"extends": "next/core-web-vitals"
}

37
docs/.gitignore vendored Normal file
View File

@ -0,0 +1,37 @@
# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
# dependencies
/node_modules
/.pnp
.pnp.js
.yarn/install-state.gz
# testing
/coverage
# next.js
/.next/
/out/
# production
/build
# misc
.DS_Store
*.pem
# debug
npm-debug.log*
yarn-debug.log*
yarn-error.log*
# local env files
.env*.local
.env
# vercel
.vercel
# typescript
*.tsbuildinfo
next-env.d.ts

5
docs/.prettierignore Normal file
View File

@ -0,0 +1,5 @@
.next/
node_modules/
dist/
*.mdx
*.hbs

7
docs/.prettierrc Normal file
View File

@ -0,0 +1,7 @@
{
"semi": false,
"singleQuote": true,
"quoteProps": "consistent",
"trailingComma": "es5",
"endOfLine": "auto"
}

66
docs/README.md Normal file
View File

@ -0,0 +1,66 @@
# Website & Docs
This website is built using [Nextra](https://nextra.site/), a modern static website generator.
### Information Architecture
We try to **keep routes consistent** to maintain SEO.
- **`/guides/`**: Guides on how to use the Jan application. For end users who are directly using Jan.
- **`/developer/`**: Developer docs on how to extend Jan. These pages are about what people can build with our software.
- **`/api-reference/`**: Reference documentation for the Jan API server, written in Swagger/OpenAPI format.
- **`/changelog/`**: A list of changes made to the Jan application with each release.
- **`/blog/`**: A blog for the Jan application.
## How to Contribute
Refer to the [Contributing Guide](https://github.com/janhq/jan/blob/main/CONTRIBUTING.md) for more comprehensive information on how to contribute to the Jan project.
### Pre-requisites and Installation
- [Node.js](https://nodejs.org/en/) (version 20.0.0 or higher)
- [yarn](https://yarnpkg.com/) (version 1.22.0 or higher)
#### Installation
```bash
cd jan/docs
yarn install
yarn dev
```
This command starts a local development server and opens up a browser window. Most changes are reflected live without having to restart the server.
#### Build
```bash
yarn build
```
This command generates static content into the `build` directory and can be served using any static contents hosting service.
### Deployment
Using SSH:
```bash
USE_SSH=true yarn deploy
```
Not using SSH:
```bash
GIT_USER=<Your GitHub username> yarn deploy
```
If you are using GitHub pages for hosting, this command is a convenient way to build the website and push to the `gh-pages` branch.
### Preview URL, Pre-release and Publishing Documentation
- When a pull request is created, the preview URL will be automatically commented on the pull request.
- The documentation will then be published to [https://jan.ai/](https://jan.ai/) when the pull request is merged to `main`.

685
docs/_redirects Normal file
View File

@ -0,0 +1,685 @@
/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

View File

@ -0,0 +1,7 @@
/** @type {import('next-sitemap').IConfig} */
module.exports = {
siteUrl: 'https://jan.ai/',
generateRobotsTxt: true,
changefreq: 'daily',
priority: 1.0,
}

38
docs/next.config.mjs Normal file
View File

@ -0,0 +1,38 @@
/** @type {import('next').NextConfig} */
import nextra from 'nextra'
import { remarkCodeHike } from '@code-hike/mdx'
const withNextra = nextra({
theme: 'nextra-theme-docs',
themeConfig: './theme.config.tsx',
defaultShowCopyCode: true,
latex: true,
mdxOptions: {
remarkPlugins: [
[
remarkCodeHike,
{
theme: 'dark-plus',
showCopyButton: true,
skipLanguages: ['mermaid'],
},
],
],
},
})
const nextConfig = {
reactStrictMode: true,
output: 'export',
env: {
GTM_ID: process.env.GTM_ID,
},
transpilePackages: ['@scalar', 'react-tweet'],
images: {
formats: ['image/webp'],
unoptimized: true,
},
}
export default withNextra(nextConfig)

62
docs/package.json Normal file
View File

@ -0,0 +1,62 @@
{
"name": "docs",
"version": "0.1.0",
"private": true,
"scripts": {
"dev": "next dev",
"build": "next build",
"start": "npx serve@latest out",
"lint": "next lint",
"create:blogpost": "plop create-blogpost",
"postbuild": "next-sitemap"
},
"dependencies": {
"@code-hike/mdx": "^0.9.0",
"@next/third-parties": "^14.1.4",
"@radix-ui/react-dialog": "^1.0.5",
"@radix-ui/react-icons": "^1.3.0",
"@radix-ui/react-tooltip": "^1.0.7",
"@scalar/api-reference-react": "^0.1.31",
"@theguild/remark-mermaid": "^0.0.6",
"autoprefixer": "^10.0.1",
"axios": "^1.6.8",
"date-fns": "^3.6.0",
"embla-carousel-auto-height": "^8.0.0",
"embla-carousel-auto-scroll": "^8.0.0",
"embla-carousel-autoplay": "^8.0.0",
"embla-carousel-react": "^8.0.0",
"fs": "^0.0.1-security",
"gray-matter": "^4.0.3",
"lucide-react": "^0.372.0",
"next": "^14.1.4",
"next-seo": "^6.5.0",
"next-sitemap": "^4.2.3",
"nextra": "^2.13.4",
"nextra-theme-docs": "^2.13.4",
"path": "^0.12.7",
"plop": "^4.0.1",
"plop-helper-date": "^1.0.0",
"react": "^18",
"react-dom": "^18",
"react-hook-form": "^7.51.1",
"react-icons": "^5.0.1",
"react-markdown": "^9.0.1",
"react-share": "^5.1.0",
"react-tweet": "^3.2.0",
"sass": "^1.72.0",
"sharp": "^0.33.3",
"tailwind-merge": "^2.2.2",
"tailwindcss": "^3.3.0"
},
"devDependencies": {
"@types/node": "^20",
"@types/react": "^18",
"@types/react-dom": "^18",
"eslint": "^8",
"eslint-config-next": "14.1.4",
"postcss": "^8",
"prettier": "^3.2.5",
"typescript": "^5"
},
"packageManager": "yarn@1.22.22+sha512.a6b2f7906b721bba3d67d4aff083df04dad64c399707841b7acf00f6b133b7ac24255f2652fa22ae3534329dc6180534e98d17432037ff6fd140556e2bb3137e"
}

64
docs/plopfile.js Normal file
View File

@ -0,0 +1,64 @@
const capitalize = (str) => {
return str.charAt(0).toUpperCase() + str.slice(1)
}
const camelCase = (str) => {
return str.replace(/[-_](\w)/g, (_, c) => c.toUpperCase())
}
const categories = ['building-jan', 'research']
/**
* @param {import("plop").NodePlopAPI} plop
*/
module.exports = function main(plop) {
plop.setHelper('capitalize', (text) => {
return capitalize(camelCase(text))
})
plop.load('plop-helper-date')
plop.setGenerator('create-blogpost', {
description: 'Generates a blog post',
prompts: [
{
type: 'list',
name: 'categories',
message: 'what is categories of blog post: ',
choices: categories,
},
{
type: 'input',
name: 'slug',
message: 'Enter slug of blog post: ',
},
{
type: 'input',
name: 'title',
message: 'Enter title of blog post: ',
},
{
type: 'input',
name: 'description',
message: 'The description of blog post: ',
},
],
actions(answers) {
const actions = []
if (!answers) return actions
const { categories, slug, title, description } = answers
actions.push({
type: 'addMany',
templateFiles: 'templates/**',
destination: `./src/pages/post`,
globOptions: { dot: true },
data: { categories, slug, title, description },
abortOnFail: true,
})
return actions
},
})
}

6
docs/postcss.config.js Normal file
View File

@ -0,0 +1,6 @@
module.exports = {
plugins: {
tailwindcss: {},
autoprefixer: {},
},
}

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 277 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.0 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 246 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.2 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.4 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.5 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.7 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.7 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 288 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.3 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.3 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.3 MiB

View File

@ -0,0 +1,16 @@
<svg width="333" height="75" viewBox="0 0 333 75" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M4.63577 54.7872C3.84827 50.2622 0.504524 26.2372 0.0795244 22.1622C-0.426726 17.3123 1.58577 16.0872 3.23577 15.7935C5.67952 15.356 7.02327 18.256 7.02327 18.256L7.71702 18.0122C7.52327 16.9435 7.32327 15.4185 7.14202 13.906C6.79202 11.056 7.82952 9.16225 9.66077 8.61225C11.1108 8.181 13.5983 7.91225 15.5483 12.9997C17.2608 17.481 22.3983 32.8372 22.6233 33.4372C22.8483 34.0372 23.417 34.8185 24.1483 34.8185C24.942 34.8185 25.117 34.0122 25.1983 33.4497C25.2733 32.8872 27.8358 13.8935 29.642 6.38725C30.8295 1.44975 32.817 -0.3315 35.392 0.0497501C37.7483 0.39975 38.5045 1.62475 38.8858 6.5185C38.8858 6.5185 40.142 4.2435 42.992 4.99975C45.3358 5.6185 46.2795 8.37475 46.2795 12.681C46.2795 15.5435 45.642 42.056 45.6608 42.931C45.7108 44.981 46.9045 43.6497 46.9045 43.6497C50.5483 37.956 56.617 36.5622 59.2108 36.4497C61.817 36.3435 65.2545 37.781 64.3858 40.4872C63.8733 42.0747 59.167 44.3247 56.0483 47.4435C53.3733 50.1185 50.1108 54.831 47.3858 60.8622C45.0858 65.9497 41.392 74.4935 27.192 74.7497C11.5858 75.0185 6.17952 63.6497 4.63577 54.7872Z" fill="#FFCA28"/>
<path d="M27.7112 55.6624C29.5174 49.8499 34.0924 45.925 38.3612 44.125C42.3612 42.4312 45.6237 41.9812 45.6237 41.9812C45.6237 43.4875 47.0862 43.4437 47.0862 43.4437C46.4487 44.5187 44.4112 45.0812 43.5237 45.3375C32.7862 48.4125 29.6424 55.6499 28.6862 58.6687C28.0799 60.5624 27.2799 63.3124 27.2799 63.3124C27.2799 63.3124 26.0112 61.1374 27.7112 55.6624Z" fill="#EDA600"/>
<path d="M9.73633 67.0686C10.0488 67.3686 18.5551 74.7811 30.5426 72.5686C40.4488 70.7436 43.9301 63.7686 46.0238 59.9248C48.1176 56.0873 50.0551 50.6123 54.5113 46.8811C57.0238 44.7748 59.7363 43.5061 61.2488 42.4936C64.0176 40.6373 64.5051 39.4811 64.5051 39.4811C64.5051 39.4811 64.9363 40.9186 61.9676 43.4311C59.8988 45.1811 56.2363 47.5748 54.4863 49.6811C51.5738 53.1748 50.1551 57.4811 45.4238 65.0623C41.4801 71.3873 36.3613 73.7998 30.5113 74.6686C15.5988 76.8811 9.73633 67.0686 9.73633 67.0686Z" fill="#EDA600"/>
<path d="M11.9676 39.7996C11.1801 39.9184 10.8801 39.7121 10.9988 39.1996C11.1176 38.6871 11.4613 37.3059 11.2801 36.6621C10.0863 32.5059 7.29258 22.7434 6.51133 19.9309C5.51758 16.3559 3.79883 15.7559 3.79883 15.7559C6.34258 15.3621 7.75508 17.6934 8.14883 18.9871C8.43633 19.9371 12.2051 31.2934 13.7488 35.9871C13.9801 36.6871 14.3113 37.0184 14.7926 37.3621C15.0676 37.5559 15.2988 38.0371 14.7176 38.5809C14.2801 38.9996 12.3988 39.7371 11.9676 39.7996Z" fill="#EDA600"/>
<path d="M34.4367 36.5811C33.5617 36.2811 32.8429 35.7498 33.2117 34.9936C33.4054 34.5936 33.9492 34.0998 34.0304 33.4561C34.7929 27.3686 37.1554 8.4373 37.3617 4.99355C37.5367 2.08105 36.3242 0.268555 36.3242 0.268555C36.3242 0.268555 39.0617 0.818554 38.8867 5.9248C38.8242 7.7873 37.2742 27.9123 36.8054 34.1561C36.7617 34.7498 37.4742 35.5123 37.4054 36.3436C37.3554 36.9623 36.3617 37.2373 34.4367 36.5811Z" fill="#EDA600"/>
<path d="M47.0922 43.4752L44.5922 43.7939C44.5922 43.7939 45.1672 13.8251 45.0172 9.9189C44.8672 6.01265 42.9797 4.9939 42.9797 4.9939C42.9797 4.9939 46.5297 4.9939 46.9672 9.85015C47.2235 12.7251 47.0922 43.4752 47.0922 43.4752Z" fill="#EDA600"/>
<path d="M332.903 33.3051V34.6775C330.501 34.6775 329.472 35.4208 328.5 38.966L321.238 64.1257H317.807L312.832 44.6841L307.572 64.1257H303.969L296.479 38.966C295.392 35.4208 294.363 34.6775 291.961 34.6775V33.3051H303.969V34.6775C301.225 34.6775 301.396 35.4208 302.426 38.966L307.286 55.8916H307.515L311.689 40.2812L311.346 39.0232C310.431 35.4208 309.573 34.6775 307.515 34.6775V33.3051H319.465V34.6775C316.378 34.6775 316.378 35.478 317.178 39.0804L321.067 55.8916H321.295L326.098 38.966C327.128 35.4208 327.185 34.6775 323.525 34.6775V33.3051H332.903Z" fill="black"/>
<path d="M290.785 51.3743H292.157C290.956 60.5804 287.068 64.5259 281.693 64.5259C275.232 64.5259 271.172 58.4075 271.172 48.9727C271.172 39.9381 275.174 32.2758 281.979 32.2758C288.669 32.2758 291.814 38.5657 291.814 46.9141H276.718V47.0285C276.718 54.8051 279.12 60.2945 283.866 60.2945C286.439 60.2945 289.412 58.2932 290.785 51.3743ZM281.979 34.6774C278.548 34.6774 277.118 38.8516 276.775 44.5697H286.325C286.325 39.0804 285.353 34.6774 281.979 34.6774Z" fill="black"/>
<path d="M266.597 32.2759C268.599 32.2759 269.685 33.4195 269.685 35.3065C269.685 37.5365 268.37 38.966 266.883 38.966C265.854 38.966 265.396 38.5658 264.653 37.7652C263.91 37.0219 263.624 36.7932 262.938 36.7932C261.622 36.7932 260.079 38.6801 258.878 42.1682V57.3783C258.878 61.2666 259.735 62.1815 264.939 62.1815V63.611H249.5V62.2387C252.817 62.2387 253.388 61.381 253.388 57.7214V40.1097C253.388 36.2785 253.388 35.478 249.958 36.9075L249.386 35.5924L253.96 33.7626L257.848 32.1615L258.878 33.0192V38.5086H259.049C260.65 35.478 263.452 32.2759 266.597 32.2759Z" fill="black"/>
<path d="M224.271 60.6376V24.8423C224.271 21.1256 224.386 20.3822 221.069 22.0405L220.44 20.8397L224.843 18.6668L229.074 16.4939L229.875 17.2944V37.6509H230.104C232.219 34.4487 234.907 32.2758 238.452 32.2758C243.541 32.2758 246.915 37.6509 246.915 47.0857C246.915 57.7786 242.626 64.4687 234.735 64.4687C231.476 64.4687 227.359 63.3251 224.271 60.6376ZM229.875 40.4527V58.865C230.79 60.2945 232.505 61.8384 234.735 61.8384C238.738 61.8384 240.911 56.7493 240.911 48.0578C240.911 39.9953 238.795 36.2213 235.536 36.2213C233.249 36.2213 231.304 38.1083 229.875 40.4527Z" fill="black"/>
<path d="M217.689 51.3743H219.061C217.861 60.5804 213.972 64.5259 208.597 64.5259C202.136 64.5259 198.076 58.4075 198.076 48.9727C198.076 39.9381 202.079 32.2758 208.883 32.2758C215.573 32.2758 218.718 38.5657 218.718 46.9141H203.623V47.0285C203.623 54.8051 206.024 60.2945 210.77 60.2945C213.343 60.2945 216.317 58.2932 217.689 51.3743ZM208.883 34.6774C205.452 34.6774 204.023 38.8516 203.68 44.5697H213.229C213.229 39.0804 212.257 34.6774 208.883 34.6774Z" fill="black"/>
<path d="M192.164 40.5099V57.7214C192.164 61.381 192.679 62.2387 195.995 62.2387V63.611H183.358V62.2387C186.217 62.2387 186.675 61.381 186.675 57.7214V40.7958C186.675 37.7081 185.531 36.2785 183.473 36.2785C181.414 36.2785 179.584 37.7081 177.583 40.3956V40.5099V57.7214C177.583 61.381 178.04 62.2387 180.899 62.2387V63.611H168.72V62.2387C171.636 62.2387 172.094 61.381 172.094 57.7214V40.7958C172.094 37.7081 170.95 36.2785 168.891 36.2785C166.776 36.2785 164.889 37.7652 162.83 40.6243V57.7214C162.83 61.381 163.288 62.2387 166.204 62.2387V63.611H153.453V62.2387C156.826 62.2387 157.341 61.381 157.341 57.7214V40.1097C157.341 36.2785 157.341 35.5352 153.967 36.9075L153.395 35.6495L161.744 32.1615L162.83 33.0192V38.2799H163.002C165.175 35.0205 167.633 32.2759 171.522 32.2759C174.895 32.2759 176.897 34.3916 177.469 38.2799H177.64C179.756 35.0205 182.215 32.2759 186.103 32.2759C190.106 32.2759 192.164 35.2493 192.164 40.5099Z" fill="black"/>
<path d="M138.615 64.5259C131.181 64.5259 126.321 57.9501 126.321 48.5724C126.321 39.3663 130.838 32.2758 138.615 32.2758C145.991 32.2758 150.908 38.8516 150.908 48.2293C150.908 57.4354 146.334 64.5259 138.615 64.5259ZM139.472 62.0099C143.532 62.0099 145.133 56.6349 145.133 51.603C145.133 43.8264 142.789 34.7918 137.757 34.7918C133.697 34.7918 132.039 40.1668 132.039 45.1987C132.039 52.9753 134.44 62.0099 139.472 62.0099Z" fill="black"/>
<path d="M125.407 17.8663V19.2386C120.089 19.2386 119.289 20.2679 119.289 23.7559V57.7214C119.289 61.2094 120.089 62.2387 125.407 62.2387V63.611H107.109V62.2387C112.141 62.2387 112.884 61.2094 112.884 57.7214V40.6815H95.1584V57.7214C95.1584 61.2094 95.8445 62.2387 100.876 62.2387V63.611H82.6357V62.2387C87.9536 62.2387 88.6969 61.2094 88.6969 57.7214V23.7559C88.6969 20.2679 87.9536 19.2386 82.6357 19.2386V17.8663H100.876V19.2386C95.8445 19.2386 95.1584 20.2679 95.1584 23.7559V38.2227H112.884V23.7559C112.884 20.2679 112.141 19.2386 107.109 19.2386V17.8663H125.407Z" fill="black"/>
</svg>

After

Width:  |  Height:  |  Size: 7.7 KiB

View File

@ -0,0 +1,16 @@
<svg width="333" height="75" viewBox="0 0 333 75" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M4.63577 54.7807C3.84827 50.2557 0.504524 26.2307 0.0795244 22.1557C-0.426726 17.3057 1.58577 16.0807 3.23577 15.787C5.67952 15.3495 7.02327 18.2495 7.02327 18.2495L7.71702 18.0057C7.52327 16.937 7.32327 15.412 7.14202 13.8995C6.79202 11.0495 7.82952 9.15572 9.66077 8.60572C11.1108 8.17447 13.5983 7.90572 15.5483 12.9932C17.2608 17.4745 22.3983 32.8307 22.6233 33.4307C22.8483 34.0307 23.417 34.812 24.1483 34.812C24.942 34.812 25.117 34.0057 25.1983 33.4432C25.2733 32.8807 27.8358 13.887 29.642 6.38072C30.8295 1.44322 32.817 -0.338031 35.392 0.0432194C37.7483 0.393219 38.5045 1.61822 38.8858 6.51197C38.8858 6.51197 40.142 4.23697 42.992 4.99322C45.3358 5.61197 46.2795 8.36822 46.2795 12.6745C46.2795 15.537 45.642 42.0495 45.6608 42.9245C45.7108 44.9745 46.9045 43.6432 46.9045 43.6432C50.5483 37.9495 56.617 36.5557 59.2108 36.4432C61.817 36.337 65.2545 37.7745 64.3858 40.4807C63.8733 42.0682 59.167 44.3182 56.0483 47.437C53.3733 50.112 50.1108 54.8245 47.3858 60.8557C45.0858 65.9432 41.392 74.487 27.192 74.7432C11.5858 75.012 6.17952 63.6432 4.63577 54.7807Z" fill="#FFCA28"/>
<path d="M27.7112 55.6559C29.5174 49.8434 34.0924 45.9184 38.3612 44.1184C42.3612 42.4247 45.6237 41.9747 45.6237 41.9747C45.6237 43.4809 47.0862 43.4372 47.0862 43.4372C46.4487 44.5122 44.4112 45.0747 43.5237 45.3309C32.7862 48.4059 29.6424 55.6434 28.6862 58.6622C28.0799 60.5559 27.2799 63.3059 27.2799 63.3059C27.2799 63.3059 26.0112 61.1309 27.7112 55.6559Z" fill="#EDA600"/>
<path d="M9.73633 67.062C10.0488 67.362 18.5551 74.7745 30.5426 72.562C40.4488 70.737 43.9301 63.762 46.0238 59.9183C48.1176 56.0808 50.0551 50.6058 54.5113 46.8745C57.0238 44.7683 59.7363 43.4995 61.2488 42.487C64.0176 40.6308 64.5051 39.4745 64.5051 39.4745C64.5051 39.4745 64.9363 40.912 61.9676 43.4245C59.8988 45.1745 56.2363 47.5683 54.4863 49.6745C51.5738 53.1683 50.1551 57.4745 45.4238 65.0558C41.4801 71.3808 36.3613 73.7933 30.5113 74.662C15.5988 76.8745 9.73633 67.062 9.73633 67.062Z" fill="#EDA600"/>
<path d="M11.9676 39.7931C11.1801 39.9118 10.8801 39.7056 10.9988 39.1931C11.1176 38.6806 11.4613 37.2993 11.2801 36.6556C10.0863 32.4993 7.29258 22.7368 6.51133 19.9243C5.51758 16.3493 3.79883 15.7493 3.79883 15.7493C6.34258 15.3556 7.75508 17.6868 8.14883 18.9806C8.43633 19.9306 12.2051 31.2868 13.7488 35.9806C13.9801 36.6806 14.3113 37.0118 14.7926 37.3556C15.0676 37.5493 15.2988 38.0306 14.7176 38.5743C14.2801 38.9931 12.3988 39.7306 11.9676 39.7931Z" fill="#EDA600"/>
<path d="M34.4367 36.5745C33.5617 36.2745 32.8429 35.7433 33.2117 34.987C33.4054 34.587 33.9492 34.0933 34.0304 33.4495C34.7929 27.362 37.1554 8.43077 37.3617 4.98702C37.5367 2.07452 36.3242 0.262024 36.3242 0.262024C36.3242 0.262024 39.0617 0.812023 38.8867 5.91827C38.8242 7.78077 37.2742 27.9058 36.8054 34.1495C36.7617 34.7433 37.4742 35.5058 37.4054 36.337C37.3554 36.9558 36.3617 37.2308 34.4367 36.5745Z" fill="#EDA600"/>
<path d="M47.0922 43.4686L44.5922 43.7874C44.5922 43.7874 45.1672 13.8186 45.0172 9.91237C44.8672 6.00612 42.9797 4.98737 42.9797 4.98737C42.9797 4.98737 46.5297 4.98737 46.9672 9.84362C47.2235 12.7186 47.0922 43.4686 47.0922 43.4686Z" fill="#EDA600"/>
<path d="M332.903 33.2986V34.6709C330.501 34.6709 329.472 35.4143 328.5 38.9595L321.238 64.1191H317.807L312.832 44.6776L307.572 64.1191H303.969L296.479 38.9595C295.392 35.4143 294.363 34.6709 291.961 34.6709V33.2986H303.969V34.6709C301.225 34.6709 301.396 35.4143 302.426 38.9595L307.286 55.8851H307.515L311.689 40.2747L311.346 39.0167C310.431 35.4143 309.573 34.6709 307.515 34.6709V33.2986H319.465V34.6709C316.378 34.6709 316.378 35.4715 317.178 39.0739L321.067 55.8851H321.295L326.098 38.9595C327.128 35.4143 327.185 34.6709 323.525 34.6709V33.2986H332.903Z" fill="white"/>
<path d="M290.785 51.3678H292.157C290.956 60.5739 287.068 64.5194 281.693 64.5194C275.232 64.5194 271.172 58.401 271.172 48.9662C271.172 39.9316 275.174 32.2693 281.979 32.2693C288.669 32.2693 291.814 38.5592 291.814 46.9076H276.718V47.022C276.718 54.7986 279.12 60.288 283.866 60.288C286.439 60.288 289.412 58.2867 290.785 51.3678ZM281.979 34.6709C278.548 34.6709 277.118 38.8451 276.775 44.5632H286.325C286.325 39.0739 285.353 34.6709 281.979 34.6709Z" fill="white"/>
<path d="M266.597 32.2693C268.599 32.2693 269.685 33.413 269.685 35.2999C269.685 37.53 268.37 38.9595 266.883 38.9595C265.854 38.9595 265.396 38.5592 264.653 37.7587C263.91 37.0154 263.624 36.7866 262.938 36.7866C261.622 36.7866 260.079 38.6736 258.878 42.1616V57.3718C258.878 61.2601 259.735 62.175 264.939 62.175V63.6045H249.5V62.2322C252.817 62.2322 253.388 61.3744 253.388 57.7149V40.1031C253.388 36.272 253.388 35.4715 249.958 36.901L249.386 35.5858L253.96 33.756L257.848 32.155L258.878 33.0127V38.5021H259.049C260.65 35.4715 263.452 32.2693 266.597 32.2693Z" fill="white"/>
<path d="M224.271 60.6311V24.8358C224.271 21.119 224.386 20.3757 221.069 22.0339L220.44 20.8331L224.843 18.6602L229.074 16.4874L229.875 17.2879V37.6443H230.104C232.219 34.4422 234.907 32.2693 238.452 32.2693C243.541 32.2693 246.915 37.6443 246.915 47.0792C246.915 57.772 242.626 64.4622 234.735 64.4622C231.476 64.4622 227.359 63.3186 224.271 60.6311ZM229.875 40.4462V58.8585C230.79 60.288 232.505 61.8319 234.735 61.8319C238.738 61.8319 240.911 56.7428 240.911 48.0513C240.911 39.9887 238.795 36.2148 235.536 36.2148C233.249 36.2148 231.304 38.1018 229.875 40.4462Z" fill="white"/>
<path d="M217.689 51.3678H219.061C217.861 60.5739 213.972 64.5194 208.597 64.5194C202.136 64.5194 198.076 58.401 198.076 48.9662C198.076 39.9316 202.079 32.2693 208.883 32.2693C215.573 32.2693 218.718 38.5592 218.718 46.9076H203.623V47.022C203.623 54.7986 206.024 60.288 210.77 60.288C213.343 60.288 216.317 58.2867 217.689 51.3678ZM208.883 34.6709C205.452 34.6709 204.023 38.8451 203.68 44.5632H213.229C213.229 39.0739 212.257 34.6709 208.883 34.6709Z" fill="white"/>
<path d="M192.164 40.5034V57.7149C192.164 61.3744 192.679 62.2322 195.995 62.2322V63.6045H183.358V62.2322C186.217 62.2322 186.675 61.3744 186.675 57.7149V40.7893C186.675 37.7015 185.531 36.272 183.473 36.272C181.414 36.272 179.584 37.7015 177.583 40.389V40.5034V57.7149C177.583 61.3744 178.04 62.2322 180.899 62.2322V63.6045H168.72V62.2322C171.636 62.2322 172.094 61.3744 172.094 57.7149V40.7893C172.094 37.7015 170.95 36.272 168.891 36.272C166.776 36.272 164.889 37.7587 162.83 40.6178V57.7149C162.83 61.3744 163.288 62.2322 166.204 62.2322V63.6045H153.453V62.2322C156.826 62.2322 157.341 61.3744 157.341 57.7149V40.1031C157.341 36.272 157.341 35.5286 153.967 36.901L153.395 35.643L161.744 32.155L162.83 33.0127V38.2733H163.002C165.175 35.014 167.633 32.2693 171.522 32.2693C174.895 32.2693 176.897 34.385 177.469 38.2733H177.64C179.756 35.014 182.215 32.2693 186.103 32.2693C190.106 32.2693 192.164 35.2427 192.164 40.5034Z" fill="white"/>
<path d="M138.615 64.5194C131.181 64.5194 126.321 57.9436 126.321 48.5659C126.321 39.3598 130.838 32.2693 138.615 32.2693C145.991 32.2693 150.908 38.8451 150.908 48.2228C150.908 57.4289 146.334 64.5194 138.615 64.5194ZM139.472 62.0034C143.532 62.0034 145.133 56.6284 145.133 51.5965C145.133 43.8199 142.789 34.7853 137.757 34.7853C133.697 34.7853 132.039 40.1603 132.039 45.1922C132.039 52.9688 134.44 62.0034 139.472 62.0034Z" fill="white"/>
<path d="M125.407 17.8597V19.2321C120.089 19.2321 119.289 20.2613 119.289 23.7494V57.7149C119.289 61.2029 120.089 62.2322 125.407 62.2322V63.6045H107.109V62.2322C112.141 62.2322 112.884 61.2029 112.884 57.7149V40.6749H95.1584V57.7149C95.1584 61.2029 95.8445 62.2322 100.876 62.2322V63.6045H82.6357V62.2322C87.9536 62.2322 88.6969 61.2029 88.6969 57.7149V23.7494C88.6969 20.2613 87.9536 19.2321 82.6357 19.2321V17.8597H100.876V19.2321C95.8445 19.2321 95.1584 20.2613 95.1584 23.7494V38.2162H112.884V23.7494C112.884 20.2613 112.141 19.2321 107.109 19.2321V17.8597H125.407Z" fill="white"/>
</svg>

After

Width:  |  Height:  |  Size: 7.7 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 107 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 732 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 192 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 488 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 477 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 232 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 225 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 161 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 162 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 144 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 84 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 163 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 85 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 368 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 114 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 395 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 119 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 195 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 119 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 198 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 125 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 325 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 94 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 322 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 91 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 333 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 97 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 350 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 95 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.4 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 77 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 77 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 387 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 98 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 392 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

BIN
docs/public/favicon.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

2131
docs/public/openapi/jan.json Normal file

File diff suppressed because it is too large Load Diff

9
docs/public/robots.txt Normal file
View File

@ -0,0 +1,9 @@
# *
User-agent: *
Allow: /
# Host
Host: https://jan.ai/
# Sitemaps
Sitemap: https://jan.ai/sitemap.xml

129
docs/public/sitemap-0.xml Normal file
View File

@ -0,0 +1,129 @@
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:news="http://www.google.com/schemas/sitemap-news/0.9" xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:mobile="http://www.google.com/schemas/sitemap-mobile/1.0" xmlns:image="http://www.google.com/schemas/sitemap-image/1.1" xmlns:video="http://www.google.com/schemas/sitemap-video/1.1">
<url><loc>https://jan.ai</loc><lastmod>2024-09-09T08:19:45.721Z</lastmod><changefreq>daily</changefreq><priority>1</priority></url>
<url><loc>https://jan.ai/about</loc><lastmod>2024-09-09T08:19:45.722Z</lastmod><changefreq>daily</changefreq><priority>1</priority></url>
<url><loc>https://jan.ai/about/handbook</loc><lastmod>2024-09-09T08:19:45.722Z</lastmod><changefreq>daily</changefreq><priority>1</priority></url>
<url><loc>https://jan.ai/about/handbook/analytics</loc><lastmod>2024-09-09T08:19:45.722Z</lastmod><changefreq>daily</changefreq><priority>1</priority></url>
<url><loc>https://jan.ai/about/handbook/engineering</loc><lastmod>2024-09-09T08:19:45.722Z</lastmod><changefreq>daily</changefreq><priority>1</priority></url>
<url><loc>https://jan.ai/about/handbook/engineering/ci-cd</loc><lastmod>2024-09-09T08:19:45.722Z</lastmod><changefreq>daily</changefreq><priority>1</priority></url>
<url><loc>https://jan.ai/about/handbook/engineering/qa</loc><lastmod>2024-09-09T08:19:45.722Z</lastmod><changefreq>daily</changefreq><priority>1</priority></url>
<url><loc>https://jan.ai/about/handbook/product-design</loc><lastmod>2024-09-09T08:19:45.722Z</lastmod><changefreq>daily</changefreq><priority>1</priority></url>
<url><loc>https://jan.ai/about/handbook/project-management</loc><lastmod>2024-09-09T08:19:45.722Z</lastmod><changefreq>daily</changefreq><priority>1</priority></url>
<url><loc>https://jan.ai/about/handbook/strategy</loc><lastmod>2024-09-09T08:19:45.722Z</lastmod><changefreq>daily</changefreq><priority>1</priority></url>
<url><loc>https://jan.ai/about/handbook/website-docs</loc><lastmod>2024-09-09T08:19:45.722Z</lastmod><changefreq>daily</changefreq><priority>1</priority></url>
<url><loc>https://jan.ai/about/investors</loc><lastmod>2024-09-09T08:19:45.722Z</lastmod><changefreq>daily</changefreq><priority>1</priority></url>
<url><loc>https://jan.ai/about/team</loc><lastmod>2024-09-09T08:19:45.722Z</lastmod><changefreq>daily</changefreq><priority>1</priority></url>
<url><loc>https://jan.ai/about/vision</loc><lastmod>2024-09-09T08:19:45.722Z</lastmod><changefreq>daily</changefreq><priority>1</priority></url>
<url><loc>https://jan.ai/about/wall-of-love</loc><lastmod>2024-09-09T08:19:45.722Z</lastmod><changefreq>daily</changefreq><priority>1</priority></url>
<url><loc>https://jan.ai/blog</loc><lastmod>2024-09-09T08:19:45.722Z</lastmod><changefreq>daily</changefreq><priority>1</priority></url>
<url><loc>https://jan.ai/changelog</loc><lastmod>2024-09-09T08:19:45.722Z</lastmod><changefreq>daily</changefreq><priority>1</priority></url>
<url><loc>https://jan.ai/changelog/2023-12-21-faster-inference-across-platform</loc><lastmod>2024-09-09T08:19:45.722Z</lastmod><changefreq>daily</changefreq><priority>1</priority></url>
<url><loc>https://jan.ai/changelog/2024-01-16-settings-options-right-panel</loc><lastmod>2024-09-09T08:19:45.722Z</lastmod><changefreq>daily</changefreq><priority>1</priority></url>
<url><loc>https://jan.ai/changelog/2024-01-29-local-api-server</loc><lastmod>2024-09-09T08:19:45.722Z</lastmod><changefreq>daily</changefreq><priority>1</priority></url>
<url><loc>https://jan.ai/changelog/2024-02-05-jan-data-folder</loc><lastmod>2024-09-09T08:19:45.722Z</lastmod><changefreq>daily</changefreq><priority>1</priority></url>
<url><loc>https://jan.ai/changelog/2024-02-26-home-servers-with-helm</loc><lastmod>2024-09-09T08:19:45.722Z</lastmod><changefreq>daily</changefreq><priority>1</priority></url>
<url><loc>https://jan.ai/changelog/2024-03-06-ui-revamp-settings</loc><lastmod>2024-09-09T08:19:45.722Z</lastmod><changefreq>daily</changefreq><priority>1</priority></url>
<url><loc>https://jan.ai/changelog/2024-03-11-import-models</loc><lastmod>2024-09-09T08:19:45.722Z</lastmod><changefreq>daily</changefreq><priority>1</priority></url>
<url><loc>https://jan.ai/changelog/2024-03-19-nitro-tensorrt-llm-extension</loc><lastmod>2024-09-09T08:19:45.722Z</lastmod><changefreq>daily</changefreq><priority>1</priority></url>
<url><loc>https://jan.ai/changelog/2024-04-02-groq-api-integration</loc><lastmod>2024-09-09T08:19:45.722Z</lastmod><changefreq>daily</changefreq><priority>1</priority></url>
<url><loc>https://jan.ai/changelog/2024-04-15-new-mistral-extension</loc><lastmod>2024-09-09T08:19:45.722Z</lastmod><changefreq>daily</changefreq><priority>1</priority></url>
<url><loc>https://jan.ai/changelog/2024-04-25-llama3-command-r-hugginface</loc><lastmod>2024-09-09T08:19:45.722Z</lastmod><changefreq>daily</changefreq><priority>1</priority></url>
<url><loc>https://jan.ai/changelog/2024-05-20-llamacpp-upgrade-new-remote-models</loc><lastmod>2024-09-09T08:19:45.722Z</lastmod><changefreq>daily</changefreq><priority>1</priority></url>
<url><loc>https://jan.ai/changelog/2024-05-28-cohere-aya-23-8b-35b-phi-3-medium</loc><lastmod>2024-09-09T08:19:45.722Z</lastmod><changefreq>daily</changefreq><priority>1</priority></url>
<url><loc>https://jan.ai/changelog/2024-06-21-nvidia-nim-support</loc><lastmod>2024-09-09T08:19:45.722Z</lastmod><changefreq>daily</changefreq><priority>1</priority></url>
<url><loc>https://jan.ai/changelog/2024-07-15-claude-3-5-support</loc><lastmod>2024-09-09T08:19:45.722Z</lastmod><changefreq>daily</changefreq><priority>1</priority></url>
<url><loc>https://jan.ai/changelog/2024-09-01-llama3-1-gemma2-support</loc><lastmod>2024-09-09T08:19:45.722Z</lastmod><changefreq>daily</changefreq><priority>1</priority></url>
<url><loc>https://jan.ai/cortex</loc><lastmod>2024-09-09T08:19:45.722Z</lastmod><changefreq>daily</changefreq><priority>1</priority></url>
<url><loc>https://jan.ai/cortex/architecture</loc><lastmod>2024-09-09T08:19:45.722Z</lastmod><changefreq>daily</changefreq><priority>1</priority></url>
<url><loc>https://jan.ai/cortex/assistants</loc><lastmod>2024-09-09T08:19:45.722Z</lastmod><changefreq>daily</changefreq><priority>1</priority></url>
<url><loc>https://jan.ai/cortex/build-extension</loc><lastmod>2024-09-09T08:19:45.722Z</lastmod><changefreq>daily</changefreq><priority>1</priority></url>
<url><loc>https://jan.ai/cortex/cli</loc><lastmod>2024-09-09T08:19:45.722Z</lastmod><changefreq>daily</changefreq><priority>1</priority></url>
<url><loc>https://jan.ai/cortex/cli/chat</loc><lastmod>2024-09-09T08:19:45.722Z</lastmod><changefreq>daily</changefreq><priority>1</priority></url>
<url><loc>https://jan.ai/cortex/cli/init</loc><lastmod>2024-09-09T08:19:45.722Z</lastmod><changefreq>daily</changefreq><priority>1</priority></url>
<url><loc>https://jan.ai/cortex/cli/kill</loc><lastmod>2024-09-09T08:19:45.722Z</lastmod><changefreq>daily</changefreq><priority>1</priority></url>
<url><loc>https://jan.ai/cortex/cli/models</loc><lastmod>2024-09-09T08:19:45.722Z</lastmod><changefreq>daily</changefreq><priority>1</priority></url>
<url><loc>https://jan.ai/cortex/cli/models/download</loc><lastmod>2024-09-09T08:19:45.722Z</lastmod><changefreq>daily</changefreq><priority>1</priority></url>
<url><loc>https://jan.ai/cortex/cli/models/get</loc><lastmod>2024-09-09T08:19:45.722Z</lastmod><changefreq>daily</changefreq><priority>1</priority></url>
<url><loc>https://jan.ai/cortex/cli/models/list</loc><lastmod>2024-09-09T08:19:45.722Z</lastmod><changefreq>daily</changefreq><priority>1</priority></url>
<url><loc>https://jan.ai/cortex/cli/models/remove</loc><lastmod>2024-09-09T08:19:45.722Z</lastmod><changefreq>daily</changefreq><priority>1</priority></url>
<url><loc>https://jan.ai/cortex/cli/models/start</loc><lastmod>2024-09-09T08:19:45.722Z</lastmod><changefreq>daily</changefreq><priority>1</priority></url>
<url><loc>https://jan.ai/cortex/cli/models/stop</loc><lastmod>2024-09-09T08:19:45.722Z</lastmod><changefreq>daily</changefreq><priority>1</priority></url>
<url><loc>https://jan.ai/cortex/cli/models/update</loc><lastmod>2024-09-09T08:19:45.722Z</lastmod><changefreq>daily</changefreq><priority>1</priority></url>
<url><loc>https://jan.ai/cortex/cli/ps</loc><lastmod>2024-09-09T08:19:45.722Z</lastmod><changefreq>daily</changefreq><priority>1</priority></url>
<url><loc>https://jan.ai/cortex/cli/pull</loc><lastmod>2024-09-09T08:19:45.722Z</lastmod><changefreq>daily</changefreq><priority>1</priority></url>
<url><loc>https://jan.ai/cortex/cli/run</loc><lastmod>2024-09-09T08:19:45.722Z</lastmod><changefreq>daily</changefreq><priority>1</priority></url>
<url><loc>https://jan.ai/cortex/cli/serve</loc><lastmod>2024-09-09T08:19:45.722Z</lastmod><changefreq>daily</changefreq><priority>1</priority></url>
<url><loc>https://jan.ai/cortex/command-line</loc><lastmod>2024-09-09T08:19:45.722Z</lastmod><changefreq>daily</changefreq><priority>1</priority></url>
<url><loc>https://jan.ai/cortex/cortex-cpp</loc><lastmod>2024-09-09T08:19:45.722Z</lastmod><changefreq>daily</changefreq><priority>1</priority></url>
<url><loc>https://jan.ai/cortex/cortex-llamacpp</loc><lastmod>2024-09-09T08:19:45.722Z</lastmod><changefreq>daily</changefreq><priority>1</priority></url>
<url><loc>https://jan.ai/cortex/cortex-openvino</loc><lastmod>2024-09-09T08:19:45.722Z</lastmod><changefreq>daily</changefreq><priority>1</priority></url>
<url><loc>https://jan.ai/cortex/cortex-python</loc><lastmod>2024-09-09T08:19:45.722Z</lastmod><changefreq>daily</changefreq><priority>1</priority></url>
<url><loc>https://jan.ai/cortex/cortex-tensorrt-llm</loc><lastmod>2024-09-09T08:19:45.722Z</lastmod><changefreq>daily</changefreq><priority>1</priority></url>
<url><loc>https://jan.ai/cortex/embeddings</loc><lastmod>2024-09-09T08:19:45.722Z</lastmod><changefreq>daily</changefreq><priority>1</priority></url>
<url><loc>https://jan.ai/cortex/embeddings/overview</loc><lastmod>2024-09-09T08:19:45.722Z</lastmod><changefreq>daily</changefreq><priority>1</priority></url>
<url><loc>https://jan.ai/cortex/error-codes</loc><lastmod>2024-09-09T08:19:45.722Z</lastmod><changefreq>daily</changefreq><priority>1</priority></url>
<url><loc>https://jan.ai/cortex/ext-architecture</loc><lastmod>2024-09-09T08:19:45.722Z</lastmod><changefreq>daily</changefreq><priority>1</priority></url>
<url><loc>https://jan.ai/cortex/fine-tuning</loc><lastmod>2024-09-09T08:19:45.722Z</lastmod><changefreq>daily</changefreq><priority>1</priority></url>
<url><loc>https://jan.ai/cortex/fine-tuning/overview</loc><lastmod>2024-09-09T08:19:45.722Z</lastmod><changefreq>daily</changefreq><priority>1</priority></url>
<url><loc>https://jan.ai/cortex/function-calling</loc><lastmod>2024-09-09T08:19:45.722Z</lastmod><changefreq>daily</changefreq><priority>1</priority></url>
<url><loc>https://jan.ai/cortex/hardware</loc><lastmod>2024-09-09T08:19:45.722Z</lastmod><changefreq>daily</changefreq><priority>1</priority></url>
<url><loc>https://jan.ai/cortex/installation</loc><lastmod>2024-09-09T08:19:45.722Z</lastmod><changefreq>daily</changefreq><priority>1</priority></url>
<url><loc>https://jan.ai/cortex/installation/linux</loc><lastmod>2024-09-09T08:19:45.722Z</lastmod><changefreq>daily</changefreq><priority>1</priority></url>
<url><loc>https://jan.ai/cortex/installation/mac</loc><lastmod>2024-09-09T08:19:45.722Z</lastmod><changefreq>daily</changefreq><priority>1</priority></url>
<url><loc>https://jan.ai/cortex/installation/windows</loc><lastmod>2024-09-09T08:19:45.722Z</lastmod><changefreq>daily</changefreq><priority>1</priority></url>
<url><loc>https://jan.ai/cortex/model-operations</loc><lastmod>2024-09-09T08:19:45.722Z</lastmod><changefreq>daily</changefreq><priority>1</priority></url>
<url><loc>https://jan.ai/cortex/model-operations/overview</loc><lastmod>2024-09-09T08:19:45.722Z</lastmod><changefreq>daily</changefreq><priority>1</priority></url>
<url><loc>https://jan.ai/cortex/py-library</loc><lastmod>2024-09-09T08:19:45.722Z</lastmod><changefreq>daily</changefreq><priority>1</priority></url>
<url><loc>https://jan.ai/cortex/quickstart</loc><lastmod>2024-09-09T08:19:45.722Z</lastmod><changefreq>daily</changefreq><priority>1</priority></url>
<url><loc>https://jan.ai/cortex/rag</loc><lastmod>2024-09-09T08:19:45.722Z</lastmod><changefreq>daily</changefreq><priority>1</priority></url>
<url><loc>https://jan.ai/cortex/rag/overview</loc><lastmod>2024-09-09T08:19:45.722Z</lastmod><changefreq>daily</changefreq><priority>1</priority></url>
<url><loc>https://jan.ai/cortex/server</loc><lastmod>2024-09-09T08:19:45.722Z</lastmod><changefreq>daily</changefreq><priority>1</priority></url>
<url><loc>https://jan.ai/cortex/text-generation</loc><lastmod>2024-09-09T08:19:45.722Z</lastmod><changefreq>daily</changefreq><priority>1</priority></url>
<url><loc>https://jan.ai/cortex/ts-library</loc><lastmod>2024-09-09T08:19:45.722Z</lastmod><changefreq>daily</changefreq><priority>1</priority></url>
<url><loc>https://jan.ai/cortex/vision</loc><lastmod>2024-09-09T08:19:45.722Z</lastmod><changefreq>daily</changefreq><priority>1</priority></url>
<url><loc>https://jan.ai/cortex/vision/overview</loc><lastmod>2024-09-09T08:19:45.722Z</lastmod><changefreq>daily</changefreq><priority>1</priority></url>
<url><loc>https://jan.ai/docs</loc><lastmod>2024-09-09T08:19:45.722Z</lastmod><changefreq>daily</changefreq><priority>1</priority></url>
<url><loc>https://jan.ai/docs/assistants</loc><lastmod>2024-09-09T08:19:45.722Z</lastmod><changefreq>daily</changefreq><priority>1</priority></url>
<url><loc>https://jan.ai/docs/built-in/llama-cpp</loc><lastmod>2024-09-09T08:19:45.722Z</lastmod><changefreq>daily</changefreq><priority>1</priority></url>
<url><loc>https://jan.ai/docs/built-in/tensorrt-llm</loc><lastmod>2024-09-09T08:19:45.722Z</lastmod><changefreq>daily</changefreq><priority>1</priority></url>
<url><loc>https://jan.ai/docs/data-folder</loc><lastmod>2024-09-09T08:19:45.722Z</lastmod><changefreq>daily</changefreq><priority>1</priority></url>
<url><loc>https://jan.ai/docs/desktop</loc><lastmod>2024-09-09T08:19:45.722Z</lastmod><changefreq>daily</changefreq><priority>1</priority></url>
<url><loc>https://jan.ai/docs/desktop/linux</loc><lastmod>2024-09-09T08:19:45.722Z</lastmod><changefreq>daily</changefreq><priority>1</priority></url>
<url><loc>https://jan.ai/docs/desktop/mac</loc><lastmod>2024-09-09T08:19:45.722Z</lastmod><changefreq>daily</changefreq><priority>1</priority></url>
<url><loc>https://jan.ai/docs/desktop/windows</loc><lastmod>2024-09-09T08:19:45.722Z</lastmod><changefreq>daily</changefreq><priority>1</priority></url>
<url><loc>https://jan.ai/docs/error-codes</loc><lastmod>2024-09-09T08:19:45.722Z</lastmod><changefreq>daily</changefreq><priority>1</priority></url>
<url><loc>https://jan.ai/docs/extensions</loc><lastmod>2024-09-09T08:19:45.722Z</lastmod><changefreq>daily</changefreq><priority>1</priority></url>
<url><loc>https://jan.ai/docs/installing-extension</loc><lastmod>2024-09-09T08:19:45.722Z</lastmod><changefreq>daily</changefreq><priority>1</priority></url>
<url><loc>https://jan.ai/docs/models</loc><lastmod>2024-09-09T08:19:45.722Z</lastmod><changefreq>daily</changefreq><priority>1</priority></url>
<url><loc>https://jan.ai/docs/models/manage-models</loc><lastmod>2024-09-09T08:19:45.722Z</lastmod><changefreq>daily</changefreq><priority>1</priority></url>
<url><loc>https://jan.ai/docs/models/model-parameters</loc><lastmod>2024-09-09T08:19:45.722Z</lastmod><changefreq>daily</changefreq><priority>1</priority></url>
<url><loc>https://jan.ai/docs/quickstart</loc><lastmod>2024-09-09T08:19:45.722Z</lastmod><changefreq>daily</changefreq><priority>1</priority></url>
<url><loc>https://jan.ai/docs/remote-models/anthropic</loc><lastmod>2024-09-09T08:19:45.722Z</lastmod><changefreq>daily</changefreq><priority>1</priority></url>
<url><loc>https://jan.ai/docs/remote-models/azure</loc><lastmod>2024-09-09T08:19:45.722Z</lastmod><changefreq>daily</changefreq><priority>1</priority></url>
<url><loc>https://jan.ai/docs/remote-models/cohere</loc><lastmod>2024-09-09T08:19:45.722Z</lastmod><changefreq>daily</changefreq><priority>1</priority></url>
<url><loc>https://jan.ai/docs/remote-models/generic-openai</loc><lastmod>2024-09-09T08:19:45.722Z</lastmod><changefreq>daily</changefreq><priority>1</priority></url>
<url><loc>https://jan.ai/docs/remote-models/groq</loc><lastmod>2024-09-09T08:19:45.722Z</lastmod><changefreq>daily</changefreq><priority>1</priority></url>
<url><loc>https://jan.ai/docs/remote-models/martian</loc><lastmod>2024-09-09T08:19:45.722Z</lastmod><changefreq>daily</changefreq><priority>1</priority></url>
<url><loc>https://jan.ai/docs/remote-models/mistralai</loc><lastmod>2024-09-09T08:19:45.722Z</lastmod><changefreq>daily</changefreq><priority>1</priority></url>
<url><loc>https://jan.ai/docs/remote-models/nvidia-nim</loc><lastmod>2024-09-09T08:19:45.722Z</lastmod><changefreq>daily</changefreq><priority>1</priority></url>
<url><loc>https://jan.ai/docs/remote-models/openai</loc><lastmod>2024-09-09T08:19:45.722Z</lastmod><changefreq>daily</changefreq><priority>1</priority></url>
<url><loc>https://jan.ai/docs/remote-models/openrouter</loc><lastmod>2024-09-09T08:19:45.722Z</lastmod><changefreq>daily</changefreq><priority>1</priority></url>
<url><loc>https://jan.ai/docs/remote-models/triton</loc><lastmod>2024-09-09T08:19:45.722Z</lastmod><changefreq>daily</changefreq><priority>1</priority></url>
<url><loc>https://jan.ai/docs/settings</loc><lastmod>2024-09-09T08:19:45.722Z</lastmod><changefreq>daily</changefreq><priority>1</priority></url>
<url><loc>https://jan.ai/docs/shortcuts</loc><lastmod>2024-09-09T08:19:45.722Z</lastmod><changefreq>daily</changefreq><priority>1</priority></url>
<url><loc>https://jan.ai/docs/threads</loc><lastmod>2024-09-09T08:19:45.722Z</lastmod><changefreq>daily</changefreq><priority>1</priority></url>
<url><loc>https://jan.ai/docs/tools/retrieval</loc><lastmod>2024-09-09T08:19:45.722Z</lastmod><changefreq>daily</changefreq><priority>1</priority></url>
<url><loc>https://jan.ai/docs/troubleshooting</loc><lastmod>2024-09-09T08:19:45.722Z</lastmod><changefreq>daily</changefreq><priority>1</priority></url>
<url><loc>https://jan.ai/download</loc><lastmod>2024-09-09T08:19:45.722Z</lastmod><changefreq>daily</changefreq><priority>1</priority></url>
<url><loc>https://jan.ai/integrations</loc><lastmod>2024-09-09T08:19:45.722Z</lastmod><changefreq>daily</changefreq><priority>1</priority></url>
<url><loc>https://jan.ai/integrations/coding/continue-dev</loc><lastmod>2024-09-09T08:19:45.722Z</lastmod><changefreq>daily</changefreq><priority>1</priority></url>
<url><loc>https://jan.ai/integrations/function-calling/interpreter</loc><lastmod>2024-09-09T08:19:45.722Z</lastmod><changefreq>daily</changefreq><priority>1</priority></url>
<url><loc>https://jan.ai/integrations/messaging/llmcord</loc><lastmod>2024-09-09T08:19:45.722Z</lastmod><changefreq>daily</changefreq><priority>1</priority></url>
<url><loc>https://jan.ai/integrations/workflow-automation/raycast</loc><lastmod>2024-09-09T08:19:45.722Z</lastmod><changefreq>daily</changefreq><priority>1</priority></url>
<url><loc>https://jan.ai/post/benchmarking-nvidia-tensorrt-llm</loc><lastmod>2024-09-09T08:19:45.722Z</lastmod><changefreq>daily</changefreq><priority>1</priority></url>
<url><loc>https://jan.ai/post/bitdefender</loc><lastmod>2024-09-09T08:19:45.722Z</lastmod><changefreq>daily</changefreq><priority>1</priority></url>
<url><loc>https://jan.ai/post/data-is-moat</loc><lastmod>2024-09-09T08:19:45.722Z</lastmod><changefreq>daily</changefreq><priority>1</priority></url>
<url><loc>https://jan.ai/post/rag-is-not-enough</loc><lastmod>2024-09-09T08:19:45.722Z</lastmod><changefreq>daily</changefreq><priority>1</priority></url>
<url><loc>https://jan.ai/privacy</loc><lastmod>2024-09-09T08:19:45.722Z</lastmod><changefreq>daily</changefreq><priority>1</priority></url>
<url><loc>https://jan.ai/support</loc><lastmod>2024-09-09T08:19:45.722Z</lastmod><changefreq>daily</changefreq><priority>1</priority></url>
</urlset>

4
docs/public/sitemap.xml Normal file
View File

@ -0,0 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<sitemap><loc>https://jan.ai/sitemap-0.xml</loc></sitemap>
</sitemapindex>

View File

@ -0,0 +1,41 @@
'use client'
import { ApiReferenceReact } from '@scalar/api-reference-react'
import { useTheme } from 'nextra-theme-docs'
import { useIsomorphicLayoutEffect } from '@/hooks/useIsomorphicLayoutEffect'
export const APIReference = () => {
const { theme, resolvedTheme } = useTheme()
useIsomorphicLayoutEffect(() => {
if (theme === 'dark') {
localStorage.setItem('isDark', 'true')
} else {
localStorage.setItem('isDark', 'false')
}
if (resolvedTheme === 'dark') {
localStorage.setItem('isDark', 'true')
} else {
localStorage.setItem('isDark', 'false')
}
// eslint-disable-next-line react-hooks/exhaustive-deps
}, [theme, resolvedTheme])
return (
<>
<ApiReferenceReact
configuration={{
spec: {
url: 'https://raw.githubusercontent.com/janhq/docs/main/public/openapi/jan.json',
},
theme: 'alternate',
hideModels: true,
customCss: '.darklight{display:none!important;}',
}}
/>
</>
)
}
export default APIReference

View File

@ -0,0 +1,32 @@
import ThemeImage from '@/components/ThemeImage'
import NewsletterForm from '@/components/NewsletterForm'
import SocialShareButton from '@/components/SocialShareButton'
const CTABlog = () => {
return (
<div className="mt-20 text-center">
<ThemeImage
className="w-28 mx-auto h-auto"
source={{
light: '/assets/images/homepage/mac-system-black.svg',
dark: '/assets/images/homepage/mac-system-white.svg',
}}
alt="App screenshots"
width={800}
height={800}
/>
<h1 className="text-4xl !font-normal leading-tight lg:leading-tight font-serif mt-8">
The Soul of a New Machine
</h1>
<p className="leading-relaxed text-black/60 dark:text-white/60">
{`To stay updated on all of Jan's research, subscribe to The Soul of a New Machine`}
</p>
<div className="mt-4 w-full lg:w-1/2 mx-auto">
<NewsletterForm id={9} />
<SocialShareButton />
</div>
</div>
)
}
export default CTABlog

Some files were not shown because too many files have changed in this diff Show More