docs: add to product specs

This commit is contained in:
0xSage 2023-11-28 15:03:40 +08:00
parent 0258a836a3
commit 9c30b1ce4f
9 changed files with 60 additions and 39 deletions

View File

@ -1,5 +1,6 @@
---
title: Architecture
slug: /specs
---
:::warning
@ -10,35 +11,28 @@ This page is still under construction, and should be read as a scratchpad
## Overview
- Jan built a modular infrastructure on top of Electron, in order to support extensions and AI functionality.
- Jan is largely built on top of its own modules.
- Jan has a modular architecture and is largely built on top of its own modules.
- Jan uses a local [file-based approach](/specs/file-based) for data persistence.
## Modules
Modules are low level, system services. It is similar to OS kernel modules, in that `modules` provide abstractions to device level, basic functionality like the filesystem, device system, databases, AI inference engines, etc.
## Pluggable Modules
Jan exports modules that mirror OpenAIs, exposing similar APIs and objects:
- Modules are modular, atomic implementations of a single OpenAI-compatible endpoint
- Modules can be swapped out for alternate implementations
- The default `messages` module persists messages in thread-specific `.json`
- `messages-postgresql` uses Postgres for production-grade cloud-native environments
| Jan Module | Description | API Docs |
| ---------- | ------------- | ---------------------------- |
| Chat | Inference | [/chat](/api/chat) |
| Models | Models | [/model](/api/model) |
| Assistants | Apps | [/assistant](/api/assistant) |
| Threads | Conversations | [/thread](/api/thread) |
| Messages | Messages | [/message](/api/message) |
<!-- TODO: link npm modules -->
- Jan currently supports an Electron-based [Desktop UI](https://github.com/janhq/jan) and a C++ inference engine called [Nitro](https://nitro.jan.ai/docs/).
## Extensions
Extensions are feature level services that include both UI and logic implementation.
Jan has an Extensions API inspired by VSCode. In fact, most of Jan's core services are built as extensions.
<!-- TODO[@linh]: add all of @linh's specs here -->
Jan supports the following OpenAI compatible extensions:
| Jan Module | Description | API Docs |
| ---------- | ------------- | --------------------------------------------- |
| Chat | Inference | [/chats](/api-reference/#tag/Chat-Completion) |
| Models | Models | [/models](/api-reference/#tag/Models) |
| Assistants | Apps | [/assistants](/api-reference/#tag/Assistants) |
| Threads | Conversations | [/threads](/api-reference/#tag/Threads) |
| Messages | Messages | [/messages](/api-reference/#tag/Messages) |
<!-- TODO: link npm modules -->
## Modules
Modules are low level, system services. It is similar to OS kernel modules. Modules provide abstractions to basic, device level functionality like working with the filesystem, device system, databases, AI inference engines, etc.
Jan follows the [dependency inversion principle](https://en.wikipedia.org/wiki/Dependency_inversion_principle) such that `modules` expose the interfaces that `extensions` can then implement.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 152 KiB

After

Width:  |  Height:  |  Size: 172 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 629 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 105 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 96 KiB

View File

@ -5,13 +5,13 @@ slug: /specs/chat
## Overview
## Motivation
A home screen for users to chat with [assistants](/specs/assistants) via conversation [threads](/specs/threads).
![alt text](../img/chat-screen.png)
## User Stories
<!-- Can also be used as a QA Checklist -->
![alt text](../img/chat-screen.png)
- I can
- I can
- Users can chat with `Jan` the default assistant
- Users can customize chat settings like model parameters via both the GUI & `thread.json`

View File

@ -5,10 +5,14 @@ slug: /specs/hub
## Overview
## Motivation
The Hub is like a store for everything, where users can discover and download models, assistants, and more.
![alt text](../img/hub-screen.png)
## User Stories
<!-- wireframe here -->
<!-- Can also be used as a QA Checklist -->
## <!-- Can also be used as a QA Checklist -->
- Users can discover recommended models (Jan ships with a few preconfigured `model.json` files)
- Users can download models suitable for their devices, e.g. compatible with their RAM
- Users can download models via a HuggingFace URL (coming soon)

View File

@ -5,9 +5,28 @@ slug: /specs/settings
## Overview
## Motivation
A settings page for users to add extensions, configure model settings, change app appearance, add keyboard shortcuts, and a plethora of other personalizations.
![alt text](../img/settings-screen.png)
## User Stories
<!-- wireframe here -->
<!-- Can also be used as a QA Checklist -->
### General Settings
- Users can customize `port` number
- Users can customize `janroot` folder location
### Extensions Settings
- Users can add, delete, and configure extensions
### Model Settings
- Users can configure default model parameters and settings
- Users can delete models
### Appearance
- Users can set color themes and dark/light modes

View File

@ -5,9 +5,13 @@ slug: /specs/system-monitor
## Overview
## Motivation
An activity screen to monitor system health and running models.
![alt text](../img/system-screen.png)
## User Stories
<!-- wireframe here -->
<!-- Can also be used as a QA Checklist -->
- Users can see disk and ram utilization
- Users can start and stop models based on system health