-
+ jan.AppImage
@@ -327,6 +327,7 @@ Jan builds on top of other open-source projects:
- [llama.cpp](https://github.com/ggerganov/llama.cpp)
- [LangChain](https://github.com/langchain-ai)
- [TensorRT](https://github.com/NVIDIA/TensorRT)
+- [TensorRT-LLM](https://github.com/NVIDIA/TensorRT-LLM)
## Contact
diff --git a/core/package.json b/core/package.json
index 2f4f6b576..c4d0d475d 100644
--- a/core/package.json
+++ b/core/package.json
@@ -46,7 +46,7 @@
},
"devDependencies": {
"@types/jest": "^29.5.12",
- "@types/node": "^12.0.2",
+ "@types/node": "^20.11.4",
"eslint": "8.57.0",
"eslint-plugin-jest": "^27.9.0",
"jest": "^29.7.0",
diff --git a/core/src/api/index.ts b/core/src/api/index.ts
index f97593934..8e41da0d1 100644
--- a/core/src/api/index.ts
+++ b/core/src/api/index.ts
@@ -33,7 +33,7 @@ export enum AppRoute {
stopServer = 'stopServer',
log = 'log',
logServer = 'logServer',
- systemInformations = 'systemInformations',
+ systemInformation = 'systemInformation',
showToast = 'showToast',
}
@@ -95,6 +95,8 @@ export enum FileManagerRoute {
getUserHomePath = 'getUserHomePath',
fileStat = 'fileStat',
writeBlob = 'writeBlob',
+ mkdir = 'mkdir',
+ rm = 'rm',
}
export type ApiFunction = (...args: any[]) => any
diff --git a/core/src/core.ts b/core/src/core.ts
index b8cbd3162..47c0fe6f2 100644
--- a/core/src/core.ts
+++ b/core/src/core.ts
@@ -1,4 +1,4 @@
-import { DownloadRequest, FileStat, NetworkConfig } from './types'
+import { DownloadRequest, FileStat, NetworkConfig, SystemInformation } from './types'
/**
* Execute a extension module function in main process
@@ -110,7 +110,8 @@ const isSubdirectory: (from: string, to: string) => Promise = (from: st
* Get system information
* @returns {Promise} - A promise that resolves with the system information.
*/
-const systemInformations: () => Promise = () => global.core.api?.systemInformations()
+const systemInformation: () => Promise = () =>
+ global.core.api?.systemInformation()
/**
* Show toast message from browser processes.
@@ -146,7 +147,7 @@ export {
log,
isSubdirectory,
getUserHomePath,
- systemInformations,
+ systemInformation,
showToast,
FileStat,
}
diff --git a/core/src/extension.ts b/core/src/extension.ts
index 22accb4b4..973d4778a 100644
--- a/core/src/extension.ts
+++ b/core/src/extension.ts
@@ -19,6 +19,7 @@ export interface Compatibility {
const ALL_INSTALLATION_STATE = [
'NotRequired', // not required.
'Installed', // require and installed. Good to go.
+ 'Updatable', // require and installed but need to be updated.
'NotInstalled', // require to be installed.
'Corrupted', // require but corrupted. Need to redownload.
] as const
@@ -59,6 +60,13 @@ export abstract class BaseExtension implements ExtensionType {
return undefined
}
+ /**
+ * Determine if the extension is updatable.
+ */
+ updatable(): boolean {
+ return false
+ }
+
/**
* Determine if the prerequisites for the extension are installed.
*
diff --git a/core/src/extensions/ai-engines/LocalOAIEngine.ts b/core/src/extensions/ai-engines/LocalOAIEngine.ts
index 79dbcbf5e..89444ff0f 100644
--- a/core/src/extensions/ai-engines/LocalOAIEngine.ts
+++ b/core/src/extensions/ai-engines/LocalOAIEngine.ts
@@ -1,4 +1,4 @@
-import { executeOnMain, getJanDataFolderPath, joinPath } from '../../core'
+import { executeOnMain, getJanDataFolderPath, joinPath, systemInformation } from '../../core'
import { events } from '../../events'
import { Model, ModelEvent } from '../../types'
import { OAIEngine } from './OAIEngine'
@@ -30,11 +30,11 @@ export abstract class LocalOAIEngine extends OAIEngine {
if (model.engine.toString() !== this.provider) return
const modelFolder = await joinPath([await getJanDataFolderPath(), this.modelFolder, model.id])
-
+ const systemInfo = await systemInformation()
const res = await executeOnMain(this.nodeModule, this.loadModelFunctionName, {
modelFolder,
model,
- })
+ }, systemInfo)
if (res?.error) {
events.emit(ModelEvent.OnModelFail, {
diff --git a/core/src/extensions/monitoring.ts b/core/src/extensions/monitoring.ts
index 8d61580fc..2d75e0218 100644
--- a/core/src/extensions/monitoring.ts
+++ b/core/src/extensions/monitoring.ts
@@ -1,5 +1,5 @@
import { BaseExtension, ExtensionTypeEnum } from '../extension'
-import { GpuSetting, MonitoringInterface } from '../index'
+import { GpuSetting, MonitoringInterface, OperatingSystemInfo } from '../index'
/**
* Monitoring extension for system monitoring.
@@ -16,4 +16,5 @@ export abstract class MonitoringExtension extends BaseExtension implements Monit
abstract getGpuSetting(): Promise
abstract getResourcesInfo(): Promise
abstract getCurrentLoad(): Promise
+ abstract getOsInfo(): Promise
}
diff --git a/core/src/fs.ts b/core/src/fs.ts
index 71538ae9c..dacdbb6d6 100644
--- a/core/src/fs.ts
+++ b/core/src/fs.ts
@@ -37,12 +37,17 @@ const readdirSync = (...args: any[]) => global.core.api?.readdirSync(...args)
*/
const mkdirSync = (...args: any[]) => global.core.api?.mkdirSync(...args)
+const mkdir = (...args: any[]) => global.core.api?.mkdir(...args)
+
/**
* Removes a directory at the specified path.
* @returns {Promise} A Promise that resolves when the directory is removed successfully.
*/
const rmdirSync = (...args: any[]) =>
global.core.api?.rmdirSync(...args, { recursive: true, force: true })
+
+const rm = (path: string) => global.core.api?.rm(path)
+
/**
* Deletes a file from the local file system.
* @param {string} path - The path of the file to delete.
@@ -92,7 +97,9 @@ export const fs = {
existsSync,
readdirSync,
mkdirSync,
+ mkdir,
rmdirSync,
+ rm,
unlinkSync,
appendFileSync,
copyFileSync,
diff --git a/core/src/node/api/processors/fsExt.ts b/core/src/node/api/processors/fsExt.ts
index 4787da65b..9b88cfef9 100644
--- a/core/src/node/api/processors/fsExt.ts
+++ b/core/src/node/api/processors/fsExt.ts
@@ -88,4 +88,28 @@ export class FSExt implements Processor {
})
})
}
+
+ mkdir(path: string): Promise {
+ return new Promise((resolve, reject) => {
+ fs.mkdir(path, { recursive: true }, (err) => {
+ if (err) {
+ reject(err)
+ } else {
+ resolve()
+ }
+ })
+ })
+ }
+
+ rmdir(path: string): Promise {
+ return new Promise((resolve, reject) => {
+ fs.rm(path, { recursive: true }, (err) => {
+ if (err) {
+ reject(err)
+ } else {
+ resolve()
+ }
+ })
+ })
+ }
}
diff --git a/core/src/node/extension/store.ts b/core/src/node/extension/store.ts
index 93b1aeb2b..630756485 100644
--- a/core/src/node/extension/store.ts
+++ b/core/src/node/extension/store.ts
@@ -93,8 +93,7 @@ export function persistExtensions() {
*/
export async function installExtensions(extensions: any) {
const installed: Extension[] = []
- for (const ext of extensions) {
- // Set install options and activation based on input type
+ const installations = extensions.map((ext: any): Promise => {
const isObject = typeof ext === 'object'
const spec = isObject ? [ext.specifier, ext] : [ext]
const activate = isObject ? ext.activate !== false : true
@@ -102,15 +101,17 @@ export async function installExtensions(extensions: any) {
// Install and possibly activate extension
const extension = new Extension(...spec)
if (!extension.origin) {
- continue
+ return Promise.resolve()
}
- await extension._install()
- if (activate) extension.setActive(true)
+ return extension._install().then(() => {
+ if (activate) extension.setActive(true)
+ // Add extension to store if needed
+ addExtension(extension)
+ installed.push(extension)
+ })
+ })
- // Add extension to store if needed
- addExtension(extension)
- installed.push(extension)
- }
+ await Promise.all(installations)
// Return list of all installed extensions
return installed
diff --git a/core/src/node/helper/config.ts b/core/src/node/helper/config.ts
index 06f2b03cd..b5ec2e029 100644
--- a/core/src/node/helper/config.ts
+++ b/core/src/node/helper/config.ts
@@ -82,26 +82,34 @@ export const getJanExtensionsPath = (): string => {
*/
export const physicalCpuCount = async (): Promise => {
const platform = os.platform()
- if (platform === 'linux') {
- const output = await exec('lscpu -p | egrep -v "^#" | sort -u -t, -k 2,4 | wc -l')
- return parseInt(output.trim(), 10)
- } else if (platform === 'darwin') {
- const output = await exec('sysctl -n hw.physicalcpu_max')
- return parseInt(output.trim(), 10)
- } else if (platform === 'win32') {
- const output = await exec('WMIC CPU Get NumberOfCores')
- return output
- .split(os.EOL)
- .map((line: string) => parseInt(line))
- .filter((value: number) => !isNaN(value))
- .reduce((sum: number, number: number) => sum + number, 1)
- } else {
- const cores = os.cpus().filter((cpu: any, index: number) => {
- const hasHyperthreading = cpu.model.includes('Intel')
- const isOdd = index % 2 === 1
- return !hasHyperthreading || isOdd
- })
- return cores.length
+ try {
+ if (platform === 'linux') {
+ const output = await exec('lscpu -p | egrep -v "^#" | sort -u -t, -k 2,4 | wc -l')
+ return parseInt(output.trim(), 10)
+ } else if (platform === 'darwin') {
+ const output = await exec('sysctl -n hw.physicalcpu_max')
+ return parseInt(output.trim(), 10)
+ } else if (platform === 'win32') {
+ const output = await exec('WMIC CPU Get NumberOfCores')
+ return output
+ .split(os.EOL)
+ .map((line: string) => parseInt(line))
+ .filter((value: number) => !isNaN(value))
+ .reduce((sum: number, number: number) => sum + number, 1)
+ } else {
+ const cores = os.cpus().filter((cpu: any, index: number) => {
+ const hasHyperthreading = cpu.model.includes('Intel')
+ const isOdd = index % 2 === 1
+ return !hasHyperthreading || isOdd
+ })
+ return cores.length
+ }
+ } catch (err) {
+ console.warn('Failed to get physical CPU count', err)
+ // Divide by 2 to get rid of hyper threading
+ const coreCount = Math.ceil(os.cpus().length / 2)
+ console.debug('Using node API to get physical CPU count:', coreCount)
+ return coreCount
}
}
@@ -118,7 +126,7 @@ const exec = async (command: string): Promise => {
}
export const getEngineConfiguration = async (engineId: string) => {
- if (engineId !== 'openai') {
+ if (engineId !== 'openai' && engineId !== 'groq') {
return undefined
}
const directoryPath = join(getJanDataFolderPath(), 'engines')
diff --git a/core/src/node/helper/resource.ts b/core/src/node/helper/resource.ts
index c79a63688..faaaace05 100644
--- a/core/src/node/helper/resource.ts
+++ b/core/src/node/helper/resource.ts
@@ -1,6 +1,6 @@
import { SystemResourceInfo } from '../../types'
import { physicalCpuCount } from './config'
-import { log, logServer } from './log'
+import { log } from './log'
export const getSystemResourceInfo = async (): Promise => {
const cpu = await physicalCpuCount()
diff --git a/core/src/types/miscellaneous/systemResourceInfo.ts b/core/src/types/miscellaneous/systemResourceInfo.ts
index f7dd4a82b..fb059b1ba 100644
--- a/core/src/types/miscellaneous/systemResourceInfo.ts
+++ b/core/src/types/miscellaneous/systemResourceInfo.ts
@@ -30,3 +30,27 @@ export type GpuSettingInfo = {
name: string
arch?: string
}
+
+export type SystemInformation = {
+ gpuSetting: GpuSetting
+ osInfo?: OperatingSystemInfo
+}
+
+export const SupportedPlatforms = ['win32', 'linux', 'darwin'] as const
+export type SupportedPlatformTuple = typeof SupportedPlatforms
+export type SupportedPlatform = SupportedPlatformTuple[number]
+
+export type OperatingSystemInfo = {
+ platform: SupportedPlatform | 'unknown'
+ arch: string
+ release: string
+ machine: string
+ version: string
+ totalMem: number
+ freeMem: number
+}
+
+export type CpuCoreInfo = {
+ model: string
+ speed: number
+}
diff --git a/core/src/types/model/modelEntity.ts b/core/src/types/model/modelEntity.ts
index 74568686b..d62a7c387 100644
--- a/core/src/types/model/modelEntity.ts
+++ b/core/src/types/model/modelEntity.ts
@@ -18,6 +18,7 @@ export type ModelInfo = {
export enum InferenceEngine {
nitro = 'nitro',
openai = 'openai',
+ groq = 'groq',
triton_trtllm = 'triton_trtllm',
nitro_tensorrt_llm = 'nitro-tensorrt-llm',
diff --git a/docs/.env.example b/docs/.env.example
index 22f6e715f..56b26dafb 100644
--- a/docs/.env.example
+++ b/docs/.env.example
@@ -3,4 +3,5 @@ UMAMI_PROJECT_API_KEY=xxxx
UMAMI_APP_URL=xxxx
ALGOLIA_API_KEY=xxxx
ALGOLIA_APP_ID=xxxx
-GITHUB_ACCESS_TOKEN=xxxx
\ No newline at end of file
+GITHUB_ACCESS_TOKEN=xxxx
+API_KEY_BREVO=xxxx
\ No newline at end of file
diff --git a/docs/blog/01-january-10-2024-bitdefender-false-positive-flag.mdx b/docs/blog/01-january-10-2024-bitdefender-false-positive-flag.mdx
index ef418ff97..37ed1017d 100644
--- a/docs/blog/01-january-10-2024-bitdefender-false-positive-flag.mdx
+++ b/docs/blog/01-january-10-2024-bitdefender-false-positive-flag.mdx
@@ -5,6 +5,21 @@ slug: /postmortems/january-10-2024-bitdefender-false-positive-flag
tags: [Postmortem]
---
+
+ Jan 10, 2024 Incident Postmortem - Bitdefender False Positive Flag on Jan AI Resolved
+
+
+
+
+
+
+
+
+
+
+
+
+
Following the recent incident related to Jan version 0.4.4 triggering Bitdefender on Windows with Gen:Variant.Tedy.258323 on January 10, 2024, we wanted to provide a comprehensive postmortem and outline the necessary follow-up actions.
## Incident Overview
diff --git a/docs/docs/about/2035.mdx b/docs/docs/about/2035.mdx
index 3af7a3197..2806e7ade 100644
--- a/docs/docs/about/2035.mdx
+++ b/docs/docs/about/2035.mdx
@@ -2,6 +2,20 @@
title: Jan's Vision for 2035
---
+
+ Jan's Vision for 2035
+
+
+
+
+
+
+
+
+
+
+
+
[Jan 2035: A Robotics Company](https://hackmd.io/QIWyYbNNQVWVbupuI3kjAA)
We only have 2 planning parameters:
diff --git a/docs/docs/about/about.md b/docs/docs/about/about.md
index a047ab910..32f4a3e4f 100644
--- a/docs/docs/about/about.md
+++ b/docs/docs/about/about.md
@@ -18,6 +18,20 @@ keywords:
]
---
+
+ About Jan
+
+
+
+
+
+
+
+
+
+
+
+
Jan turns computers into thinking machines to change how we use them.
Jan is created and maintained by Jan Labs, a robotics company.
diff --git a/docs/docs/about/faq.md b/docs/docs/about/faq.md
index 29832e211..b4e05b3a6 100644
--- a/docs/docs/about/faq.md
+++ b/docs/docs/about/faq.md
@@ -1,3 +1,21 @@
+---
+title: Frequently Asked Questions (FAQ) - Jan
+---
+
+
+ Frequently Asked Questions (FAQ)
+
+
+
+
+
+
+
+
+
+
+
+
# Frequently Asked Questions (FAQ)
## What is Jan?
diff --git a/docs/docs/about/roadmap.md b/docs/docs/about/roadmap.md
index 1c789d733..d818aa647 100644
--- a/docs/docs/about/roadmap.md
+++ b/docs/docs/about/roadmap.md
@@ -2,5 +2,19 @@
title: Roadmap
---
+
+ Roadmap
+
+
+
+
+
+
+
+
+
+
+
+
- [ ] [Immediate Roadmap on Github](https://github.com/orgs/janhq/projects/5/views/16)
-- [ ] [Longer-term Roadmap on Discord](https://discord.gg/Ey62mynnYr)
\ No newline at end of file
+- [ ] [Longer-term Roadmap on Discord](https://discord.gg/Ey62mynnYr)
diff --git a/docs/docs/acknowledgements.md b/docs/docs/acknowledgements.md
index c68c4ed86..46418fc79 100644
--- a/docs/docs/acknowledgements.md
+++ b/docs/docs/acknowledgements.md
@@ -17,6 +17,17 @@ keywords:
]
---
+
+
+
+
+
+
+
+
+
+
+
# Acknowledgements
We would like to express our gratitude to the following third-party libraries that have made the development of Jan possible.
@@ -24,3 +35,4 @@ We would like to express our gratitude to the following third-party libraries th
- [llama.cpp](https://github.com/ggerganov/llama.cpp/blob/master/LICENSE)
- [LangChain.js](https://github.com/langchain-ai/langchainjs/blob/main/LICENSE)
- [TensorRT](https://github.com/NVIDIA/TensorRT/blob/main/LICENSE)
+- [TensorRT-LLM](https://github.com/NVIDIA/TensorRT-LLM/blob/main/LICENSE)
diff --git a/docs/docs/community/community.mdx b/docs/docs/community/community.mdx
index d4866490e..7c5ad9367 100644
--- a/docs/docs/community/community.mdx
+++ b/docs/docs/community/community.mdx
@@ -15,6 +15,20 @@ keywords:
]
---
+
+ Jan's Community
+
+
+
+
+
+
+
+
+
+
+
+
## Socials
- [Discord](https://discord.gg/SH3DGmUs6b)
diff --git a/docs/docs/developer/01-overview/01-architecture.md b/docs/docs/developer/01-overview/01-architecture.md
index 432b12537..26a813173 100644
--- a/docs/docs/developer/01-overview/01-architecture.md
+++ b/docs/docs/developer/01-overview/01-architecture.md
@@ -15,6 +15,20 @@ keywords:
]
---
+
+ Jan AI Architecture - Modular and Extensible Framework
+
+
+
+
+
+
+
+
+
+
+
+
:::warning
This page is still under construction, and should be read as a scratchpad
diff --git a/docs/docs/developer/01-overview/02-file-based.md b/docs/docs/developer/01-overview/02-file-based.md
index 653eba3f5..df8450389 100644
--- a/docs/docs/developer/01-overview/02-file-based.md
+++ b/docs/docs/developer/01-overview/02-file-based.md
@@ -15,6 +15,20 @@ keywords:
]
---
+
+ Jan AI File-based Data Persistence Approach
+
+
+
+
+
+
+
+
+
+
+
+
:::warning
This page is still under construction, and should be read as a scratchpad
diff --git a/docs/docs/developer/01-overview/03-user-interface.md b/docs/docs/developer/01-overview/03-user-interface.md
index eb6eac89e..968e2e254 100644
--- a/docs/docs/developer/01-overview/03-user-interface.md
+++ b/docs/docs/developer/01-overview/03-user-interface.md
@@ -15,6 +15,20 @@ keywords:
]
---
+
+ Jan AI User Interface - Customizable UI Kit
+
+
+
+
+
+
+
+
+
+
+
+
:::warning
This page is still under construction, and should be read as a scratchpad
diff --git a/docs/docs/developer/01-overview/04-install-and-prerequisites.md b/docs/docs/developer/01-overview/04-install-and-prerequisites.md
index 9752f7b72..27ce60eba 100644
--- a/docs/docs/developer/01-overview/04-install-and-prerequisites.md
+++ b/docs/docs/developer/01-overview/04-install-and-prerequisites.md
@@ -18,6 +18,20 @@ keywords:
]
---
+
+ Jan AI Installation and Setup Guide - Developer Prerequisites
+
+
+
+
+
+
+
+
+
+
+
+
## Requirements
### Hardware Requirements
diff --git a/docs/docs/developer/01-overview/README.md b/docs/docs/developer/01-overview/README.md
index 7bc3524de..b6f9c0423 100644
--- a/docs/docs/developer/01-overview/README.md
+++ b/docs/docs/developer/01-overview/README.md
@@ -15,6 +15,20 @@ keywords:
]
---
+
+ Jan AI Developer Documentation - Building Extensions and SDK Overview
+
+
+
+
+
+
+
+
+
+
+
+
The following docs are aimed at developers who want to build extensions on top of the Jan Framework.
:::tip
diff --git a/docs/docs/developer/02-build-assistant/01-your-first-assistant.md b/docs/docs/developer/02-build-assistant/01-your-first-assistant.md
index 16b80fc5e..863d275fe 100644
--- a/docs/docs/developer/02-build-assistant/01-your-first-assistant.md
+++ b/docs/docs/developer/02-build-assistant/01-your-first-assistant.md
@@ -17,7 +17,20 @@ keywords:
]
---
+
+ Your First Assistant
+
+
+
+
+
+
+
+
+
+
+
+
:::caution
This is currently under development.
:::
-
diff --git a/docs/docs/developer/03-build-engine/02-engine-anatomy.md b/docs/docs/developer/03-build-engine/02-engine-anatomy.md
index 1e7f559da..2f8c69a04 100644
--- a/docs/docs/developer/03-build-engine/02-engine-anatomy.md
+++ b/docs/docs/developer/03-build-engine/02-engine-anatomy.md
@@ -19,4 +19,4 @@ keywords:
:::caution
This is currently under development.
-:::
+:::
\ No newline at end of file
diff --git a/docs/docs/developer/03-build-engine/asset/plugin.png b/docs/docs/developer/03-build-engine/asset/plugin.png
new file mode 100644
index 000000000..f5f032e0d
Binary files /dev/null and b/docs/docs/developer/03-build-engine/asset/plugin.png differ
diff --git a/docs/docs/developer/04-build-extension/01-your-first-extension.md b/docs/docs/developer/04-build-extension/01-your-first-extension.md
index f89f34053..51c20e4bb 100644
--- a/docs/docs/developer/04-build-extension/01-your-first-extension.md
+++ b/docs/docs/developer/04-build-extension/01-your-first-extension.md
@@ -17,6 +17,20 @@ keywords:
]
---
+
+ Building Your First Jan AI Extension - Quick Start Guide
+
+
+
+
+
+
+
+
+
+
+
+
:::caution
This is currently under development.
:::
@@ -76,13 +90,13 @@ There are a few things to keep in mind when writing your extension code:
In `index.ts`, you will see that the extension function will return a `Promise`.
```typescript
- import { core } from "@janhq/core";
+ import { core } from '@janhq/core'
function onStart(): Promise {
- return core.invokePluginFunc(MODULE_PATH, "run", 0);
+ return core.invokePluginFunc(MODULE_PATH, 'run', 0)
}
```
For more information about the Jan Extension Core module, see the [documentation](https://github.com/janhq/jan/blob/main/core/README.md).
-Now, go ahead and start customizing your extension! Happy coding!
\ No newline at end of file
+Now, go ahead and start customizing your extension! Happy coding!
diff --git a/docs/docs/developer/05-framework/03-engineering/assistants.md b/docs/docs/developer/05-framework/03-engineering/assistants.md
index fa9c593ab..90b52ab38 100644
--- a/docs/docs/developer/05-framework/03-engineering/assistants.md
+++ b/docs/docs/developer/05-framework/03-engineering/assistants.md
@@ -1,5 +1,5 @@
---
-title: "Assistants"
+title: 'Assistants'
description: Jan is a ChatGPT-alternative that runs on your own computer, with a local API server.
keywords:
[
@@ -14,6 +14,19 @@ keywords:
]
---
+
+ Assistants
+
+
+
+
+
+
+
+
+
+
+
:::caution
This is currently under development.
diff --git a/docs/docs/developer/05-framework/03-engineering/chats.md b/docs/docs/developer/05-framework/03-engineering/chats.md
index eb0ae287a..654621e30 100644
--- a/docs/docs/developer/05-framework/03-engineering/chats.md
+++ b/docs/docs/developer/05-framework/03-engineering/chats.md
@@ -14,6 +14,19 @@ keywords:
]
---
+
+ Chats
+
+
+
+
+
+
+
+
+
+
+
:::caution
This is currently under development.
diff --git a/docs/docs/developer/05-framework/03-engineering/engine.md b/docs/docs/developer/05-framework/03-engineering/engine.md
index 653576f1b..8ebfff88d 100644
--- a/docs/docs/developer/05-framework/03-engineering/engine.md
+++ b/docs/docs/developer/05-framework/03-engineering/engine.md
@@ -2,6 +2,19 @@
title: Engine
---
+
+ Engine
+
+
+
+
+
+
+
+
+
+
+
:::caution
Currently Under Development
diff --git a/docs/docs/developer/05-framework/03-engineering/files.md b/docs/docs/developer/05-framework/03-engineering/files.md
index 59ca27ec9..9f572af11 100644
--- a/docs/docs/developer/05-framework/03-engineering/files.md
+++ b/docs/docs/developer/05-framework/03-engineering/files.md
@@ -1,5 +1,5 @@
---
-title: "Files"
+title: 'Files'
description: Jan is a ChatGPT-alternative that runs on your own computer, with a local API server.
keywords:
[
@@ -14,6 +14,19 @@ keywords:
]
---
+
+ Files
+
+
+
+
+
+
+
+
+
+
+
:::warning
Draft Specification: functionality has not been implemented yet.
diff --git a/docs/docs/developer/05-framework/03-engineering/messages.md b/docs/docs/developer/05-framework/03-engineering/messages.md
index 8f2497002..6ddaba45d 100644
--- a/docs/docs/developer/05-framework/03-engineering/messages.md
+++ b/docs/docs/developer/05-framework/03-engineering/messages.md
@@ -14,6 +14,19 @@ keywords:
]
---
+
+ Messages
+
+
+
+
+
+
+
+
+
+
+
:::caution
This is currently under development.
diff --git a/docs/docs/developer/05-framework/03-engineering/models.md b/docs/docs/developer/05-framework/03-engineering/models.md
index 4e4c3c604..dbe134f07 100644
--- a/docs/docs/developer/05-framework/03-engineering/models.md
+++ b/docs/docs/developer/05-framework/03-engineering/models.md
@@ -14,6 +14,19 @@ keywords:
]
---
+
+ Models
+
+
+
+
+
+
+
+
+
+
+
:::caution
This is currently under development.
diff --git a/docs/docs/developer/05-framework/03-engineering/threads.md b/docs/docs/developer/05-framework/03-engineering/threads.md
index a1cd2b4df..f8ba018f8 100644
--- a/docs/docs/developer/05-framework/03-engineering/threads.md
+++ b/docs/docs/developer/05-framework/03-engineering/threads.md
@@ -14,6 +14,19 @@ keywords:
]
---
+
+ Threads
+
+
+
+
+
+
+
+
+
+
+
:::caution
This is currently under development.
diff --git a/docs/docs/developer/05-framework/03-product/chat.md b/docs/docs/developer/05-framework/03-product/chat.md
index b0dcce2d6..3b98485b8 100644
--- a/docs/docs/developer/05-framework/03-product/chat.md
+++ b/docs/docs/developer/05-framework/03-product/chat.md
@@ -14,6 +14,19 @@ keywords:
]
---
+
+ Chat
+
+
+
+
+
+
+
+
+
+
+
## Overview
A home screen for users to chat with [assistants](/docs/engineering/assistants) via conversation [threads](/docs/engineering/threads).
diff --git a/docs/docs/developer/05-framework/03-product/hub.md b/docs/docs/developer/05-framework/03-product/hub.md
index 7171f8378..ea8dd81a5 100644
--- a/docs/docs/developer/05-framework/03-product/hub.md
+++ b/docs/docs/developer/05-framework/03-product/hub.md
@@ -14,6 +14,19 @@ keywords:
]
---
+
+ Hub
+
+
+
+
+
+
+
+
+
+
+
## Overview
The Hub is like a store for everything, where users can discover and download models, assistants, and more.
diff --git a/docs/docs/developer/05-framework/03-product/jan.md b/docs/docs/developer/05-framework/03-product/jan.md
index 9e8973360..b906be09d 100644
--- a/docs/docs/developer/05-framework/03-product/jan.md
+++ b/docs/docs/developer/05-framework/03-product/jan.md
@@ -14,6 +14,19 @@ keywords:
]
---
+
+ Jan (The Default Assistant)
+
+
+
+
+
+
+
+
+
+
+
Jan ships with a default assistant "Jan" that lets users chat with any open source model out-of-the-box.
This assistant is defined in `/jan`. It is a generic assistant to illustrate power of Jan. In the future, it will support additional features e.g. multi-assistant conversations
diff --git a/docs/docs/developer/05-framework/03-product/settings.md b/docs/docs/developer/05-framework/03-product/settings.md
index 514139a00..515b5e802 100644
--- a/docs/docs/developer/05-framework/03-product/settings.md
+++ b/docs/docs/developer/05-framework/03-product/settings.md
@@ -14,6 +14,19 @@ keywords:
]
---
+
+ Settings
+
+
+
+
+
+
+
+
+
+
+
## Overview
A settings page for users to add extensions, configure model settings, change app appearance, add keyboard shortcuts, and a plethora of other personalizations.
diff --git a/docs/docs/developer/05-framework/03-product/system-monitor.md b/docs/docs/developer/05-framework/03-product/system-monitor.md
index 761d9a7bf..15dae09ea 100644
--- a/docs/docs/developer/05-framework/03-product/system-monitor.md
+++ b/docs/docs/developer/05-framework/03-product/system-monitor.md
@@ -14,6 +14,19 @@ keywords:
]
---
+
+ System Monitor
+
+
+
+
+
+
+
+
+
+
+
## Overview
An activity screen to monitor system health and running models.
diff --git a/docs/docs/events/hcmc-oct23.md b/docs/docs/events/hcmc-oct23.md
index 73898efcd..e70329b2d 100644
--- a/docs/docs/events/hcmc-oct23.md
+++ b/docs/docs/events/hcmc-oct23.md
@@ -1,10 +1,23 @@
---
title: "Jan's AI Hacker House (Ho Chi Minh City)"
-description: "24-27 Oct 2023, District 3, HCMC. AI-focused talks, workshops and social events. Hosted by Jan.ai"
+description: '24-27 Oct 2023, District 3, HCMC. AI-focused talks, workshops and social events. Hosted by Jan.ai'
slug: /events/hcmc-oct23
image: /img/hcmc-launch-party.png
---
+
+ Jan's AI Hacker House (Ho Chi Minh City)
+
+
+
+
+
+
+
+
+
+
+

🎉 Join us at our Friday Launch Party for an evening of AI talks from other builders! [(RSVP here)](https://jan-launch-party.eventbrite.sg/) 🎉
diff --git a/docs/docs/events/nvidia-llm-day-nov-23.md b/docs/docs/events/nvidia-llm-day-nov-23.md
index d467dcb6e..f739fb4ff 100644
--- a/docs/docs/events/nvidia-llm-day-nov-23.md
+++ b/docs/docs/events/nvidia-llm-day-nov-23.md
@@ -1,21 +1,33 @@
---
-title: "Nov 23: Nvidia GenAI Day"
-description: Nvidia's LLM Day
+title: 'Nov 23: Nvidia GenAI Day'
+description: Nvidia's LLM Day
---
+
+ Nov 23: Nvidia GenAI Day
+
+
+
+
+
+
+
+
+
+
+

## Nvidia GenAI Innovation Day
-Jan will be at Nvidia's GenAI Innovation Day in Nov '23, focusing on Enterprise use-cases of LLMs.
+Jan will be at Nvidia's GenAI Innovation Day in Nov '23, focusing on Enterprise use-cases of LLMs.
### Location
-- JW Marriott Hanoi Hotel
+- JW Marriott Hanoi Hotel
- 8:30am November 8th 2023
- Registration: [https://gmcgroup.com.vn/nvidia-genai-event/](https://gmcgroup.com.vn/nvidia-genai-event/)
### Programme

-
diff --git a/docs/docs/guides/advanced-settings/advanced-settings.mdx b/docs/docs/guides/advanced-settings/advanced-settings.mdx
index ae3244cda..f59d2b4ce 100644
--- a/docs/docs/guides/advanced-settings/advanced-settings.mdx
+++ b/docs/docs/guides/advanced-settings/advanced-settings.mdx
@@ -15,6 +15,20 @@ keywords:
]
---
+
+ Advanced Settings
+
+
+
+
+
+
+
+
+
+
+
+
import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';
diff --git a/docs/docs/guides/advanced-settings/http-proxy.mdx b/docs/docs/guides/advanced-settings/http-proxy.mdx
index 23f357e8b..b2b8c9e24 100644
--- a/docs/docs/guides/advanced-settings/http-proxy.mdx
+++ b/docs/docs/guides/advanced-settings/http-proxy.mdx
@@ -16,6 +16,19 @@ keywords:
]
---
+
+ HTTPS Proxy
+
+
+
+
+
+
+
+
+
+
+
## Why HTTPS Proxy?
@@ -23,7 +36,8 @@ HTTPS Proxy encrypts data between your browser and the internet, making it hard
:::note
-When configuring Jan using an HTTPS proxy, the speed of the downloading model may be affected due to the encryption and decryption process. It also depends on the networking of the cloud service provider.
+- When configuring Jan using an HTTPS proxy, the speed of the downloading model may be affected due to the encryption and decryption process. It also depends on the networking of the cloud service provider.
+- HTTPS Proxy does not affect the remote model usage.
:::
diff --git a/docs/docs/guides/best-practices.mdx b/docs/docs/guides/best-practices.mdx
index 9dabef8dc..a170e07de 100644
--- a/docs/docs/guides/best-practices.mdx
+++ b/docs/docs/guides/best-practices.mdx
@@ -17,6 +17,18 @@ keywords:
]
---
+
+ Best Practices - Jan Guides
+
+
+
+
+
+
+
+
+
+
Jan is a versatile platform offering solutions for integrating AI locally across various platforms. This guide outlines best practices for developers, analysts, and AI enthusiasts to enhance their experience with Jan when adding AI locally to their computers. Implementing these practices will optimize the performance of AI models.
## Follow the Quickstart Guide
diff --git a/docs/docs/guides/common-error/broken-build.mdx b/docs/docs/guides/common-error/broken-build.mdx
index f388257ac..ffa470e22 100644
--- a/docs/docs/guides/common-error/broken-build.mdx
+++ b/docs/docs/guides/common-error/broken-build.mdx
@@ -17,6 +17,20 @@ keywords:
]
---
+
+ Broken Build
+
+
+
+
+
+
+
+
+
+
+
+
import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';
@@ -67,9 +81,13 @@ This guide provides you steps to troubleshoot and to resolve the issue where you
### 2. Delete Application Data, Cache, and User Data
```sh
- # You can delete the `/Jan` directory in Windows's AppData Directory by visiting the following path `%APPDATA%\Jan`
- cd C:\Users\%USERNAME%\AppData\Roaming
- rmdir /S jan
+ # Delete your own user data
+ cd ~ # Or where you moved the Jan Data Folder to
+ rm -r ./jan
+
+ # Delete Application Cache
+ cd C:\Users\YOUR_USERNAME\AppData\Roaming
+ rm -r ./Jan
```
### 3. Additional Step for Versions Before 0.4.2
@@ -156,4 +174,4 @@ By following these steps, you can cleanly uninstall and reinstall Jan, ensuring
Before reinstalling Jan, ensure it's completely removed from all shared spaces if it's installed on multiple user accounts on your device.
-:::
\ No newline at end of file
+:::
diff --git a/docs/docs/guides/common-error/not-using-gpu.mdx b/docs/docs/guides/common-error/not-using-gpu.mdx
index a7dd788f8..acc359093 100644
--- a/docs/docs/guides/common-error/not-using-gpu.mdx
+++ b/docs/docs/guides/common-error/not-using-gpu.mdx
@@ -17,6 +17,20 @@ keywords: [
]
---
+
+ Troubleshooting NVIDIA GPU
+
+
+
+
+
+
+
+
+
+
+
+
import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';
diff --git a/docs/docs/guides/error-codes/how-to-get-error-logs.mdx b/docs/docs/guides/error-codes/how-to-get-error-logs.mdx
index 045468e33..aeec5b183 100644
--- a/docs/docs/guides/error-codes/how-to-get-error-logs.mdx
+++ b/docs/docs/guides/error-codes/how-to-get-error-logs.mdx
@@ -17,6 +17,20 @@ keywords:
]
---
+
+ How to Get Error Logs
+
+
+
+
+
+
+
+
+
+
+
+
To get the error logs of your Jan application, follow the steps below:
### Jan Application
1. Navigate to the main dashboard.
diff --git a/docs/docs/guides/error-codes/no-assistant-available.mdx b/docs/docs/guides/error-codes/no-assistant-available.mdx
index 31d9a75e9..01f2cf6a2 100644
--- a/docs/docs/guides/error-codes/no-assistant-available.mdx
+++ b/docs/docs/guides/error-codes/no-assistant-available.mdx
@@ -17,6 +17,20 @@ keywords:
]
---
+
+ No Assistant Available
+
+
+
+
+
+
+
+
+
+
+
+
When you encounter the following error message:
```
No assistant available.
diff --git a/docs/docs/guides/error-codes/permission-denied.mdx b/docs/docs/guides/error-codes/permission-denied.mdx
index 1d41d3b03..d5cac5784 100644
--- a/docs/docs/guides/error-codes/permission-denied.mdx
+++ b/docs/docs/guides/error-codes/permission-denied.mdx
@@ -17,7 +17,21 @@ keywords:
]
---
-When running Jan, you might encounter the following error message:
+
+ Resolving "Permission Denied" Error in Jan AI
+
+
+
+
+
+
+
+
+
+
+
+
+When you run Jan, you may encounter the following error:
```
Uncaught (in promise) Error: Error invoking layout-480796bff433a3a3.js:538 remote method 'installExtension':
diff --git a/docs/docs/guides/error-codes/something-amiss.mdx b/docs/docs/guides/error-codes/something-amiss.mdx
index 0975754e3..51b8c0cf4 100644
--- a/docs/docs/guides/error-codes/something-amiss.mdx
+++ b/docs/docs/guides/error-codes/something-amiss.mdx
@@ -4,6 +4,18 @@ sidebar_position: 4
description: A step-by-step guide to resolve an unspecified or general error.
---
+
+ Something's Amiss
+
+
+
+
+
+
+
+
+
+
import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';
diff --git a/docs/docs/guides/error-codes/stuck-on-loading-model.mdx b/docs/docs/guides/error-codes/stuck-on-loading-model.mdx
index 86a16b5fc..a44e93919 100644
--- a/docs/docs/guides/error-codes/stuck-on-loading-model.mdx
+++ b/docs/docs/guides/error-codes/stuck-on-loading-model.mdx
@@ -17,6 +17,18 @@ keywords:
]
---
+
+ Stuck on Loading Model
+
+
+
+
+
+
+
+
+
+
## 1. Issue: Model Loading Stuck Due To Missing Windows Management Instrumentation Command-line (WMIC)
Encountering a stuck-on-loading model issue in Jan is caused by errors related to the `Windows Management Instrumentation Command-line (WMIC)` path not being included in the system's PATH environment variable.
diff --git a/docs/docs/guides/error-codes/thread-disappreance.mdx b/docs/docs/guides/error-codes/thread-disappreance.mdx
index 06235df56..edae02ac0 100644
--- a/docs/docs/guides/error-codes/thread-disappreance.mdx
+++ b/docs/docs/guides/error-codes/thread-disappreance.mdx
@@ -17,6 +17,18 @@ keywords:
]
---
+
+ Thread Disappearance
+
+
+
+
+
+
+
+
+
+
When you encounter the error of old threads suddenly disappear. This can happen when a new, unintentional file is created in `/jan/threads`.
It can be resolved through the following steps:
diff --git a/docs/docs/guides/error-codes/undefined-issue.mdx b/docs/docs/guides/error-codes/undefined-issue.mdx
index 223f686d1..cf0814977 100644
--- a/docs/docs/guides/error-codes/undefined-issue.mdx
+++ b/docs/docs/guides/error-codes/undefined-issue.mdx
@@ -17,6 +17,18 @@ keywords:
]
---
+
+ Undefined Issue
+
+
+
+
+
+
+
+
+
+
Encountering an `undefined issue` in Jan is caused by errors related to the Nitro tool or other internal processes. It can be resolved through the following steps:
1. Clearing the Jan folder and then reopen the application to determine if the problem persists
diff --git a/docs/docs/guides/error-codes/unexpected-token.mdx b/docs/docs/guides/error-codes/unexpected-token.mdx
index 4a00e447d..f62da648b 100644
--- a/docs/docs/guides/error-codes/unexpected-token.mdx
+++ b/docs/docs/guides/error-codes/unexpected-token.mdx
@@ -17,6 +17,18 @@ keywords:
]
---
+
+ Unexpected Token
+
+
+
+
+
+
+
+
+
+
Encountering the `Unexpected token` error when initiating a chat with OpenAI models mainly caused by either your OpenAI key or where you access your OpenAI from. This issue can be solved through the following steps:
1. Obtain an OpenAI API key from [OpenAI's developer platform](https://platform.openai.com/) and integrate it into your application.
diff --git a/docs/docs/guides/extensions/setup-ext.mdx b/docs/docs/guides/extensions/setup-ext.mdx
index c080283e9..aae762663 100644
--- a/docs/docs/guides/extensions/setup-ext.mdx
+++ b/docs/docs/guides/extensions/setup-ext.mdx
@@ -16,6 +16,19 @@ keywords:
]
---
+
+ Configuring Extension Settings in Jan AI - User Guide
+
+
+
+
+
+
+
+
+
+
+
The current Jan Desktop Client has some default extensions built on top of this framework to enhance the user experience. In this guide, we will show you the list of default extensions and how to configure extension settings.
diff --git a/docs/docs/guides/faq.mdx b/docs/docs/guides/faq.mdx
index 7e3d7d13d..21cf1a232 100644
--- a/docs/docs/guides/faq.mdx
+++ b/docs/docs/guides/faq.mdx
@@ -17,6 +17,18 @@ keywords:
]
---
+
+ FAQs - Jan Guides
+
+
+
+
+
+
+
+
+
+
## General Issues
- **Why can't I download models like Pandora 11B Q4 and Solar Instruct 10.7B Q4?**
diff --git a/docs/docs/guides/install.mdx b/docs/docs/guides/install.mdx
index 782f465ce..e4e863c1d 100644
--- a/docs/docs/guides/install.mdx
+++ b/docs/docs/guides/install.mdx
@@ -16,6 +16,18 @@ keywords:
]
---
+
+ Installation - Jan Guides
+
+
+
+
+
+
+
+
+
+
import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';
import installImageURL from './assets/jan-ai-download.png';
@@ -24,7 +36,10 @@ import installImageURL from './assets/jan-ai-download.png';
### Pre-requisites
- Ensure that your MacOS version is 13 or higher to run Jan.
+ Before installing Jan, ensure :
+ - You have a Mac with an Apple Silicon Processor.
+ - Homebrew and its dependencies are installed. (for Installing Jan with Homebrew Package)
+ - Your macOS version is 10.15 or higher.
### Stable Releases
@@ -42,9 +57,16 @@ import installImageURL from './assets/jan-ai-download.png';
To enable the experimental mode, go to **Settings** > **Advanced Settings** and toggle the **Experimental Mode**
+ ### Install with Homebrew
+ Install Jan with the following Homebrew command:
+
+ ```brew
+ brew install --cask jan
+ ```
+
:::warning
-If you are stuck in a broken build, go to the [Broken Build](/guides/common-error/broken-build) section of Common Errors.
+Homebrew package installation is currently limited to **Apple Silicon Macs**, with upcoming support for Windows and Linux.
:::
diff --git a/docs/docs/guides/integration/azure.mdx b/docs/docs/guides/integration/azure.mdx
index 6c344a199..fa22549de 100644
--- a/docs/docs/guides/integration/azure.mdx
+++ b/docs/docs/guides/integration/azure.mdx
@@ -17,6 +17,18 @@ keywords:
]
---
+
+ Azure OpenAI
+
+
+
+
+
+
+
+
+
+
## How to Integrate Azure OpenAI with Jan
The [Azure OpenAI Service](https://learn.microsoft.com/en-us/azure/ai-services/openai/overview?source=docs) offers robust APIs, making it simple for you to incorporate OpenAI's language models into your applications. You can integrate Azure OpenAI with Jan by following the steps below:
diff --git a/docs/docs/guides/integration/discord.mdx b/docs/docs/guides/integration/discord.mdx
index 5cf846883..79ada5396 100644
--- a/docs/docs/guides/integration/discord.mdx
+++ b/docs/docs/guides/integration/discord.mdx
@@ -4,6 +4,18 @@ sidebar_position: 5
description: A step-by-step guide on how to integrate Jan with a Discord bot.
---
+
+ Discord
+
+
+
+
+
+
+
+
+
+
## How to Integrate Discord Bot with Jan
Discord bot can enhances your discord server interactions. By integrating Jan with it, you can significantly boost responsiveness and user engaggement in your discord server.
diff --git a/docs/docs/guides/integration/groq.mdx b/docs/docs/guides/integration/groq.mdx
index a57bf16dd..b1af58c9f 100644
--- a/docs/docs/guides/integration/groq.mdx
+++ b/docs/docs/guides/integration/groq.mdx
@@ -17,6 +17,18 @@ keywords:
]
---
+
+ Groq
+
+
+
+
+
+
+
+
+
+
## How to Integrate Mistral AI with Jan
This guide provides step-by-step instructions on integrating the Groq API with Jan, enabling users to leverage Groq's capabilities within Jan's conversational interface.
diff --git a/docs/docs/guides/integration/lmstudio.mdx b/docs/docs/guides/integration/lmstudio.mdx
index 33e48f33a..6fdf36cee 100644
--- a/docs/docs/guides/integration/lmstudio.mdx
+++ b/docs/docs/guides/integration/lmstudio.mdx
@@ -16,6 +16,18 @@ keywords:
]
---
+
+ LM Studio
+
+
+
+
+
+
+
+
+
+
## How to Integrate LM Studio with Jan
[LM Studio](https://lmstudio.ai/) enables you to explore, download, and run local Large Language Models (LLMs). You can integrate Jan with LM Studio using two methods:
diff --git a/docs/docs/guides/integration/mistral.mdx b/docs/docs/guides/integration/mistral.mdx
index a44e23205..129bdee21 100644
--- a/docs/docs/guides/integration/mistral.mdx
+++ b/docs/docs/guides/integration/mistral.mdx
@@ -16,6 +16,18 @@ keywords:
]
---
+
+ Mistral AI
+
+
+
+
+
+
+
+
+
+
## How to Integrate Mistral AI with Jan
[Mistral AI](https://docs.mistral.ai/) provides two ways to use their Large Language Models (LLM):
diff --git a/docs/docs/guides/integration/ollama.mdx b/docs/docs/guides/integration/ollama.mdx
index 6c55bc856..c3ee4cd0f 100644
--- a/docs/docs/guides/integration/ollama.mdx
+++ b/docs/docs/guides/integration/ollama.mdx
@@ -16,6 +16,18 @@ keywords:
]
---
+
+ Ollama
+
+
+
+
+
+
+
+
+
+
## How to Integrate Ollama with Jan
Ollama provides you with largen language that you can run locally. There are two methods to integrate Ollama with Jan:
diff --git a/docs/docs/guides/integration/openinterpreter.mdx b/docs/docs/guides/integration/openinterpreter.mdx
index a844155f5..ba77738e3 100644
--- a/docs/docs/guides/integration/openinterpreter.mdx
+++ b/docs/docs/guides/integration/openinterpreter.mdx
@@ -4,6 +4,17 @@ sidebar_position: 6
description: A step-by-step guide on how to integrate Jan with Open Interpreter.
---
+
+ Open Interpreter
+
+
+
+
+
+
+
+
+
## How to Integrate Open Interpreter with Jan
diff --git a/docs/docs/guides/integration/openrouter.mdx b/docs/docs/guides/integration/openrouter.mdx
index 2189db0d9..e095a42f1 100644
--- a/docs/docs/guides/integration/openrouter.mdx
+++ b/docs/docs/guides/integration/openrouter.mdx
@@ -4,6 +4,17 @@ sidebar_position: 2
description: A step-by-step guide on how to integrate Jan with OpenRouter.
---
+
+ OpenRouter
+
+
+
+
+
+
+
+
+
## How to Integrate OpenRouter with Jan
@@ -16,7 +27,7 @@ To connect Jan with OpenRouter for accessing remote Large Language Models (LLMs)
1. Find your API keys in the [OpenRouter API Key](https://openrouter.ai/keys).
2. Set the OpenRouter API key in `~/jan/engines/openai.json` file.
-### Step 2: MModel Configuration
+### Step 2: Model Configuration
1. Go to the directory `~/jan/models`.
2. Make a new folder called `openrouter-(modelname)`, like `openrouter-dolphin-mixtral-8x7b`.
diff --git a/docs/docs/guides/integration/raycast.mdx b/docs/docs/guides/integration/raycast.mdx
index a626b0061..4da6e849b 100644
--- a/docs/docs/guides/integration/raycast.mdx
+++ b/docs/docs/guides/integration/raycast.mdx
@@ -4,6 +4,17 @@ sidebar_position: 4
description: A step-by-step guide on how to integrate Jan with Raycast.
---
+
+ Raycast
+
+
+
+
+
+
+
+
+
## How to Integrate Raycast
[Raycast](https://www.raycast.com/) is a productivity tool designed for macOS that enhances workflow efficiency by providing quick access to various tasks and functionalities through a keyboard-driven interface. To integrate Raycast with Jan, follow the steps below:
diff --git a/docs/docs/guides/integration/vscode.mdx b/docs/docs/guides/integration/vscode.mdx
index 0bc112186..05b141180 100644
--- a/docs/docs/guides/integration/vscode.mdx
+++ b/docs/docs/guides/integration/vscode.mdx
@@ -17,6 +17,18 @@ keywords:
]
---
+
+ Continue
+
+
+
+
+
+
+
+
+
+
import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';
diff --git a/docs/docs/guides/models-list.mdx b/docs/docs/guides/models-list.mdx
index cd7107a92..7d80c0220 100644
--- a/docs/docs/guides/models-list.mdx
+++ b/docs/docs/guides/models-list.mdx
@@ -3,6 +3,18 @@ title: Pre-configured Models
sidebar_position: 3
---
+
+ Pre-configured Models - Jan Guides
+
+
+
+
+
+
+
+
+
+
## Overview
Jan provides various pre-configured AI models with different capabilities. Please see the following list for details.
diff --git a/docs/docs/guides/models/customize-engine.mdx b/docs/docs/guides/models/customize-engine.mdx
index 2f54204a8..91d9615f3 100644
--- a/docs/docs/guides/models/customize-engine.mdx
+++ b/docs/docs/guides/models/customize-engine.mdx
@@ -17,6 +17,18 @@ keywords:
]
---
+
+ Customize Engine Settings
+
+
+
+
+
+
+
+
+
+
import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';
diff --git a/docs/docs/guides/models/import-models.mdx b/docs/docs/guides/models/import-models.mdx
index 116c63fb7..1c131503f 100644
--- a/docs/docs/guides/models/import-models.mdx
+++ b/docs/docs/guides/models/import-models.mdx
@@ -1,6 +1,5 @@
---
title: Manual Import
-slug: /guides/using-models/import-manually/
sidebar_position: 3
description: A step-by-step guide on how to perform manual import feature.
keywords:
@@ -18,6 +17,18 @@ keywords:
]
---
+
+ Manual Import
+
+
+
+
+
+
+
+
+
+
import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';
import janModel from './assets/jan-model-hub.png';
@@ -25,6 +36,23 @@ import janModel from './assets/jan-model-hub.png';
This guide will show you how to perform manual import. In this guide, we are using a GGUF model from [HuggingFace](https://huggingface.co/) and our latest model, [Trinity](https://huggingface.co/janhq/trinity-v1-GGUF), as an example.
+## Newer versions - nightly versions and v0.4.8+
+
+Starting with version 0.4.8, Jan has introduced the capability to import models using a UI drag-and-drop method. This allows you to import models directly into the Jan application UI by dragging the `.GGUF` file from your directory into the Jan application.
+
+### 1. Get the Model
+Download the model from HuggingFace in the `.GGUF` format.
+
+### 2. Import the Model
+1. Open your Jan application.
+2. Click the **Import Model** button.
+3. Open your downloaded model.
+4. Drag the `.GGUF` file from your directory into the Jan **Import Model** window.
+
+### 3. Done!
+
+If your model doesn't show up in the **Model Selector** in conversations, **restart the app** or contact us via our [Discord community](https://discord.gg/Dt7MxDyNNZ).
+
## Newer versions - nightly versions and v0.4.7+
Starting from version 0.4.7, Jan has introduced the capability to import models using an absolute file path. It allows you to import models from any directory on your computer.
diff --git a/docs/docs/guides/models/integrate-remote.mdx b/docs/docs/guides/models/integrate-remote.mdx
index af881f999..1a0435926 100644
--- a/docs/docs/guides/models/integrate-remote.mdx
+++ b/docs/docs/guides/models/integrate-remote.mdx
@@ -18,6 +18,18 @@ keywords:
]
---
+
+ Remote Server Integration
+
+
+
+
+
+
+
+
+
+
This guide will show you how to configure Jan as a client and point it to any remote & local (self-hosted) API server.
## OpenAI Platform Configuration
diff --git a/docs/docs/guides/providers/llama-cpp.md b/docs/docs/guides/providers/llama-cpp.md
index d2b0daa2a..6e1e294b0 100644
--- a/docs/docs/guides/providers/llama-cpp.md
+++ b/docs/docs/guides/providers/llama-cpp.md
@@ -3,8 +3,20 @@ title: llama.cpp
slug: /guides/providers/llama-cpp
---
+
+ llama.cpp - Jan Guides
+
+
+
+
+
+
+
+
+
+
## Overview
[Nitro](https://github.com/janhq/nitro) is an inference server on top of [llama.cpp](https://github.com/ggerganov/llama.cpp). It provides an OpenAI-compatible API, queue, & scaling.
-Nitro is the default AI engine downloaded with Jan. There is no additional setup needed.
\ No newline at end of file
+Nitro is the default AI engine downloaded with Jan. There is no additional setup needed.
diff --git a/docs/docs/guides/providers/tensorrt-llm.md b/docs/docs/guides/providers/tensorrt-llm.md
index 52da83b36..b0485fd57 100644
--- a/docs/docs/guides/providers/tensorrt-llm.md
+++ b/docs/docs/guides/providers/tensorrt-llm.md
@@ -3,11 +3,23 @@ title: TensorRT-LLM
slug: /guides/providers/tensorrt-llm
---
+
+ TensorRT-LLM - Jan Guides
+
+
+
+
+
+
+
+
+
+
Users with Nvidia GPUs can get **20-40% faster\* token speeds** on their laptop or desktops by using [TensorRT-LLM](https://github.com/NVIDIA/TensorRT-LLM). The greater implication is that you are running FP16, which is also more accurate than quantized models.
This guide walks you through how to install Jan's official [TensorRT-LLM Extension](https://github.com/janhq/nitro-tensorrt-llm). This extension uses [Nitro-TensorRT-LLM](https://github.com/janhq/nitro-tensorrt-llm) as the AI engine, instead of the default [Nitro-Llama-CPP](https://github.com/janhq/nitro). It includes an efficient C++ server to natively execute the [TRT-LLM C++ runtime](https://nvidia.github.io/TensorRT-LLM/gpt_runtime.html). It also comes with additional feature and performance improvements like OpenAI compatibility, tokenizer improvements, and queues.
-*Compared to using LlamaCPP engine.
+\*Compared to using LlamaCPP engine.
:::warning
This feature is only available for Windows users. Linux is coming soon.
@@ -37,6 +49,7 @@ ls ~\jan\extensions\@janhq\tensorrt-llm-extension\dist\bin
```
## Download a Compatible Model
+
TensorRT-LLM can only run models in `TensorRT` format. These models, aka "TensorRT Engines", are prebuilt specifically for each target OS+GPU architecture.
We offer a handful of precompiled models for Ampere and Ada cards that you can immediately download and play with:
@@ -47,7 +60,7 @@ We offer a handful of precompiled models for Ampere and Ada cards that you can i

3. Click use and start chatting!
-4. You may need to allow Nitro in your network
+4. You may need to allow Nitro in your network

@@ -57,7 +70,7 @@ If you are our nightly builds, you may have to reinstall the TensorRT-LLM extens
## Configure Settings
-You can customize the default parameters for how Jan runs TensorRT-LLM.
+You can customize the default parameters for how Jan runs TensorRT-LLM.
:::info
coming soon
diff --git a/docs/docs/guides/quickstart.mdx b/docs/docs/guides/quickstart.mdx
index 84612716a..5fea2f978 100644
--- a/docs/docs/guides/quickstart.mdx
+++ b/docs/docs/guides/quickstart.mdx
@@ -16,6 +16,18 @@ keywords:
]
---
+
+ Quickstart - Jan Docs
+
+
+
+
+
+
+
+
+
+
import installImageURL from './assets/jan-ai-quickstart.png';
import flow from './assets/quick.png';
diff --git a/docs/docs/guides/start-server.mdx b/docs/docs/guides/start-server.mdx
index d293bc646..8d394c9d4 100644
--- a/docs/docs/guides/start-server.mdx
+++ b/docs/docs/guides/start-server.mdx
@@ -4,6 +4,17 @@ sidebar_position: 4
description: A step-by-step guide to start Jan Local Server.
---
+
+ Local Server - Jan Docs
+
+
+
+
+
+
+
+
+
Jan provides a built-in API server that can be used as a drop-in for OpenAI's API local replacement. This guide will walk you through on how to start the local server and use it to make request to the local server.
diff --git a/docs/docs/guides/thread.mdx b/docs/docs/guides/thread.mdx
index fdd8fb603..4852aa0c2 100644
--- a/docs/docs/guides/thread.mdx
+++ b/docs/docs/guides/thread.mdx
@@ -5,6 +5,17 @@ hide_table_of_contents: true
description: Manage your interaction with AI locally.
---
+
+ Thread Management - Jan Docs
+
+
+
+
+
+
+
+
+
Jan provides a straightforward and private solution for managing your threads with AI on your own device. As you interact with AI using Jan, you'll accumulate a history of threads.
Jan offers easy tools to organize, delete, or review your past threads with AI. This guide will show you how to keep your threads private and well-organized.
diff --git a/docs/docs/hardware/community.md b/docs/docs/hardware/community.md
index e1825b24b..5ba920d89 100644
--- a/docs/docs/hardware/community.md
+++ b/docs/docs/hardware/community.md
@@ -1,12 +1,36 @@
---
title: Hardware Examples
description: Jan is a ChatGPT-alternative that runs on your own computer, with a local API server.
-keywords: [Jan AI, Jan, ChatGPT alternative, local AI, private AI, conversational AI, no-subscription fee, large language model ]
+keywords:
+ [
+ Jan AI,
+ Jan,
+ ChatGPT alternative,
+ local AI,
+ private AI,
+ conversational AI,
+ no-subscription fee,
+ large language model,
+ ]
---
+
+ Hardware Examples
+
+
+
+
+
+
+
+
+
+
+
+
## Add your own example
-Add your own examples to this page by creating a new file in the `docs/docs/hardware/examples` directory.
+Add your own examples to this page by creating a new file in the `docs/docs/hardware/examples` directory.
```shell
docs
@@ -18,9 +42,10 @@ docs
// highlight-next-line
└── .md
```
+
### File and Title Convention
-We use a specific naming convention for the file name.
+We use a specific naming convention for the file name.
```shell
# Filename
@@ -52,4 +77,4 @@ You are allowed to include affiliate links in your example.
## Longer-Term
-We will likely build a simple web app to make it easier to add your own examples, sort and retrieve.
\ No newline at end of file
+We will likely build a simple web app to make it easier to add your own examples, sort and retrieve.
diff --git a/docs/docs/hardware/concepts/gpu-and-vram.md b/docs/docs/hardware/concepts/gpu-and-vram.md
index 57387e8d2..4543d731c 100644
--- a/docs/docs/hardware/concepts/gpu-and-vram.md
+++ b/docs/docs/hardware/concepts/gpu-and-vram.md
@@ -2,6 +2,20 @@
title: GPUs and VRAM
---
+
+ Understanding GPUs and VRAM for AI and Gaming
+
+
+
+
+
+
+
+
+
+
+
+
## What Is a GPU?
A Graphics Card, or GPU (Graphics Processing Unit), is a fundamental component in modern computing. Think of it as the powerhouse behind rendering the stunning visuals you see on your screen. Similar to the motherboard in your computer, the graphics card is a printed circuit board. However, it's not just a passive piece of hardware; it's a sophisticated device equipped with essential components like fans, onboard RAM, a dedicated memory controller, BIOS, and various other features. If you want to learn more about GPUs then read here to [Understand the architecture of a GPU.](https://medium.com/codex/understanding-the-architecture-of-a-gpu-d5d2d2e8978b)
diff --git a/docs/docs/hardware/overview/cloud-vs-self-hosting.md b/docs/docs/hardware/overview/cloud-vs-self-hosting.md
index 0d34bb1a9..f4d4b2236 100644
--- a/docs/docs/hardware/overview/cloud-vs-self-hosting.md
+++ b/docs/docs/hardware/overview/cloud-vs-self-hosting.md
@@ -2,6 +2,18 @@
title: Cloud vs. Self-hosting Your AI
---
+
+ Cloud vs. Self-hosting Your AI
+
+
+
+
+
+
+
+
+
+
The choice of how to run your AI - on GPU cloud services, on-prem, or just using an API provider - involves various trade-offs. The following is a naive exploration of the pros and cons of renting vs self-hosting.
## Cost Comparison
diff --git a/docs/docs/hardware/overview/cpu-vs-gpu.md b/docs/docs/hardware/overview/cpu-vs-gpu.md
index f0f20d8d6..b50655574 100644
--- a/docs/docs/hardware/overview/cpu-vs-gpu.md
+++ b/docs/docs/hardware/overview/cpu-vs-gpu.md
@@ -2,6 +2,20 @@
title: GPU vs CPU What's the Difference?
---
+
+ GPU vs CPU What's the Difference?
+
+
+
+
+
+
+
+
+
+
+
+
## CPU vs. GPU
| | CPU | GPU |
diff --git a/docs/docs/hardware/recommendations/by-budget.md b/docs/docs/hardware/recommendations/by-budget.md
index 9e640fbc9..1d1e24f71 100644
--- a/docs/docs/hardware/recommendations/by-budget.md
+++ b/docs/docs/hardware/recommendations/by-budget.md
@@ -2,6 +2,20 @@
title: Recommended AI Hardware by Budget
---
+
+ Recommended AI Hardware Builds by Budget
+
+
+
+
+
+
+
+
+
+
+
+
> :warning: **Warning:** Do your own research before any purchase. Jan is not liable for compatibility, performance or other issues. Products can become outdated quickly.
## Entry-level PC Build at $1000
diff --git a/docs/docs/hardware/recommendations/by-hardware.md b/docs/docs/hardware/recommendations/by-hardware.md
index ee80a290c..dcd744d8b 100644
--- a/docs/docs/hardware/recommendations/by-hardware.md
+++ b/docs/docs/hardware/recommendations/by-hardware.md
@@ -2,6 +2,20 @@
title: Selecting AI Hardware
---
+
+ Selecting AI Hardware
+
+
+
+
+
+
+
+
+
+
+
+
When selecting a GPU for LLMs, remember that it's not just about the GPU itself. Consider the synergy with other components in your PC:
- **CPU**: To ensure efficient processing, pair your GPU with a powerful CPU. LLMs benefit from fast processors, so having a capable CPU is essential.
diff --git a/docs/docs/hardware/recommendations/by-model.md b/docs/docs/hardware/recommendations/by-model.md
index 99d1ca8a2..e9fe1c3e8 100644
--- a/docs/docs/hardware/recommendations/by-model.md
+++ b/docs/docs/hardware/recommendations/by-model.md
@@ -2,6 +2,20 @@
title: Recommended AI Hardware by Model
---
+
+ Recommended AI Hardware by Model
+
+
+
+
+
+
+
+
+
+
+
+
## Codellama 34b
### System Requirements:
diff --git a/docs/docs/hardware/recommendations/by-usecase.md b/docs/docs/hardware/recommendations/by-usecase.md
index 2ae0cb906..aa7a1bf75 100644
--- a/docs/docs/hardware/recommendations/by-usecase.md
+++ b/docs/docs/hardware/recommendations/by-usecase.md
@@ -2,6 +2,20 @@
title: Recommended AI Hardware by Use Case
---
+
+ Recommended AI Hardware by Model
+
+
+
+
+
+
+
+
+
+
+
+
## Which AI Hardware to Choose Based on Your Use Case
Artificial intelligence (AI) is rapidly changing the world, and AI hardware is becoming increasingly important for businesses and individuals alike. Choosing the right hardware for your AI needs is crucial to get the best performance and results. Here are some tips for selecting AI hardware based on your specific use case and requirements.
diff --git a/docs/docs/how-we-work.md b/docs/docs/how-we-work.md
index e81099d18..602f7c902 100644
--- a/docs/docs/how-we-work.md
+++ b/docs/docs/how-we-work.md
@@ -2,6 +2,18 @@
title: How We Work
---
+
+ How We Work - Jan
+
+
+
+
+
+
+
+
+
+
### Open Source
Jan is a startup with an open source business model. We believe in the need for an open source AI ecosystem, and are committed to building it.
diff --git a/docs/docs/how-we-work/analytics/analytics.md b/docs/docs/how-we-work/analytics/analytics.md
index 79e107a83..5991263cc 100644
--- a/docs/docs/how-we-work/analytics/analytics.md
+++ b/docs/docs/how-we-work/analytics/analytics.md
@@ -2,6 +2,18 @@
title: Analytics
---
+
+ Analytics
+
+
+
+
+
+
+
+
+
+
Adhering to Jan's privacy preserving philosophy, our analytics philosophy is to get "barely-enough-to-function'.
#### What is tracked
diff --git a/docs/docs/how-we-work/engineering/qa.mdx b/docs/docs/how-we-work/engineering/qa.mdx
index f43caae4a..aa851dfa3 100644
--- a/docs/docs/how-we-work/engineering/qa.mdx
+++ b/docs/docs/how-we-work/engineering/qa.mdx
@@ -15,6 +15,18 @@ keywords:
]
---
+
+ QA
+
+
+
+
+
+
+
+
+
+
### Phase 1: Planning
#### Definition of Ready (DoR):
diff --git a/docs/docs/how-we-work/project-management/project-management.md b/docs/docs/how-we-work/project-management/project-management.md
index 58af4a0d3..85bbe0d75 100644
--- a/docs/docs/how-we-work/project-management/project-management.md
+++ b/docs/docs/how-we-work/project-management/project-management.md
@@ -2,6 +2,18 @@
title: Project Management
---
+
+ Project Management
+
+
+
+
+
+
+
+
+
+
We use the [Jan Monorepo Project](https://github.com/orgs/janhq/projects/5) in Github to manage our roadmap and sprint Kanbans.
As much as possible, everyone owns their respective `epics` and `tasks`.
@@ -58,7 +70,6 @@ We aim to always sprint on `tasks` that are a part of the [current roadmap](http
- `Urgent bugs`: assign to an owner (or @engineers if you are not sure) && tag the current `sprint` & `milestone`
- `All else`: assign the correct roadmap `label(s)` and owner (if any)
-
#### Request for help
As a result, our feature prioritization can feel a bit black box at times.
diff --git a/docs/docs/how-we-work/strategy/strategy.md b/docs/docs/how-we-work/strategy/strategy.md
index 09d9b9fb4..a448c090e 100644
--- a/docs/docs/how-we-work/strategy/strategy.md
+++ b/docs/docs/how-we-work/strategy/strategy.md
@@ -2,7 +2,20 @@
title: Strategy
---
+
+ Strategy
+
+
+
+
+
+
+
+
+
+
We only have 2 planning parameters:
+
- 10 year vision
- 2 week sprint
- Quarterly OKRs
@@ -46,7 +59,6 @@ Jan is a seamless user experience that runs on your personal computer, that glue
- We run on top of a local folder of non-proprietary files, that anyone can tinker with (yes, even other apps!)
- We provide open formats for packaging and distributing AI to run reproducibly across devices
-
## Prerequisites
- [Figma](https://figma.com)
diff --git a/docs/docs/how-we-work/website-docs/website-docs.md b/docs/docs/how-we-work/website-docs/website-docs.md
index 19fdc1676..9dcedb0b8 100644
--- a/docs/docs/how-we-work/website-docs/website-docs.md
+++ b/docs/docs/how-we-work/website-docs/website-docs.md
@@ -2,6 +2,18 @@
title: Website & Docs
---
+
+ Website & Docs
+
+
+
+
+
+
+
+
+
+
This website is built using [Docusaurus 3.0](https://docusaurus.io/), a modern static website generator.
### Information Architecture
diff --git a/docs/docs/platforms/desktop.md b/docs/docs/platforms/desktop.md
index fb4ea8389..d8c8a38cc 100644
--- a/docs/docs/platforms/desktop.md
+++ b/docs/docs/platforms/desktop.md
@@ -15,6 +15,18 @@ keywords:
]
---
+
+ Jan Desktop
+
+
+
+
+
+
+
+
+
+
# Turn any computer into an AI computer

diff --git a/docs/docs/privacy/privacy.md b/docs/docs/privacy/privacy.md
index 56e81f3a1..e1f5d0f10 100644
--- a/docs/docs/privacy/privacy.md
+++ b/docs/docs/privacy/privacy.md
@@ -1,3 +1,21 @@
+---
+title: Privacy - Jan
+---
+
+
+ Privacy Policy - Jan
+
+
+
+
+
+
+
+
+
+
+
+
# Privacy Policy
Jan is committed to protecting your privacy and ensuring that your personal information is handled in a safe and responsible way. This policy outlines how we collect, store, and use your personal information when you use our mobile application.
diff --git a/docs/docs/server-suite/enterprise.md b/docs/docs/server-suite/enterprise.md
index 565c14fde..e08356954 100644
--- a/docs/docs/server-suite/enterprise.md
+++ b/docs/docs/server-suite/enterprise.md
@@ -15,6 +15,18 @@ keywords:
]
---
+
+ Jan Enterprise
+
+
+
+
+
+
+
+
+
+
# Customize and run AI across your organization
Jan can professional backend to create, customize and run AIs at scale, for production-grade data centers.
diff --git a/docs/docs/server-suite/home-server.md b/docs/docs/server-suite/home-server.md
index 97f3afbc7..630d2b9d9 100644
--- a/docs/docs/server-suite/home-server.md
+++ b/docs/docs/server-suite/home-server.md
@@ -15,6 +15,18 @@ keywords:
]
---
+
+ Jan Home Server
+
+
+
+
+
+
+
+
+
+
# Customize and run AI across all of your devices
Self-host and access your AI from anywhere with Jan server suite.
diff --git a/docs/docs/support/support.md b/docs/docs/support/support.md
index 5a1ec2097..856041f86 100644
--- a/docs/docs/support/support.md
+++ b/docs/docs/support/support.md
@@ -1,3 +1,21 @@
+---
+title: Support - Jan
+---
+
+
+ Support - Jan
+
+
+
+
+
+
+
+
+
+
+
+
# Support
- Bugs & requests: file a GitHub ticket [here](https://github.com/janhq/jan/issues)
diff --git a/docs/docs/team/team.md b/docs/docs/team/team.md
index 7d5e07cfb..2b8b24d01 100644
--- a/docs/docs/team/team.md
+++ b/docs/docs/team/team.md
@@ -2,6 +2,18 @@
title: Who we are
---
+
+ Who we are - Jan
+
+
+
+
+
+
+
+
+
+
What's Jan the company about?
We aim to build the cognitive framework for future robots
@@ -13,7 +25,6 @@ Jan is a startup with an open source business model. We believe in the need for
- [Jan Desktop Client & Local server](https://jan.ai) (AGPLv3, built on Jan Framework)
- [Nitro: run Local AI](https://github.com/janhq/nitro) (AGPLv3)
-
### Bootstrapped
Jan is currently a bootstrapped startup.
@@ -25,4 +36,4 @@ We balance technical invention with the search for a sustainable business model.
## Our Team
- Contributors
-- Core Team
\ No newline at end of file
+- Core Team
diff --git a/docs/docs/template/QA_script.md b/docs/docs/template/QA_script.md
index 9c7eeaf18..de006c629 100644
--- a/docs/docs/template/QA_script.md
+++ b/docs/docs/template/QA_script.md
@@ -26,7 +26,6 @@
- [ ] :key::warning: Check that the uninstallation process removes the app successfully from the system.
- [ ] Clean the Jan root directory and open the app to check if it creates all the necessary folders, especially models and extensions.
-
## B. Overview
### 1. Shortcut key, memory usage / CPU usage
@@ -71,10 +70,12 @@
- [ ] :key: Ensure that users switch between threads with different models, the app can handle it.
### 3. Model dropdown
+
- [ ] :key: Model list should highlight recommended based on user RAM
- [ ] Model size should display (for both installed and imported models)
### 4. Users can click on a history thread
+
- [ ] Confirm that the chat window displays the entire conversation from the selected history thread without any missing messages.
- [ ] :key: Check the performance and accuracy of the history feature when dealing with a large number of threads.
- [ ] Validate that historical threads reflect the exact state of the chat at that time, including settings.
@@ -82,12 +83,12 @@
- [ ] Confirm that changing the title of the thread updates correctly.
### 5. Users can config instructions for the assistant.
+
- [ ] Test if the instructions set by the user are being followed by the assistant in subsequent conversations.
- [ ] :key: Validate that changes to instructions are updated in real time and do not require a restart of the application or session.
- [ ] :key: Check for the ability to reset instructions to default or clear them completely.
- [ ] :key: RAG - Users can import documents and the system should process queries about the uploaded file, providing accurate and appropriate responses in the conversation thread.
-
## D. Hub
### 1. Users can discover recommended models (Jan ships with a few preconfigured model.json files)
@@ -117,13 +118,14 @@
### 5. Users can use the model as they want
-- [ ] :key: Check `start` / `stop` / `delete` button response exactly what it does.
+- [ ] :key: Check `start` / `stop` / `delete` button response exactly what it does.
- [ ] Check if starting another model stops the other model entirely.
- [x] :rocket: Check the `Explore models` navigate correctly to the model panel.
- [ ] :key: Check when deleting a model it will delete all the files on the user's computer.
- [ ] :warning:The recommended tags should present right for the user's hardware.
### 6. Users can Integrate With a Remote Server
+
- [ ] :key: Import openAI GPT model https://jan.ai/guides/using-models/integrate-with-remote-server/ and the model displayed in Hub / Thread dropdown
- [ ] Users can use the remote model properly
@@ -184,9 +186,10 @@
## G. Local API server
### 1. Local Server Usage with Server Options
+
- [ ] :key: Explore API Reference: Swagger API for sending/receiving requests
- - [ ] Use default server option
- - [ ] Configure and use custom server options
+ - [ ] Use default server option
+ - [ ] Configure and use custom server options
- [ ] Test starting/stopping the local API server with different Model/Model settings
- [ ] Server logs captured with correct Server Options provided
- [ ] Verify functionality of Open logs/Clear feature
diff --git a/docs/docs/wall-of-love.md b/docs/docs/wall-of-love.md
index f6bfe79d8..41f68b0f2 100644
--- a/docs/docs/wall-of-love.md
+++ b/docs/docs/wall-of-love.md
@@ -2,6 +2,18 @@
title: Wall of Love ❤️
---
+
+ Wall of Love ❤️ - Jan
+
+
+
+
+
+
+
+
+
+
## Twitter
Check out our amazing users and what they are saying about Jan!
diff --git a/docs/docusaurus.config.js b/docs/docusaurus.config.js
index bb39dcd1c..3b1bc3d5e 100644
--- a/docs/docusaurus.config.js
+++ b/docs/docusaurus.config.js
@@ -1,36 +1,36 @@
// @ts-check
// Note: type annotations allow type checking and IDEs autocompletion
-require("dotenv").config();
+require('dotenv').config()
-const darkCodeTheme = require("prism-react-renderer/themes/dracula");
-const path = require('path');
+const darkCodeTheme = require('prism-react-renderer/themes/dracula')
+const path = require('path')
/** @type {import('@docusaurus/types').Config} */
const config = {
- title: "Jan",
- tagline: "Run your own AI",
- favicon: "img/favicon.ico",
+ title: 'Jan',
+ tagline: 'Run your own AI',
+ favicon: 'img/favicon.ico',
// Set the production url of your site here
- url: "https://jan.ai",
+ url: 'https://jan.ai',
// Set the // pathname under which your site is served
// For GitHub pages deployment, it is often '//'
- baseUrl: "/",
+ baseUrl: '/',
// GitHub pages deployment config.
// If you aren't using GitHub pages, you don't need these.
- organizationName: "janhq", // Usually your GitHub org/user name.
- projectName: "jan", // Usually your repo name.
+ organizationName: 'janhq', // Usually your GitHub org/user name.
+ projectName: 'jan', // Usually your repo name.
- onBrokenLinks: "warn",
- onBrokenMarkdownLinks: "warn",
+ onBrokenLinks: 'warn',
+ onBrokenMarkdownLinks: 'warn',
trailingSlash: true,
// Even if you don't use internalization, you can use this field to set useful
// metadata like html lang. For example, if your site is Chinese, you may want
// to replace "en" with "zh-Hans".
i18n: {
- defaultLocale: "en",
- locales: ["en"],
+ defaultLocale: 'en',
+ locales: ['en'],
},
markdown: {
@@ -41,80 +41,81 @@ const config = {
// Plugins we added
plugins: [
- "docusaurus-plugin-sass",
+ 'docusaurus-plugin-sass',
async function myPlugin(context, options) {
return {
- name: "docusaurus-tailwindcss",
+ name: 'docusaurus-tailwindcss',
configurePostCss(postcssOptions) {
// Appends TailwindCSS and AutoPrefixer.
- postcssOptions.plugins.push(require("tailwindcss"));
- postcssOptions.plugins.push(require("autoprefixer"));
- return postcssOptions;
+ postcssOptions.plugins.push(require('tailwindcss'))
+ postcssOptions.plugins.push(require('autoprefixer'))
+ return postcssOptions
},
- };
+ }
},
[
- "posthog-docusaurus",
+ 'posthog-docusaurus',
{
- apiKey: process.env.POSTHOG_PROJECT_API_KEY || "XXX",
- appUrl: process.env.POSTHOG_APP_URL || "XXX", // optional
+ apiKey: process.env.POSTHOG_PROJECT_API_KEY || 'XXX',
+ appUrl: process.env.POSTHOG_APP_URL || 'XXX', // optional
enableInDevelopment: false, // optional
},
],
[
- "@docusaurus/plugin-client-redirects",
+ '@docusaurus/plugin-client-redirects',
{
redirects: [
{
- from: "/troubleshooting/failed-to-fetch",
- to: "/guides/error-codes/something-amiss/",
+ from: '/troubleshooting/failed-to-fetch',
+ to: '/guides/error-codes/something-amiss/',
},
{
- from: "/guides/troubleshooting/gpu-not-used/",
- to: "/guides/common-error/not-using-gpu/",
+ from: '/guides/troubleshooting/gpu-not-used/',
+ to: '/guides/common-error/not-using-gpu/',
},
{
- from: "/guides/troubleshooting/",
- to: "/guides/error-codes/",
+ from: '/guides/troubleshooting/',
+ to: '/guides/error-codes/',
},
{
- from: "/troubleshooting/stuck-on-broken-build/",
- to: "/guides/common-error/broken-build/",
+ from: '/troubleshooting/stuck-on-broken-build/',
+ to: '/guides/common-error/broken-build/',
},
{
- from: "/guides/troubleshooting/",
- to: "/guides/error-codes/",
+ from: '/guides/troubleshooting/',
+ to: '/guides/error-codes/',
},
{
- from: "/troubleshooting/somethings-amiss/",
- to: "/guides/error-codes/something-amiss/",
+ from: '/troubleshooting/somethings-amiss/',
+ to: '/guides/error-codes/something-amiss/',
},
{
- from: "/troubleshooting/how-to-get-error-logs/",
- to: "/guides/error-codes/how-to-get-error-logs/",
+ from: '/troubleshooting/how-to-get-error-logs/',
+ to: '/guides/error-codes/how-to-get-error-logs/',
},
{
- from: "/troubleshooting/permission-denied/",
- to: "/guides/error-codes/permission-denied/",
+ from: '/troubleshooting/permission-denied/',
+ to: '/guides/error-codes/permission-denied/',
},
{
- from: "/troubleshooting/unexpected-token/",
- to: "/guides/error-codes/unexpected-token/",
+ from: '/troubleshooting/unexpected-token/',
+ to: '/guides/error-codes/unexpected-token/',
},
{
- from: "/troubleshooting/undefined-issue/",
- to: "/guides/error-codes/undefined-issue/",
- }, {
- from: "/install/",
- to: "/guides/install/",
+ from: '/troubleshooting/undefined-issue/',
+ to: '/guides/error-codes/undefined-issue/',
},
{
- from: "/guides/using-models/",
- to: "/guides/models-setup/",
+ from: '/install/',
+ to: '/guides/install/',
},
{
- from: "/guides/using-extensions/",
- to: "/guides/extensions/",
+ from: '/guides/using-models/',
+ to: '/guides/models-setup/',
+ },
+ {
+ from: '/guides/using-extensions/',
+ to: '/guides/extensions/',
},
],
},
@@ -139,35 +140,35 @@ const config = {
// The classic preset will relay each option entry to the respective sub plugin/theme.
presets: [
[
- "@docusaurus/preset-classic",
+ '@docusaurus/preset-classic',
{
// Will be passed to @docusaurus/plugin-content-docs (false to disable)
docs: {
- routeBasePath: "/",
- sidebarPath: require.resolve("./sidebars.js"),
- editUrl: "https://github.com/janhq/jan/tree/dev/docs",
+ routeBasePath: '/',
+ sidebarPath: require.resolve('./sidebars.js'),
+ editUrl: 'https://github.com/janhq/jan/tree/dev/docs',
showLastUpdateAuthor: true,
showLastUpdateTime: true,
},
// Will be passed to @docusaurus/plugin-content-sitemap (false to disable)
sitemap: {
- changefreq: "daily",
+ changefreq: 'daily',
priority: 1.0,
- ignorePatterns: ["/tags/**"],
- filename: "sitemap.xml",
+ ignorePatterns: ['/tags/**'],
+ filename: 'sitemap.xml',
},
// Will be passed to @docusaurus/plugin-content-blog (false to disable)
blog: {
- blogSidebarTitle: "All Posts",
- blogSidebarCount: "ALL",
+ blogSidebarTitle: 'All Posts',
+ blogSidebarCount: 'ALL',
},
// Will be passed to @docusaurus/theme-classic.
theme: {
- customCss: require.resolve("./src/styles/main.scss"),
+ customCss: require.resolve('./src/styles/main.scss'),
},
// GTM is always inactive in development and only active in production to avoid polluting the analytics statistics.
googleTagManager: {
- containerId: process.env.GTM_ID || "XXX",
+ containerId: process.env.GTM_ID || 'XXX',
},
// Will be passed to @docusaurus/plugin-content-pages (false to disable)
// pages: {},
@@ -175,17 +176,17 @@ const config = {
],
// Redoc preset
[
- "redocusaurus",
+ 'redocusaurus',
{
specs: [
{
- spec: "openapi/jan.yaml", // can be local file, url, or parsed json object
- route: "/api-reference-1.0/", // path where to render docs
+ spec: 'openapi/jan.yaml', // can be local file, url, or parsed json object
+ route: '/api-reference-1.0/', // path where to render docs
},
],
theme: {
- primaryColor: "#1a73e8",
- primaryColorDark: "#1a73e8",
+ primaryColor: '#1a73e8',
+ primaryColorDark: '#1a73e8',
options: {
requiredPropsFirst: true,
noAutoAuth: true,
@@ -198,10 +199,10 @@ const config = {
// Docs: https://docusaurus.io/docs/api/themes/configuration
themeConfig: {
- image: "img/og-image.png",
+ image: 'img/og-image.svg',
// Only for react live
liveCodeBlock: {
- playgroundPosition: "bottom",
+ playgroundPosition: 'bottom',
},
docs: {
sidebar: {
@@ -211,89 +212,85 @@ const config = {
},
// Algolia Search Configuration
algolia: {
- appId: process.env.ALGOLIA_APP_ID || "XXX",
- apiKey: process.env.ALGOLIA_API_KEY || "XXX",
- indexName: "jan_docs",
+ appId: process.env.ALGOLIA_APP_ID || 'XXX',
+ apiKey: process.env.ALGOLIA_API_KEY || 'XXX',
+ indexName: 'jan_docs',
contextualSearch: true,
insights: true,
},
// SEO Docusarus
metadata: [
{
- name: "description",
+ name: 'description',
+ content: `Jan turns your computer into an AI machine by running LLMs locally on your computer. It's a privacy-focus, local-first, open-source solution.`,
+ },
+ {
+ name: 'keywords',
content:
- "Jan runs 100% offline on your computer, utilizes open-source AI models, prioritizes privacy, and is highly customizable.",
+ 'Jan AI, Jan, ChatGPT alternative, local AI, private AI, conversational AI, no-subscription fee, large language model ',
+ },
+ { name: 'robots', content: 'index, follow' },
+ {
+ property: 'og:title',
+ content: 'Jan AI | Rethink the Computer',
},
{
- name: "keywords",
- content:
- "Jan AI, Jan, ChatGPT alternative, local AI, private AI, conversational AI, no-subscription fee, large language model ",
- },
- { name: "robots", content: "index, follow" },
- {
- property: "og:title",
- content: "Jan | Open-source ChatGPT Alternative",
+ property: 'og:description',
+ content: `Jan turns your computer into an AI machine by running LLMs locally on your computer. It's a privacy-focus, local-first, open-source solution.`,
},
{
- property: "og:description",
- content:
- "Jan runs 100% offline on your computer, utilizes open-source AI models, prioritizes privacy, and is highly customizable.",
+ property: 'og:image',
+ content: 'https://jan.ai/img/og-image.svg',
+ },
+ { property: 'og:type', content: 'website' },
+ { property: 'twitter:card', content: 'summary_large_image' },
+ { property: 'twitter:site', content: '@janframework' },
+ {
+ property: 'twitter:title',
+ content: 'Jan AI | Rethink the Computer',
},
{
- property: "og:image",
- content: "https://jan.ai/img/og-image.png",
- },
- { property: "og:type", content: "website" },
- { property: "twitter:card", content: "summary_large_image" },
- { property: "twitter:site", content: "@janframework" },
- {
- property: "twitter:title",
- content: "Jan | Open-source ChatGPT Alternative",
+ property: 'twitter:description',
+ content: `Jan turns your computer into an AI machine by running LLMs locally on your computer. It's a privacy-focus, local-first, open-source solution.`,
},
{
- property: "twitter:description",
- content:
- "Jan runs 100% offline on your computer, utilizes open-source AI models, prioritizes privacy, and is highly customizable.",
- },
- {
- property: "twitter:image",
- content: "https://jan.ai/img/og-image.png",
+ property: 'twitter:image',
+ content: 'https://jan.ai/img/og-image.svg',
},
],
headTags: [
// Declare a preconnect tag
{
- tagName: "link",
+ tagName: 'link',
attributes: {
- rel: "preconnect",
- href: "https://jan.ai/",
+ rel: 'preconnect',
+ href: 'https://jan.ai/',
},
},
// Declare some json-ld structured data
{
- tagName: "script",
+ tagName: 'script',
attributes: {
- type: "application/ld+json",
+ type: 'application/ld+json',
},
innerHTML: JSON.stringify({
- "@context": "https://schema.org/",
- "@type": "localAI",
- name: "Jan",
- description:
- "Jan runs 100% offline on your computer, utilizes open-source AI models, prioritizes privacy, and is highly customizable.",
- keywords:
- "Jan AI, Jan, ChatGPT alternative, local AI, private AI, conversational AI, no-subscription fee, large language model ",
- applicationCategory: "BusinessApplication",
- operatingSystem: "Multiple",
- url: "https://jan.ai/",
+ '@context': 'https://schema.org/',
+ '@type': 'localAI',
+ 'name': 'Jan',
+ 'description': `Jan turns your computer into an AI machine by running LLMs locally on your computer. It's a privacy-focus, local-first, open-source solution.`,
+ 'keywords':
+ 'Jan AI, Jan, ChatGPT alternative, local AI, private AI, conversational AI, no-subscription fee, large language model ',
+ 'applicationCategory': 'BusinessApplication',
+ 'operatingSystem': 'Multiple',
+ 'url': 'https://jan.ai/',
}),
},
],
navbar: {
- title: "Jan",
+ title: 'Jan',
logo: {
- alt: "Jan Logo",
- src: "img/logo.svg",
+ alt: 'Jan Logo',
+ src: 'img/logo.svg',
},
items: [
// Navbar Left
@@ -304,70 +301,75 @@ const config = {
// label: "About",
// },
{
- type: "dropdown",
- label: "About",
- position: "left",
+ type: 'dropdown',
+ label: 'About',
+ position: 'left',
items: [
{
- type: "doc",
- label: "What is Jan?",
- docId: "about/about",
+ type: 'doc',
+ label: 'What is Jan?',
+ docId: 'about/about',
},
{
- type: "doc",
- label: "Who we are",
- docId: "team/team",
+ type: 'doc',
+ label: 'Who we are',
+ docId: 'team/team',
},
{
- type: "doc",
- label: "Wall of love",
- docId: "wall-of-love",
+ type: 'doc',
+ label: 'Wall of love',
+ docId: 'wall-of-love',
},
],
},
{
- type: "docSidebar",
- sidebarId: "productSidebar",
- positionL: "left",
- label: "Product",
+ type: 'docSidebar',
+ sidebarId: 'productSidebar',
+ positionL: 'left',
+ label: 'Product',
},
{
- type: "docSidebar",
- sidebarId: "ecosystemSidebar",
- position: "left",
- label: "Ecosystem",
+ type: 'docSidebar',
+ sidebarId: 'ecosystemSidebar',
+ position: 'left',
+ label: 'Ecosystem',
+ },
+ {
+ to: 'download',
+ position: 'left',
+ label: 'Download',
},
// {
// type: "docSidebar",
// sidebarId: "pricingSidebar",
- // positionL: "left",
+ // positionl: "left",
// label: "Pricing",
// },
// Navbar right
{
- type: "dropdown",
- label: "Docs",
- to: "docs",
- position: "right",
+ type: 'dropdown',
+ label: 'Docs',
+ to: 'docs',
+ position: 'right',
items: [
{
- type: "docSidebar",
- sidebarId: "guidesSidebar",
- label: "Guides",
+ type: 'docSidebar',
+ sidebarId: 'guidesSidebar',
+ label: 'Guides',
},
{
- type: "docSidebar",
- sidebarId: "developerSidebar",
- label: "Developer",
+ type: 'docSidebar',
+ sidebarId: 'developerSidebar',
+ label: 'Developer',
},
{
- to: "/api-reference",
- label: "API Reference",
+ to: '/api-reference',
+ label: 'API Reference',
},
{
- type: "docSidebar",
- sidebarId: "releasesSidebar",
- label: "Changelog",
+ type: 'docSidebar',
+ sidebarId: 'releasesSidebar',
+ label: 'Changelog',
},
// {
// type: "docSidebar",
@@ -377,9 +379,9 @@ const config = {
],
},
{
- to: "blog",
- label: "Blog",
- position: "right",
+ to: 'blog',
+ label: 'Blog',
+ position: 'right',
},
],
},
@@ -387,22 +389,27 @@ const config = {
theme: darkCodeTheme,
darkTheme: darkCodeTheme,
additionalLanguages: [
- "python",
- "powershell",
- "bash",
- "json",
- "javascript",
- "jsx",
+ 'python',
+ 'powershell',
+ 'bash',
+ 'json',
+ 'javascript',
+ 'jsx',
],
},
colorMode: {
- defaultMode: "light",
+ defaultMode: 'light',
disableSwitch: false,
respectPrefersColorScheme: false,
},
},
- themes: ["@docusaurus/theme-live-codeblock", "@docusaurus/theme-mermaid"],
-};
+ // Put your custom environment here
+ customFields: {
+ apiKeyBrevo: process.env.API_KEY_BREVO,
+ },
-module.exports = config;
+ themes: ['@docusaurus/theme-live-codeblock', '@docusaurus/theme-mermaid'],
+}
+
+module.exports = config
diff --git a/docs/package.json b/docs/package.json
index eb386d783..b4418453e 100644
--- a/docs/package.json
+++ b/docs/package.json
@@ -37,9 +37,12 @@
"postcss": "^8.4.30",
"posthog-docusaurus": "^2.0.0",
"prism-react-renderer": "^1.3.5",
+ "lucide-react": "^0.291.0",
"react": "^18.2.0",
"react-dom": "^18.2.0",
+ "react-hook-form": "^7.47.0",
"react-icons": "^4.11.0",
+ "react-tweet": "^3.2.0",
"redocusaurus": "^2.0.0",
"sass": "^1.69.3",
"tailwind-merge": "^2.1.0",
@@ -47,7 +50,7 @@
},
"devDependencies": {
"@docusaurus/module-type-aliases": "^3.0.0",
- "dotenv": "^16.3.1",
+ "dotenv": "^16.4.5",
"tailwindcss-animate": "^1.0.7"
},
"browserslist": {
diff --git a/docs/sidebars.js b/docs/sidebars.js
index a9eba0015..efe475283 100644
--- a/docs/sidebars.js
+++ b/docs/sidebars.js
@@ -15,77 +15,76 @@
const sidebars = {
aboutSidebar: [
{
- type: "category",
- label: "What is Jan?",
- link: { type: "doc", id: "about/about" },
+ type: 'category',
+ label: 'What is Jan?',
+ link: { type: 'doc', id: 'about/about' },
items: [
//"about/roadmap",
- "community/community",
+ 'community/community',
],
},
{
- type: "category",
- label: "Who we are",
- link: { type: "doc", id: "team/team" },
- items: ["team/join-us", "team/contributor-program"],
+ type: 'category',
+ label: 'Who we are',
+ link: { type: 'doc', id: 'team/team' },
+ items: ['team/join-us', 'team/contributor-program'],
},
- "wall-of-love",
+ 'wall-of-love',
{
- type: "category",
- label: "How We Work",
- link: { type: "doc", id: "how-we-work" },
+ type: 'category',
+ label: 'How We Work',
+ link: { type: 'doc', id: 'how-we-work' },
items: [
- "how-we-work/strategy/strategy",
- "how-we-work/project-management/project-management",
+ 'how-we-work/strategy/strategy',
+ 'how-we-work/project-management/project-management',
{
- type: "category",
- label: "Engineering",
- link: { type: "doc", id: "how-we-work/engineering/engineering" },
+ type: 'category',
+ label: 'Engineering',
+ link: { type: 'doc', id: 'how-we-work/engineering/engineering' },
items: [
- "how-we-work/engineering/ci-cd",
- "how-we-work/engineering/qa",
+ 'how-we-work/engineering/ci-cd',
+ 'how-we-work/engineering/qa',
],
},
- "how-we-work/product-design/product-design",
- "how-we-work/analytics/analytics",
- "how-we-work/website-docs/website-docs",
+ 'how-we-work/product-design/product-design',
+ 'how-we-work/analytics/analytics',
+ 'how-we-work/website-docs/website-docs',
],
},
- "acknowledgements",
+ 'acknowledgements',
{
- type: "category",
- label: "FAQ",
- link: { type: "doc", id: "about/faq" },
- items:
- [],
+ type: 'category',
+ label: 'FAQ',
+ link: { type: 'doc', id: 'about/faq' },
+ items: [],
},
],
productSidebar: [
{
- type: "category",
- label: "Platforms",
+ type: 'category',
+ label: 'Platforms',
collapsible: false,
items: [
- "platforms/desktop",
- "server-suite/home-server",
+ 'platforms/desktop',
+ 'server-suite/home-server',
// "server-suite/enterprise",
// "platforms/mobile",
// "platforms/hub",
],
},
{
- type: "category",
+ type: 'category',
collapsible: true,
collapsed: false,
- label: "Features",
- link: { type: "doc", id: "features/features" },
+ label: 'Features',
+ link: { type: 'doc', id: 'features/features' },
items: [
- "features/local",
- "features/remote",
- "features/api-server",
- "features/extensions-framework",
- "features/agents-framework",
- "features/data-security",
+ 'features/local',
+ 'features/remote',
+ 'features/api-server',
+ 'features/extensions-framework',
+ 'features/agents-framework',
+ 'features/data-security',
],
},
// NOTE: Jan Server Suite will be torn out into it's own section in the future
@@ -103,56 +102,56 @@ const sidebars = {
],
solutionSidebar: [
{
- type: "category",
- label: "Use Cases",
+ type: 'category',
+ label: 'Use Cases',
collapsed: true,
collapsible: true,
- items: ["solutions/ai-pc", "solutions/chatgpt-alternative"],
+ items: ['solutions/ai-pc', 'solutions/chatgpt-alternative'],
},
{
- type: "category",
- label: "Sectors",
+ type: 'category',
+ label: 'Sectors',
collapsed: true,
collapsible: true,
items: [
- "solutions/finance",
- "solutions/healthcare",
- "solutions/legal",
- "solutions/government",
+ 'solutions/finance',
+ 'solutions/healthcare',
+ 'solutions/legal',
+ 'solutions/government',
],
},
{
- type: "category",
- label: "Organization Type",
+ type: 'category',
+ label: 'Organization Type',
collapsed: true,
collapsible: true,
items: [
- "solutions/developers",
- "solutions/consultants",
- "solutions/startups",
- "solutions/enterprises",
+ 'solutions/developers',
+ 'solutions/consultants',
+ 'solutions/startups',
+ 'solutions/enterprises',
],
},
],
- pricingSidebar: ["pricing/pricing"],
+ pricingSidebar: ['pricing/pricing'],
ecosystemSidebar: [
- "ecosystem/ecosystem",
+ 'ecosystem/ecosystem',
{
- type: "category",
- label: "Partners",
- link: { type: "doc", id: "partners/partners" },
+ type: 'category',
+ label: 'Partners',
+ link: { type: 'doc', id: 'partners/partners' },
collapsible: true,
- items: ["partners/become-a-partner"],
+ items: ['partners/become-a-partner'],
},
{
- type: "category",
- label: "Integrations",
- link: { type: "doc", id: "integrations" },
+ type: 'category',
+ label: 'Integrations',
+ link: { type: 'doc', id: 'integrations' },
items: [
{
- type: "autogenerated",
- dirName: "integrations",
+ type: 'autogenerated',
+ dirName: 'integrations',
},
],
},
@@ -165,147 +164,154 @@ const sidebars = {
// ],
guidesSidebar: [
{
- type: "category",
- label: "Get Started",
+ type: 'category',
+ label: 'Get Started',
collapsible: false,
- className: "head_Menu",
+ className: 'head_Menu',
items: [
- "guides/quickstart",
- "guides/install",
- "guides/start-server",
- "guides/models-list"
- ]
+ 'guides/quickstart',
+ 'guides/install',
+ 'guides/start-server',
+ 'guides/models-list',
+ ],
},
{
- type: "category",
- label: "Guides",
+ type: 'category',
+ label: 'Guides',
collapsible: false,
- className: "head_Menu",
- items: [
- "guides/best-practices",
- "guides/thread",
- ]
+ className: 'head_Menu',
+ items: ['guides/best-practices', 'guides/thread'],
},
{
- type: "category",
- label: "Advanced Features",
+ type: 'category',
+ label: 'Advanced Features',
collapsible: false,
- className: "head_Menu",
+ className: 'head_Menu',
items: [
{
- type: "category",
- label: "Advanced Model Setup",
- className: "head_SubMenu",
+ type: 'category',
+ label: 'Advanced Settings',
+ className: 'head_SubMenu',
link: {
type: 'doc',
- id: "guides/models/README",
+ id: 'guides/advanced-settings/advanced-settings',
},
- items: [
- "guides/models/customize-engine",
- "guides/models/import-models",
- "guides/models/integrate-remote",
- ]
+ items: ['guides/advanced-settings/http-proxy'],
},
{
- type: "category",
- label: "Inference Providers",
- className: "head_SubMenu",
+ type: 'category',
+ label: 'Advanced Model Setup',
+ className: 'head_SubMenu',
link: {
type: 'doc',
- id: "guides/providers/README",
+ id: 'guides/models/README',
},
items: [
- "guides/providers/llama-cpp",
- "guides/providers/tensorrt-llm",
- ]
+ 'guides/models/customize-engine',
+ 'guides/models/import-models',
+ 'guides/models/integrate-remote',
+ ],
},
{
- type: "category",
- label: "Extensions",
- className: "head_SubMenu",
+ type: 'category',
+ label: 'Inference Providers',
+ className: 'head_SubMenu',
link: {
type: 'doc',
- id: "guides/extensions/README",
+ id: 'guides/providers/README',
},
items: [
- "guides/extensions/import-ext",
- "guides/extensions/setup-ext",
- ]
+ 'guides/providers/llama-cpp',
+ 'guides/providers/tensorrt-llm',
+ ],
},
{
- type: "category",
- label: "Integrations",
- className: "head_SubMenu",
+ type: 'category',
+ label: 'Extensions',
+ className: 'head_SubMenu',
link: {
type: 'doc',
- id: "guides/integration/README",
+ id: 'guides/extensions/README',
},
items: [
- "guides/integration/azure",
- "guides/integration/discord",
- "guides/integration/groq",
- "guides/integration/lmstudio",
- "guides/integration/mistral",
- "guides/integration/ollama",
- "guides/integration/openinterpreter",
- "guides/integration/openrouter",
- "guides/integration/raycast",
- "guides/integration/vscode",
- ]
+ 'guides/extensions/import-ext',
+ 'guides/extensions/setup-ext',
+ ],
},
- ]
+ {
+ type: 'category',
+ label: 'Integrations',
+ className: 'head_SubMenu',
+ link: {
+ type: 'doc',
+ id: 'guides/integration/README',
+ },
+ items: [
+ 'guides/integration/azure',
+ 'guides/integration/discord',
+ 'guides/integration/groq',
+ 'guides/integration/lmstudio',
+ 'guides/integration/mistral',
+ 'guides/integration/ollama',
+ 'guides/integration/openinterpreter',
+ 'guides/integration/openrouter',
+ 'guides/integration/raycast',
+ 'guides/integration/vscode',
+ ],
+ },
+ ],
},
{
- type: "category",
- label: "Troubleshooting",
+ type: 'category',
+ label: 'Troubleshooting',
collapsible: false,
- className: "head_Menu",
+ className: 'head_Menu',
items: [
{
- type: "category",
- label: "Error Codes",
- className: "head_SubMenu",
+ type: 'category',
+ label: 'Error Codes',
+ className: 'head_SubMenu',
link: {
type: 'doc',
- id: "guides/error-codes/README",
+ id: 'guides/error-codes/README',
},
items: [
- "guides/error-codes/how-to-get-error-logs",
- "guides/error-codes/permission-denied",
- "guides/error-codes/something-amiss",
- "guides/error-codes/undefined-issue",
- "guides/error-codes/unexpected-token",
- ]
+ 'guides/error-codes/how-to-get-error-logs',
+ 'guides/error-codes/permission-denied',
+ 'guides/error-codes/something-amiss',
+ 'guides/error-codes/undefined-issue',
+ 'guides/error-codes/unexpected-token',
+ ],
},
{
- type: "category",
- label: "Common Error",
- className: "head_SubMenu",
+ type: 'category',
+ label: 'Common Error',
+ className: 'head_SubMenu',
link: {
type: 'doc',
- id: "guides/common-error/README",
+ id: 'guides/common-error/README',
},
items: [
- "guides/common-error/broken-build",
- "guides/common-error/not-using-gpu",
- ]
+ 'guides/common-error/broken-build',
+ 'guides/common-error/not-using-gpu',
+ ],
},
- "guides/faq"
- ]
+ 'guides/faq',
+ ],
},
],
developerSidebar: [
{
- type: "autogenerated",
- dirName: "developer",
+ type: 'autogenerated',
+ dirName: 'developer',
},
],
releasesSidebar: [
{
- type: "autogenerated",
- dirName: "releases",
+ type: 'autogenerated',
+ dirName: 'releases',
},
- ]
-};
+ ],
+}
-module.exports = sidebars;
+module.exports = sidebars
diff --git a/docs/src/containers/Banner/index.js b/docs/src/containers/Banner/index.js
index 07622c63d..3538ab7a9 100644
--- a/docs/src/containers/Banner/index.js
+++ b/docs/src/containers/Banner/index.js
@@ -1,32 +1,43 @@
-import React from "react";
+import React from 'react'
-import { useAppStars } from "@site/src/hooks/useAppStars";
-import { useAppRelease } from "@site/src/hooks/useAppRelease";
+import { useAppStars } from '@site/src/hooks/useAppStars'
+import { useAppRelease } from '@site/src/hooks/useAppRelease'
-import { AiOutlineGithub, AiOutlineTwitter } from "react-icons/ai";
-import { BiLogoDiscordAlt } from "react-icons/bi";
+import { AiOutlineGithub, AiOutlineTwitter } from 'react-icons/ai'
+import { BiLogoDiscordAlt } from 'react-icons/bi'
+import { FaLinkedin } from 'react-icons/fa'
const socials = [
{
icon: ,
- href: "https://twitter.com/janframework",
+ href: 'https://twitter.com/janframework',
},
{
icon: ,
- href: "https://discord.com/invite/FTk2MvZwJH",
+ href: 'https://discord.com/invite/FTk2MvZwJH',
},
{
icon: ,
- href: "https://github.com/janhq/jan",
+ href: 'https://github.com/janhq/jan',
},
-];
+ {
+ icon: ,
+ href: 'https://www.linkedin.com/company/janframework/',
+ },
+]
export default function AnnoncementBanner() {
- const { stargazers } = useAppStars();
- const { release } = useAppRelease();
+ const { stargazers } = useAppStars()
+ const { release } = useAppRelease()
return (
-