diff --git a/website/astro.config.mjs b/website/astro.config.mjs index 7f90ff7d7..97ac22f69 100644 --- a/website/astro.config.mjs +++ b/website/astro.config.mjs @@ -3,125 +3,183 @@ import { defineConfig } from 'astro/config' import starlight from '@astrojs/starlight' import starlightThemeRapide from 'starlight-theme-rapide' import starlightSidebarTopics from 'starlight-sidebar-topics' +import starlightVideos from 'starlight-videos' // https://astro.build/config export default defineConfig({ integrations: [ starlight({ title: '👋 Jan', - favicon: "jan2.png", + favicon: 'jan2.png', plugins: [ starlightThemeRapide(), - starlightSidebarTopics([ + starlightVideos(), + starlightSidebarTopics( + [ + { + label: 'Jan', + link: '/', + icon: 'rocket', + items: [ + { + label: 'HOW TO', + items: [ + { + label: 'Install 👋 Jan', + collapsed: true, + autogenerate: { directory: 'jan/installation' }, + }, + { label: 'Start Chatting', slug: 'jan/threads' }, + { + label: 'Use Jan Models', + collapsed: true, + autogenerate: { directory: 'jan/jan-models' }, + }, + { label: 'Assistants', slug: 'jan/assistants' }, + ], + }, + { + label: 'TUTORIALS', + items: [ + { label: 'Translation', slug: 'jan/tutorials/translation' }, + { + label: 'Creative Writing', + slug: 'jan/tutorials/creative-writing', + }, + ], + }, + { + label: 'EXPLANATION', + items: [ + { + label: 'Local AI Engine', + slug: 'jan/explanation/llama-cpp', + }, + { + label: 'Model Parameters', + slug: 'jan/explanation/model-parameters', + }, + ], + }, + { + label: 'ADVANCED', + items: [ + { label: 'Manage Models', slug: 'jan/manage-models' }, + { label: 'Model Context Protocol', slug: 'jan/mcp' }, + { + label: 'MCP Examples', + collapsed: true, + autogenerate: { directory: 'jan/mcp-examples' }, + }, + ], + }, + { + label: 'REFERENCE', + items: [ + { label: 'Settings', slug: 'jan/settings' }, + { label: 'Jan Data Folder', slug: 'jan/data-folder' }, + { label: 'Troubleshooting', slug: 'jan/troubleshooting' }, + { label: 'Privacy Policy', slug: 'jan/privacy' }, + ], + }, + ], + }, + { + label: 'Local Server', + link: '/local-server/', + icon: 'setting', + items: [ + { label: 'Server Setup', slug: 'local-server/api-server' }, + { label: 'Jan Data Folder', slug: 'local-server/data-folder' }, + { label: 'Settings', slug: 'local-server/settings' }, + { label: 'Llama.cpp', slug: 'local-server/llama-cpp' }, + { + label: 'Integrations', + collapsed: true, + autogenerate: { directory: 'local-server/integrations' }, + }, + { + label: 'Troubleshooting', + slug: 'local-server/troubleshooting', + }, + ], + }, + { + label: 'Products', + link: '/products/', + icon: 'forward-slash', + items: [ + { label: 'Overview', slug: 'products' }, + { + label: 'Models', + autogenerate: { directory: 'products/models' }, + }, + { + label: 'Platforms', + autogenerate: { directory: 'products/platforms' }, + }, + { + label: 'Tools', + autogenerate: { directory: 'products/tools' }, + }, + ], + }, + { + label: 'Jan AI University', + link: '/university/', + icon: 'star', + id: 'university', + items: [ + { label: 'Welcome', slug: 'university' }, + { + label: 'Getting Started Path', + items: [ + { + label: 'Getting to Know Jan Series', + slug: 'university/getting-started/getting-to-know-jan', + }, + { + label: 'Installation Guide', + slug: 'university/getting-started/installation', + }, + { + label: 'Introduction Course', + slug: 'university/getting-started/introduction', + }, + ], + }, + { + label: 'Advanced Path', + items: [ + { + label: 'Using MCPs Tutorial Series', + slug: 'university/advanced/using-mcps', + }, + { + label: 'API Integration', + slug: 'university/advanced/api-integration', + }, + { + label: 'Performance Optimization', + slug: 'university/advanced/performance-optimization', + }, + ], + }, + ], + }, + ], { - label: 'Jan', - link: '/', - icon: 'rocket', - items: [ - { - label: 'HOW TO', - items: [ - { - label: 'Install 👋 Jan', - collapsed: true, - autogenerate: { directory: 'jan/installation' }, - }, - { label: 'Start Chatting', slug: 'jan/threads' }, - { - label: 'Use Jan Models', - collapsed: true, - autogenerate: { directory: 'jan/jan-models' }, - }, - { label: 'Assistants', slug: 'jan/assistants' }, - ], - }, - { - label: 'TUTORIALS', - items: [ - { label: 'Translation', slug: 'jan/tutorials/translation' }, - { - label: 'Creative Writing', - slug: 'jan/tutorials/creative-writing', - }, - ], - }, - { - label: 'EXPLANATION', - items: [ - { - label: 'Local AI Engine', - slug: 'jan/explanation/llama-cpp', - }, - { - label: 'Model Parameters', - slug: 'jan/explanation/model-parameters', - }, - ], - }, - { - label: 'ADVANCED', - items: [ - { label: 'Manage Models', slug: 'jan/manage-models' }, - { label: 'Model Context Protocol', slug: 'jan/mcp' }, - { - label: 'MCP Examples', - collapsed: true, - autogenerate: { directory: 'jan/mcp-examples' }, - }, - ], - }, - { - label: 'REFERENCE', - items: [ - { label: 'Settings', slug: 'jan/settings' }, - { label: 'Jan Data Folder', slug: 'jan/data-folder' }, - { label: 'Troubleshooting', slug: 'jan/troubleshooting' }, - { label: 'Privacy Policy', slug: 'jan/privacy' }, - ], - }, - ], - }, - { - label: 'Local Server', - link: '/local-server/', - icon: 'setting', - items: [ - { label: 'Server Setup', slug: 'local-server/api-server' }, - { label: 'Jan Data Folder', slug: 'local-server/data-folder' }, - { label: 'Settings', slug: 'local-server/settings' }, - { label: 'Llama.cpp', slug: 'local-server/llama-cpp' }, - { - label: 'Integrations', - collapsed: true, - autogenerate: { directory: 'local-server/integrations' }, - }, - { - label: 'Troubleshooting', - slug: 'local-server/troubleshooting', - }, - ], - }, - { - label: 'Products', - link: '/products/', - icon: 'forward-slash', - items: [ - { label: 'Overview', slug: 'products' }, - { - label: 'Platforms', - autogenerate: { directory: 'products/platforms' }, - }, - { - label: 'Tools', - autogenerate: { directory: 'products/tools' }, - }, - { - label: 'Models', - autogenerate: { directory: 'products/models' }, - }, - ], - }, - ]), + exclude: ['/example'], + topics: { + university: [ + '/university/getting-started/what-is-jan', + '/university/getting-started/privacy-first-ai', + '/university/advanced/mcp-introduction', + '/university/advanced/search-integration-exa', + ], + }, + } + ), ], social: [ { diff --git a/website/bun.lock b/website/bun.lock index 3f435d7ca..64b203928 100644 --- a/website/bun.lock +++ b/website/bun.lock @@ -9,10 +9,13 @@ "sharp": "^0.34.2", "starlight-sidebar-topics": "^0.6.0", "starlight-theme-rapide": "^0.5.1", + "starlight-videos": "^0.3.0", }, }, }, "packages": { + "@astro-community/astro-embed-youtube": ["@astro-community/astro-embed-youtube@0.5.6", "", { "dependencies": { "lite-youtube-embed": "^0.3.3" }, "peerDependencies": { "astro": "^2.0.0 || ^3.0.0-beta || ^4.0.0-beta || ^5.0.0-beta" } }, "sha512-/mRfCl/eTBUz0kmjD1psOy0qoDDBorVp0QumUacjFcIkBullYtbeFQ2ZGZ+3N/tA6cR/OIyzr2QA4dQXlY6USg=="], + "@astrojs/compiler": ["@astrojs/compiler@2.12.2", "", {}, "sha512-w2zfvhjNCkNMmMMOn5b0J8+OmUaBL1o40ipMvqcG6NRpdC+lKxmTi48DT8Xw0SzJ3AfmeFLB45zXZXtmbsjcgw=="], "@astrojs/internal-helpers": ["@astrojs/internal-helpers@0.6.1", "", {}, "sha512-l5Pqf6uZu31aG+3Lv8nl/3s4DbUzdlxTWDof4pEpto6GUJNhhCbelVi9dEyurOVyqaelwmS9oSyOWOENSfgo9A=="], @@ -507,12 +510,16 @@ "is-wsl": ["is-wsl@3.1.0", "", { "dependencies": { "is-inside-container": "^1.0.0" } }, "sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw=="], + "iso8601-duration": ["iso8601-duration@2.1.2", "", {}, "sha512-yXteYUiKv6x8seaDzyBwnZtPpmx766KfvQuaVNyPifYOjmPdOo3ajd4phDNa7Y5mTQGnXsNEcXFtVun1FjYXxQ=="], + "js-yaml": ["js-yaml@4.1.0", "", { "dependencies": { "argparse": "^2.0.1" }, "bin": { "js-yaml": "bin/js-yaml.js" } }, "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA=="], "kleur": ["kleur@4.1.5", "", {}, "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ=="], "klona": ["klona@2.0.6", "", {}, "sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA=="], + "lite-youtube-embed": ["lite-youtube-embed@0.3.3", "", {}, "sha512-gFfVVnj6NRjxVfJKo3qoLtpi0v5mn3AcR4eKD45wrxQuxzveFJUb+7Cr6uV6n+DjO8X3p0UzPPquhGt0H/y+NA=="], + "longest-streak": ["longest-streak@3.1.0", "", {}, "sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g=="], "lru-cache": ["lru-cache@10.4.3", "", {}, "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ=="], @@ -777,10 +784,14 @@ "space-separated-tokens": ["space-separated-tokens@2.0.2", "", {}, "sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q=="], + "srt-parser-2": ["srt-parser-2@1.2.3", "", { "bin": { "srt-parser-2": "bin/index.js" } }, "sha512-dANP1AyJTI503H0/kXwRza+7QxDB3BqeFvEKTF4MI9lQcBe8JbRUQTKVIGzGABJCwBovEYavZ2Qsdm/s8XKz8A=="], + "starlight-sidebar-topics": ["starlight-sidebar-topics@0.6.0", "", { "dependencies": { "picomatch": "^4.0.2" }, "peerDependencies": { "@astrojs/starlight": ">=0.32.0" } }, "sha512-ysmOR7zaHYKtk18/mpW4MbEMDioR/ZBsisu9bdQrq0v9BlHWpW7gAdWlqFWO9zdv1P7l0Mo1WKd0wJ0UtqOVEQ=="], "starlight-theme-rapide": ["starlight-theme-rapide@0.5.1", "", { "peerDependencies": { "@astrojs/starlight": ">=0.34.0" } }, "sha512-QRF6mzcYHLEX5UpUvOPXVVwISS298siIJLcKextoMLhXcnF12nX+IYJ0LNxFk9XaPbX9uDXIieSBJf5Pztkteg=="], + "starlight-videos": ["starlight-videos@0.3.0", "", { "dependencies": { "@astro-community/astro-embed-youtube": "^0.5.6", "hastscript": "^9.0.0", "iso8601-duration": "^2.1.2", "srt-parser-2": "^1.2.3", "unist-util-visit": "^5.0.0" }, "peerDependencies": { "@astrojs/starlight": ">=0.34.0" } }, "sha512-1yvFUEn3P+ZjuGr5COswQp14cZdIvsGjg9lqDIyW5clCrZaBiDMSNPLYngyQozaDbrublEp6/V9HbJR6sGnSOA=="], + "stream-replace-string": ["stream-replace-string@2.0.0", "", {}, "sha512-TlnjJ1C0QrmxRNrON00JvaFFlNh5TTG00APw23j74ET7gkQpTASi6/L2fuiav8pzK715HXtUeClpBTw2NPSn6w=="], "string-width": ["string-width@7.2.0", "", { "dependencies": { "emoji-regex": "^10.3.0", "get-east-asian-width": "^1.0.0", "strip-ansi": "^7.1.0" } }, "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ=="], diff --git a/website/package.json b/website/package.json index 024b879d2..3b409199b 100644 --- a/website/package.json +++ b/website/package.json @@ -14,6 +14,7 @@ "astro": "^5.6.1", "sharp": "^0.34.2", "starlight-sidebar-topics": "^0.6.0", - "starlight-theme-rapide": "^0.5.1" + "starlight-theme-rapide": "^0.5.1", + "starlight-videos": "^0.3.0" } } \ No newline at end of file diff --git a/website/src/assets/jan_mobile.png b/website/src/assets/jan_mobile.png new file mode 100644 index 000000000..5257bc98d Binary files /dev/null and b/website/src/assets/jan_mobile.png differ diff --git a/website/src/assets/jan_mobile2.png b/website/src/assets/jan_mobile2.png new file mode 100644 index 000000000..eb5275431 Binary files /dev/null and b/website/src/assets/jan_mobile2.png differ diff --git a/website/src/assets/jan_mobile3.png b/website/src/assets/jan_mobile3.png new file mode 100644 index 000000000..b81c86919 Binary files /dev/null and b/website/src/assets/jan_mobile3.png differ diff --git a/website/src/assets/jan_mobile4.png b/website/src/assets/jan_mobile4.png new file mode 100644 index 000000000..b54c04e7b Binary files /dev/null and b/website/src/assets/jan_mobile4.png differ diff --git a/website/src/assets/jan_mobile5.png b/website/src/assets/jan_mobile5.png new file mode 100644 index 000000000..7332186e1 Binary files /dev/null and b/website/src/assets/jan_mobile5.png differ diff --git a/website/src/assets/jan_mobile6.png b/website/src/assets/jan_mobile6.png new file mode 100644 index 000000000..abe80cf0f Binary files /dev/null and b/website/src/assets/jan_mobile6.png differ diff --git a/website/src/assets/jan_mobile7.png b/website/src/assets/jan_mobile7.png new file mode 100644 index 000000000..f010fe08b Binary files /dev/null and b/website/src/assets/jan_mobile7.png differ diff --git a/website/src/content.config.ts b/website/src/content.config.ts index d9ee8c9d1..ee21da167 100644 --- a/website/src/content.config.ts +++ b/website/src/content.config.ts @@ -1,7 +1,8 @@ import { defineCollection } from 'astro:content'; import { docsLoader } from '@astrojs/starlight/loaders'; import { docsSchema } from '@astrojs/starlight/schema'; +import { videosSchema } from 'starlight-videos/schemas'; export const collections = { - docs: defineCollection({ loader: docsLoader(), schema: docsSchema() }), + docs: defineCollection({ loader: docsLoader(), schema: docsSchema({ extend: videosSchema }) }), }; diff --git a/website/src/content/docs/products/index.mdx b/website/src/content/docs/products/index.mdx index 31eccb01d..3d8c720fa 100644 --- a/website/src/content/docs/products/index.mdx +++ b/website/src/content/docs/products/index.mdx @@ -3,31 +3,37 @@ title: Jan's Product Vision description: AI that runs where you need it, how you need it sidebar: order: 0 +banner: + content: Jan is OPEN SUPERINTELLIGENCE that you can Self Host! You can connect to the world while staying local. --- import { Aside, Card, CardGrid } from '@astrojs/starlight/components'; -Jan is evolving from a local AI application to a complete AI Agent platform. We combine models, applications, and tools to solve real problems. +Jan is evolving from a local AI application to a complete full-stack AI solution that you can +self-host. This includes models, applications, and tools to solve real problems. ## What We're Building **Jan Agent** = Jan Models + Jan Application + Jan Tools -Unlike other AI assistants that are just wrappers around Claude or GPT-4, Jan provides: -- Our own models optimized for local and private use +Unlike other AI assistants that do specific tasks with one model or have many models with +a myriad of solutions, Jan provides: +- Our own models optimized for local and private use. As of now, we have Jan Nano in 2 flavors and +Lucy but more are coming soon - Applications that work across all your devices - Tools that actually get things done ## Two Modes, One Experience ### Local (Incognito) Mode -Your AI runs entirely on your device. Complete privacy, no internet required. +This mode allows you to run AI models entirely on your device, giving you complete +privacy with no internet required. -### Cloud Mode +### Cloud Mode Connect to more powerful models when needed - either self-hosted or via jan.ai. - -## Device Requirements - -### iOS -- iPhone 11 or newer -- iOS 15+ -- 8GB storage for Local Mode - -### Android -- 8GB RAM minimum -- Android 11+ -- 8GB storage for Local Mode - ## Key Features - - - Move from home to office to airplane. Jan adapts automatically. - + +Move from home to office to airplane. One-click and Jan adapts immediately. - - Talk to Jan naturally. Responses can be spoken too. - +![Jan Mobile Home](../../../../assets/jan_mobile6.png) + - - Conversations, settings, and preferences follow you across devices. - - + +Talk to Jan naturally. Responses can be spoken too. + +![Jan Mobile Home](../../../../assets/jan_mobile5.png) + + + +Conversations, settings, and preferences follow you across devices. +![Jan Mobile Home](../../../../assets/jan_mobile7.png) + ## Privacy & Security @@ -112,26 +115,10 @@ The app automatically switches between modes based on what's available. You don' - No cloud backups without permission - Clear data anytime -## Common Questions - -### Do I need to download models to my phone? -No. In Desktop or Server mode, models run remotely. For Local Mode, Jan Nano downloads automatically when needed (6GB). - -### How fast is Local Mode? -On modern phones, expect 30-50 tokens per second. Good enough for most conversations. - -### Can I use it without Jan Desktop? -Yes. Use Local Mode or connect to jan.ai (when available). - -### Will it drain my battery? -Desktop/Server modes use minimal battery. Local Mode is like using any intensive app - noticeable but manageable. - -### Is it the same as desktop? -Same Jan, smaller screen. All the privacy, none of the complexity. - ## Why Mobile Matters -Your phone is with you always. Your AI assistant should be too. But that doesn't mean sacrificing privacy or control. +Your phone is with you always. Your AI assistant should be too. But that doesn't mean sacrificing +privacy or control. Jan Mobile proves you can have: - Powerful AI anywhere @@ -141,17 +128,14 @@ Jan Mobile proves you can have: ## Coming Features -### Launch (Q1 2026) +### Launch (Q4 2025) - iOS and Android apps - Basic chat interface - Three connection modes -- Voice input ### Post-Launch -- Widget support -- Siri/Assistant integration +- voice input - Background sync -- Notification summaries