Merge pull request #5958 from menloresearch/rp/nextra-product-section
2
.github/workflows/jan-docs-new-release.yaml
vendored
@ -23,7 +23,7 @@ jobs:
|
||||
ref: dev
|
||||
- uses: actions/setup-node@v3
|
||||
with:
|
||||
node-version: 18
|
||||
node-version: 20
|
||||
|
||||
- name: Install jq
|
||||
uses: dcarbone/install-jq-action@v2.0.1
|
||||
|
||||
2
.github/workflows/jan-docs.yml
vendored
@ -29,7 +29,7 @@ jobs:
|
||||
- uses: actions/checkout@v3
|
||||
- uses: actions/setup-node@v3
|
||||
with:
|
||||
node-version: 18
|
||||
node-version: 20
|
||||
|
||||
- name: Install jq
|
||||
uses: dcarbone/install-jq-action@v2.0.1
|
||||
|
||||
23
.gitignore
vendored
@ -55,4 +55,25 @@ archive/
|
||||
# auto qa
|
||||
autoqa/trajectories
|
||||
autoqa/recordings
|
||||
autoqa/__pycache__
|
||||
autoqa/__pycache__
|
||||
|
||||
# Astro / Starlight specific
|
||||
website/dist/
|
||||
website/.astro/
|
||||
website/src/content/config.ts.timestamp-*
|
||||
|
||||
# Nextra specific
|
||||
docs/out/
|
||||
docs/.next/
|
||||
|
||||
# General Node.js
|
||||
**/node_modules
|
||||
**/.env
|
||||
**/.env.*
|
||||
**/npm-debug.log*
|
||||
**/yarn-debug.log*
|
||||
**/yarn-error.log*
|
||||
**/pnpm-debug.log*
|
||||
|
||||
# Combined output for local testing
|
||||
combined-output/
|
||||
|
||||
@ -1,643 +0,0 @@
|
||||
{
|
||||
"$ref": "#/definitions/docs",
|
||||
"definitions": {
|
||||
"docs": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"title": {
|
||||
"type": "string"
|
||||
},
|
||||
"description": {
|
||||
"type": "string"
|
||||
},
|
||||
"editUrl": {
|
||||
"anyOf": [
|
||||
{
|
||||
"type": "string",
|
||||
"format": "uri"
|
||||
},
|
||||
{
|
||||
"type": "boolean"
|
||||
}
|
||||
],
|
||||
"default": true
|
||||
},
|
||||
"head": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"tag": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"title",
|
||||
"base",
|
||||
"link",
|
||||
"style",
|
||||
"meta",
|
||||
"script",
|
||||
"noscript",
|
||||
"template"
|
||||
]
|
||||
},
|
||||
"attrs": {
|
||||
"type": "object",
|
||||
"additionalProperties": {
|
||||
"anyOf": [
|
||||
{
|
||||
"type": "string"
|
||||
},
|
||||
{
|
||||
"type": "boolean"
|
||||
},
|
||||
{
|
||||
"not": {}
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"content": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"tag"
|
||||
],
|
||||
"additionalProperties": false
|
||||
},
|
||||
"default": []
|
||||
},
|
||||
"tableOfContents": {
|
||||
"anyOf": [
|
||||
{
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"minHeadingLevel": {
|
||||
"type": "integer",
|
||||
"minimum": 1,
|
||||
"maximum": 6,
|
||||
"default": 2
|
||||
},
|
||||
"maxHeadingLevel": {
|
||||
"type": "integer",
|
||||
"minimum": 1,
|
||||
"maximum": 6,
|
||||
"default": 3
|
||||
}
|
||||
},
|
||||
"additionalProperties": false
|
||||
},
|
||||
{
|
||||
"type": "boolean"
|
||||
}
|
||||
],
|
||||
"default": {
|
||||
"minHeadingLevel": 2,
|
||||
"maxHeadingLevel": 3
|
||||
}
|
||||
},
|
||||
"template": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"doc",
|
||||
"splash"
|
||||
],
|
||||
"default": "doc"
|
||||
},
|
||||
"hero": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"title": {
|
||||
"type": "string"
|
||||
},
|
||||
"tagline": {
|
||||
"type": "string"
|
||||
},
|
||||
"image": {
|
||||
"anyOf": [
|
||||
{
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"alt": {
|
||||
"type": "string",
|
||||
"default": ""
|
||||
},
|
||||
"file": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"file"
|
||||
],
|
||||
"additionalProperties": false
|
||||
},
|
||||
{
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"alt": {
|
||||
"type": "string",
|
||||
"default": ""
|
||||
},
|
||||
"dark": {
|
||||
"type": "string"
|
||||
},
|
||||
"light": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"dark",
|
||||
"light"
|
||||
],
|
||||
"additionalProperties": false
|
||||
},
|
||||
{
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"html": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"html"
|
||||
],
|
||||
"additionalProperties": false
|
||||
}
|
||||
]
|
||||
},
|
||||
"actions": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"text": {
|
||||
"type": "string"
|
||||
},
|
||||
"link": {
|
||||
"type": "string"
|
||||
},
|
||||
"variant": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"primary",
|
||||
"secondary",
|
||||
"minimal"
|
||||
],
|
||||
"default": "primary"
|
||||
},
|
||||
"icon": {
|
||||
"anyOf": [
|
||||
{
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"up-caret",
|
||||
"down-caret",
|
||||
"right-caret",
|
||||
"left-caret",
|
||||
"up-arrow",
|
||||
"down-arrow",
|
||||
"right-arrow",
|
||||
"left-arrow",
|
||||
"bars",
|
||||
"translate",
|
||||
"pencil",
|
||||
"pen",
|
||||
"document",
|
||||
"add-document",
|
||||
"setting",
|
||||
"external",
|
||||
"download",
|
||||
"cloud-download",
|
||||
"moon",
|
||||
"sun",
|
||||
"laptop",
|
||||
"open-book",
|
||||
"information",
|
||||
"magnifier",
|
||||
"forward-slash",
|
||||
"close",
|
||||
"error",
|
||||
"warning",
|
||||
"approve-check-circle",
|
||||
"approve-check",
|
||||
"rocket",
|
||||
"star",
|
||||
"puzzle",
|
||||
"list-format",
|
||||
"random",
|
||||
"comment",
|
||||
"comment-alt",
|
||||
"heart",
|
||||
"github",
|
||||
"gitlab",
|
||||
"bitbucket",
|
||||
"codePen",
|
||||
"farcaster",
|
||||
"discord",
|
||||
"gitter",
|
||||
"twitter",
|
||||
"x.com",
|
||||
"mastodon",
|
||||
"codeberg",
|
||||
"youtube",
|
||||
"threads",
|
||||
"linkedin",
|
||||
"twitch",
|
||||
"azureDevOps",
|
||||
"microsoftTeams",
|
||||
"instagram",
|
||||
"stackOverflow",
|
||||
"telegram",
|
||||
"rss",
|
||||
"facebook",
|
||||
"email",
|
||||
"phone",
|
||||
"reddit",
|
||||
"patreon",
|
||||
"signal",
|
||||
"slack",
|
||||
"matrix",
|
||||
"hackerOne",
|
||||
"openCollective",
|
||||
"blueSky",
|
||||
"discourse",
|
||||
"zulip",
|
||||
"pinterest",
|
||||
"tiktok",
|
||||
"astro",
|
||||
"alpine",
|
||||
"pnpm",
|
||||
"biome",
|
||||
"bun",
|
||||
"mdx",
|
||||
"apple",
|
||||
"linux",
|
||||
"homebrew",
|
||||
"nix",
|
||||
"starlight",
|
||||
"pkl",
|
||||
"node",
|
||||
"cloudflare",
|
||||
"vercel",
|
||||
"netlify",
|
||||
"deno",
|
||||
"jsr",
|
||||
"nostr",
|
||||
"backstage",
|
||||
"confluence",
|
||||
"jira",
|
||||
"storybook",
|
||||
"vscode",
|
||||
"jetbrains",
|
||||
"zed",
|
||||
"vim",
|
||||
"figma",
|
||||
"sketch",
|
||||
"npm",
|
||||
"sourcehut",
|
||||
"substack",
|
||||
"seti:folder",
|
||||
"seti:bsl",
|
||||
"seti:mdo",
|
||||
"seti:salesforce",
|
||||
"seti:asm",
|
||||
"seti:bicep",
|
||||
"seti:bazel",
|
||||
"seti:c",
|
||||
"seti:c-sharp",
|
||||
"seti:html",
|
||||
"seti:cpp",
|
||||
"seti:clojure",
|
||||
"seti:coldfusion",
|
||||
"seti:config",
|
||||
"seti:crystal",
|
||||
"seti:crystal_embedded",
|
||||
"seti:json",
|
||||
"seti:css",
|
||||
"seti:csv",
|
||||
"seti:xls",
|
||||
"seti:cu",
|
||||
"seti:cake",
|
||||
"seti:cake_php",
|
||||
"seti:d",
|
||||
"seti:word",
|
||||
"seti:elixir",
|
||||
"seti:elixir_script",
|
||||
"seti:hex",
|
||||
"seti:elm",
|
||||
"seti:favicon",
|
||||
"seti:f-sharp",
|
||||
"seti:git",
|
||||
"seti:go",
|
||||
"seti:godot",
|
||||
"seti:gradle",
|
||||
"seti:grails",
|
||||
"seti:graphql",
|
||||
"seti:hacklang",
|
||||
"seti:haml",
|
||||
"seti:mustache",
|
||||
"seti:haskell",
|
||||
"seti:haxe",
|
||||
"seti:jade",
|
||||
"seti:java",
|
||||
"seti:javascript",
|
||||
"seti:jinja",
|
||||
"seti:julia",
|
||||
"seti:karma",
|
||||
"seti:kotlin",
|
||||
"seti:dart",
|
||||
"seti:liquid",
|
||||
"seti:livescript",
|
||||
"seti:lua",
|
||||
"seti:markdown",
|
||||
"seti:argdown",
|
||||
"seti:info",
|
||||
"seti:clock",
|
||||
"seti:maven",
|
||||
"seti:nim",
|
||||
"seti:github",
|
||||
"seti:notebook",
|
||||
"seti:nunjucks",
|
||||
"seti:npm",
|
||||
"seti:ocaml",
|
||||
"seti:odata",
|
||||
"seti:perl",
|
||||
"seti:php",
|
||||
"seti:pipeline",
|
||||
"seti:pddl",
|
||||
"seti:plan",
|
||||
"seti:happenings",
|
||||
"seti:powershell",
|
||||
"seti:prisma",
|
||||
"seti:pug",
|
||||
"seti:puppet",
|
||||
"seti:purescript",
|
||||
"seti:python",
|
||||
"seti:react",
|
||||
"seti:rescript",
|
||||
"seti:R",
|
||||
"seti:ruby",
|
||||
"seti:rust",
|
||||
"seti:sass",
|
||||
"seti:spring",
|
||||
"seti:slim",
|
||||
"seti:smarty",
|
||||
"seti:sbt",
|
||||
"seti:scala",
|
||||
"seti:ethereum",
|
||||
"seti:stylus",
|
||||
"seti:svelte",
|
||||
"seti:swift",
|
||||
"seti:db",
|
||||
"seti:terraform",
|
||||
"seti:tex",
|
||||
"seti:default",
|
||||
"seti:twig",
|
||||
"seti:typescript",
|
||||
"seti:tsconfig",
|
||||
"seti:vala",
|
||||
"seti:vite",
|
||||
"seti:vue",
|
||||
"seti:wasm",
|
||||
"seti:wat",
|
||||
"seti:xml",
|
||||
"seti:yml",
|
||||
"seti:prolog",
|
||||
"seti:zig",
|
||||
"seti:zip",
|
||||
"seti:wgt",
|
||||
"seti:illustrator",
|
||||
"seti:photoshop",
|
||||
"seti:pdf",
|
||||
"seti:font",
|
||||
"seti:image",
|
||||
"seti:svg",
|
||||
"seti:sublime",
|
||||
"seti:code-search",
|
||||
"seti:shell",
|
||||
"seti:video",
|
||||
"seti:audio",
|
||||
"seti:windows",
|
||||
"seti:jenkins",
|
||||
"seti:babel",
|
||||
"seti:bower",
|
||||
"seti:docker",
|
||||
"seti:code-climate",
|
||||
"seti:eslint",
|
||||
"seti:firebase",
|
||||
"seti:firefox",
|
||||
"seti:gitlab",
|
||||
"seti:grunt",
|
||||
"seti:gulp",
|
||||
"seti:ionic",
|
||||
"seti:platformio",
|
||||
"seti:rollup",
|
||||
"seti:stylelint",
|
||||
"seti:yarn",
|
||||
"seti:webpack",
|
||||
"seti:lock",
|
||||
"seti:license",
|
||||
"seti:makefile",
|
||||
"seti:heroku",
|
||||
"seti:todo",
|
||||
"seti:ignored"
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "string",
|
||||
"pattern": "^\\<svg"
|
||||
}
|
||||
]
|
||||
},
|
||||
"attrs": {
|
||||
"type": "object",
|
||||
"additionalProperties": {
|
||||
"type": [
|
||||
"string",
|
||||
"number",
|
||||
"boolean"
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"text",
|
||||
"link"
|
||||
],
|
||||
"additionalProperties": false
|
||||
},
|
||||
"default": []
|
||||
}
|
||||
},
|
||||
"additionalProperties": false
|
||||
},
|
||||
"lastUpdated": {
|
||||
"anyOf": [
|
||||
{
|
||||
"anyOf": [
|
||||
{
|
||||
"type": "string",
|
||||
"format": "date-time"
|
||||
},
|
||||
{
|
||||
"type": "string",
|
||||
"format": "date"
|
||||
},
|
||||
{
|
||||
"type": "integer",
|
||||
"format": "unix-time"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "boolean"
|
||||
}
|
||||
]
|
||||
},
|
||||
"prev": {
|
||||
"anyOf": [
|
||||
{
|
||||
"type": "boolean"
|
||||
},
|
||||
{
|
||||
"type": "string"
|
||||
},
|
||||
{
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"link": {
|
||||
"type": "string"
|
||||
},
|
||||
"label": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"additionalProperties": false
|
||||
}
|
||||
]
|
||||
},
|
||||
"next": {
|
||||
"anyOf": [
|
||||
{
|
||||
"type": "boolean"
|
||||
},
|
||||
{
|
||||
"type": "string"
|
||||
},
|
||||
{
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"link": {
|
||||
"type": "string"
|
||||
},
|
||||
"label": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"additionalProperties": false
|
||||
}
|
||||
]
|
||||
},
|
||||
"sidebar": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"order": {
|
||||
"type": "number"
|
||||
},
|
||||
"label": {
|
||||
"type": "string"
|
||||
},
|
||||
"hidden": {
|
||||
"type": "boolean",
|
||||
"default": false
|
||||
},
|
||||
"badge": {
|
||||
"anyOf": [
|
||||
{
|
||||
"type": "string"
|
||||
},
|
||||
{
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"variant": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"note",
|
||||
"danger",
|
||||
"success",
|
||||
"caution",
|
||||
"tip",
|
||||
"default"
|
||||
],
|
||||
"default": "default"
|
||||
},
|
||||
"class": {
|
||||
"type": "string"
|
||||
},
|
||||
"text": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"text"
|
||||
],
|
||||
"additionalProperties": false
|
||||
}
|
||||
]
|
||||
},
|
||||
"attrs": {
|
||||
"type": "object",
|
||||
"additionalProperties": {
|
||||
"anyOf": [
|
||||
{
|
||||
"type": "string"
|
||||
},
|
||||
{
|
||||
"type": "number"
|
||||
},
|
||||
{
|
||||
"type": "boolean"
|
||||
},
|
||||
{
|
||||
"not": {}
|
||||
}
|
||||
]
|
||||
},
|
||||
"default": {}
|
||||
}
|
||||
},
|
||||
"additionalProperties": false,
|
||||
"default": {}
|
||||
},
|
||||
"banner": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"content": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"content"
|
||||
],
|
||||
"additionalProperties": false
|
||||
},
|
||||
"pagefind": {
|
||||
"type": "boolean",
|
||||
"default": true
|
||||
},
|
||||
"draft": {
|
||||
"type": "boolean",
|
||||
"default": false
|
||||
},
|
||||
"$schema": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"title"
|
||||
],
|
||||
"additionalProperties": false
|
||||
}
|
||||
},
|
||||
"$schema": "http://json-schema.org/draft-07/schema#"
|
||||
}
|
||||
@ -1 +0,0 @@
|
||||
export default new Map();
|
||||
@ -1 +0,0 @@
|
||||
export default new Map();
|
||||
164
docs/.astro/content.d.ts
vendored
@ -1,164 +0,0 @@
|
||||
declare module 'astro:content' {
|
||||
export interface RenderResult {
|
||||
Content: import('astro/runtime/server/index.js').AstroComponentFactory;
|
||||
headings: import('astro').MarkdownHeading[];
|
||||
remarkPluginFrontmatter: Record<string, any>;
|
||||
}
|
||||
interface Render {
|
||||
'.md': Promise<RenderResult>;
|
||||
}
|
||||
|
||||
export interface RenderedContent {
|
||||
html: string;
|
||||
metadata?: {
|
||||
imagePaths: Array<string>;
|
||||
[key: string]: unknown;
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
declare module 'astro:content' {
|
||||
type Flatten<T> = T extends { [K: string]: infer U } ? U : never;
|
||||
|
||||
export type CollectionKey = keyof AnyEntryMap;
|
||||
export type CollectionEntry<C extends CollectionKey> = Flatten<AnyEntryMap[C]>;
|
||||
|
||||
export type ContentCollectionKey = keyof ContentEntryMap;
|
||||
export type DataCollectionKey = keyof DataEntryMap;
|
||||
|
||||
type AllValuesOf<T> = T extends any ? T[keyof T] : never;
|
||||
type ValidContentEntrySlug<C extends keyof ContentEntryMap> = AllValuesOf<
|
||||
ContentEntryMap[C]
|
||||
>['slug'];
|
||||
|
||||
export type ReferenceDataEntry<
|
||||
C extends CollectionKey,
|
||||
E extends keyof DataEntryMap[C] = string,
|
||||
> = {
|
||||
collection: C;
|
||||
id: E;
|
||||
};
|
||||
export type ReferenceContentEntry<
|
||||
C extends keyof ContentEntryMap,
|
||||
E extends ValidContentEntrySlug<C> | (string & {}) = string,
|
||||
> = {
|
||||
collection: C;
|
||||
slug: E;
|
||||
};
|
||||
|
||||
/** @deprecated Use `getEntry` instead. */
|
||||
export function getEntryBySlug<
|
||||
C extends keyof ContentEntryMap,
|
||||
E extends ValidContentEntrySlug<C> | (string & {}),
|
||||
>(
|
||||
collection: C,
|
||||
// Note that this has to accept a regular string too, for SSR
|
||||
entrySlug: E,
|
||||
): E extends ValidContentEntrySlug<C>
|
||||
? Promise<CollectionEntry<C>>
|
||||
: Promise<CollectionEntry<C> | undefined>;
|
||||
|
||||
/** @deprecated Use `getEntry` instead. */
|
||||
export function getDataEntryById<C extends keyof DataEntryMap, E extends keyof DataEntryMap[C]>(
|
||||
collection: C,
|
||||
entryId: E,
|
||||
): Promise<CollectionEntry<C>>;
|
||||
|
||||
export function getCollection<C extends keyof AnyEntryMap, E extends CollectionEntry<C>>(
|
||||
collection: C,
|
||||
filter?: (entry: CollectionEntry<C>) => entry is E,
|
||||
): Promise<E[]>;
|
||||
export function getCollection<C extends keyof AnyEntryMap>(
|
||||
collection: C,
|
||||
filter?: (entry: CollectionEntry<C>) => unknown,
|
||||
): Promise<CollectionEntry<C>[]>;
|
||||
|
||||
export function getEntry<
|
||||
C extends keyof ContentEntryMap,
|
||||
E extends ValidContentEntrySlug<C> | (string & {}),
|
||||
>(
|
||||
entry: ReferenceContentEntry<C, E>,
|
||||
): E extends ValidContentEntrySlug<C>
|
||||
? Promise<CollectionEntry<C>>
|
||||
: Promise<CollectionEntry<C> | undefined>;
|
||||
export function getEntry<
|
||||
C extends keyof DataEntryMap,
|
||||
E extends keyof DataEntryMap[C] | (string & {}),
|
||||
>(
|
||||
entry: ReferenceDataEntry<C, E>,
|
||||
): E extends keyof DataEntryMap[C]
|
||||
? Promise<DataEntryMap[C][E]>
|
||||
: Promise<CollectionEntry<C> | undefined>;
|
||||
export function getEntry<
|
||||
C extends keyof ContentEntryMap,
|
||||
E extends ValidContentEntrySlug<C> | (string & {}),
|
||||
>(
|
||||
collection: C,
|
||||
slug: E,
|
||||
): E extends ValidContentEntrySlug<C>
|
||||
? Promise<CollectionEntry<C>>
|
||||
: Promise<CollectionEntry<C> | undefined>;
|
||||
export function getEntry<
|
||||
C extends keyof DataEntryMap,
|
||||
E extends keyof DataEntryMap[C] | (string & {}),
|
||||
>(
|
||||
collection: C,
|
||||
id: E,
|
||||
): E extends keyof DataEntryMap[C]
|
||||
? string extends keyof DataEntryMap[C]
|
||||
? Promise<DataEntryMap[C][E]> | undefined
|
||||
: Promise<DataEntryMap[C][E]>
|
||||
: Promise<CollectionEntry<C> | undefined>;
|
||||
|
||||
/** Resolve an array of entry references from the same collection */
|
||||
export function getEntries<C extends keyof ContentEntryMap>(
|
||||
entries: ReferenceContentEntry<C, ValidContentEntrySlug<C>>[],
|
||||
): Promise<CollectionEntry<C>[]>;
|
||||
export function getEntries<C extends keyof DataEntryMap>(
|
||||
entries: ReferenceDataEntry<C, keyof DataEntryMap[C]>[],
|
||||
): Promise<CollectionEntry<C>[]>;
|
||||
|
||||
export function render<C extends keyof AnyEntryMap>(
|
||||
entry: AnyEntryMap[C][string],
|
||||
): Promise<RenderResult>;
|
||||
|
||||
export function reference<C extends keyof AnyEntryMap>(
|
||||
collection: C,
|
||||
): import('astro/zod').ZodEffects<
|
||||
import('astro/zod').ZodString,
|
||||
C extends keyof ContentEntryMap
|
||||
? ReferenceContentEntry<C, ValidContentEntrySlug<C>>
|
||||
: ReferenceDataEntry<C, keyof DataEntryMap[C]>
|
||||
>;
|
||||
// Allow generic `string` to avoid excessive type errors in the config
|
||||
// if `dev` is not running to update as you edit.
|
||||
// Invalid collection names will be caught at build time.
|
||||
export function reference<C extends string>(
|
||||
collection: C,
|
||||
): import('astro/zod').ZodEffects<import('astro/zod').ZodString, never>;
|
||||
|
||||
type ReturnTypeOrOriginal<T> = T extends (...args: any[]) => infer R ? R : T;
|
||||
type InferEntrySchema<C extends keyof AnyEntryMap> = import('astro/zod').infer<
|
||||
ReturnTypeOrOriginal<Required<ContentConfig['collections'][C]>['schema']>
|
||||
>;
|
||||
|
||||
type ContentEntryMap = {
|
||||
|
||||
};
|
||||
|
||||
type DataEntryMap = {
|
||||
"docs": Record<string, {
|
||||
id: string;
|
||||
body?: string;
|
||||
collection: "docs";
|
||||
data: any;
|
||||
rendered?: RenderedContent;
|
||||
filePath?: string;
|
||||
}>;
|
||||
|
||||
};
|
||||
|
||||
type AnyEntryMap = ContentEntryMap & DataEntryMap;
|
||||
|
||||
export type ContentConfig = typeof import("../src/content.config.mjs");
|
||||
}
|
||||
@ -1 +0,0 @@
|
||||
[["Map",1,2],"meta::meta",["Map",3,4,5,6],"astro-version","5.9.3","astro-config-digest","{\"root\":{},\"srcDir\":{},\"publicDir\":{},\"outDir\":{},\"cacheDir\":{},\"compressHTML\":true,\"base\":\"/\",\"trailingSlash\":\"ignore\",\"output\":\"static\",\"scopedStyleStrategy\":\"attribute\",\"build\":{\"format\":\"directory\",\"client\":{},\"server\":{},\"assets\":\"_astro\",\"serverEntry\":\"entry.mjs\",\"redirects\":true,\"inlineStylesheets\":\"auto\",\"concurrency\":1},\"server\":{\"open\":false,\"host\":false,\"port\":4321,\"streaming\":true,\"allowedHosts\":[]},\"redirects\":{},\"image\":{\"endpoint\":{\"route\":\"/_image\"},\"service\":{\"entrypoint\":\"astro/assets/services/sharp\",\"config\":{}},\"domains\":[],\"remotePatterns\":[],\"experimentalDefaultStyles\":true},\"devToolbar\":{\"enabled\":true},\"markdown\":{\"syntaxHighlight\":{\"type\":\"shiki\",\"excludeLangs\":[\"math\"]},\"shikiConfig\":{\"langs\":[],\"langAlias\":{},\"theme\":\"github-dark\",\"themes\":{},\"wrap\":false,\"transformers\":[]},\"remarkPlugins\":[],\"rehypePlugins\":[],\"remarkRehype\":{},\"gfm\":true,\"smartypants\":true},\"security\":{\"checkOrigin\":true},\"env\":{\"schema\":{},\"validateSecrets\":false},\"experimental\":{\"clientPrerender\":false,\"contentIntellisense\":false,\"responsiveImages\":false,\"headingIdCompat\":false,\"preserveScriptOrder\":false,\"csp\":false},\"legacy\":{\"collections\":false}}"]
|
||||
@ -1,5 +0,0 @@
|
||||
{
|
||||
"_variables": {
|
||||
"lastUpdateCheck": 1750832446593
|
||||
}
|
||||
}
|
||||
2
docs/.astro/types.d.ts
vendored
@ -1,2 +0,0 @@
|
||||
/// <reference types="astro/client" />
|
||||
/// <reference path="content.d.ts" />
|
||||
824
docs/bun.lock
@ -18,6 +18,7 @@
|
||||
"@radix-ui/react-tooltip": "^1.0.7",
|
||||
"@scalar/api-reference-react": "^0.1.31",
|
||||
"@theguild/remark-mermaid": "^0.0.6",
|
||||
"astro-mermaid": "^1.0.4",
|
||||
"autoprefixer": "^10.0.1",
|
||||
"axios": "^1.6.8",
|
||||
"date-fns": "^3.6.0",
|
||||
@ -28,6 +29,7 @@
|
||||
"fs": "^0.0.1-security",
|
||||
"gray-matter": "^4.0.3",
|
||||
"lucide-react": "^0.522.0",
|
||||
"mermaid": "^11.9.0",
|
||||
"next": "^14.1.4",
|
||||
"next-seo": "^6.5.0",
|
||||
"next-sitemap": "^4.2.3",
|
||||
|
||||
BIN
docs/public/assets/images/changelog/changelog0.6.6.gif
Normal file
|
After Width: | Height: | Size: 1.9 MiB |
@ -11,26 +11,21 @@
|
||||
"type": "page",
|
||||
"title": "Documentation"
|
||||
},
|
||||
"local-server": {
|
||||
"type": "page",
|
||||
"title": "Jan Local Server",
|
||||
"display": "hidden"
|
||||
},
|
||||
"cortex": {
|
||||
"type": "page",
|
||||
"title": "Cortex",
|
||||
"display": "hidden"
|
||||
},
|
||||
"integrations": {
|
||||
"type": "page",
|
||||
"title": "Integrations",
|
||||
"display": "hidden"
|
||||
},
|
||||
"platforms": {
|
||||
"type": "page",
|
||||
"title": "Platforms",
|
||||
"display": "hidden"
|
||||
},
|
||||
"integrations": {
|
||||
"type": "page",
|
||||
"title": "Integrations",
|
||||
"display": "hidden"
|
||||
},
|
||||
"changelog": {
|
||||
"type": "page",
|
||||
"title": "Changelog",
|
||||
|
||||
119
docs/src/pages/changelog/2025-07-31-llamacpp-tutorials.mdx
Normal file
@ -0,0 +1,119 @@
|
||||
---
|
||||
title: "Jan v0.6.6: Enhanced llama.cpp integration and smarter model management"
|
||||
version: 0.6.6
|
||||
description: "Major llama.cpp improvements, Hugging Face provider support, and refined MCP experience"
|
||||
date: 2025-07-31
|
||||
ogImage: "/assets/images/changelog/changelog0.6.6.gif"
|
||||
---
|
||||
|
||||
import ChangelogHeader from "@/components/Changelog/ChangelogHeader"
|
||||
|
||||
<ChangelogHeader title="Jan v0.6.6: Enhanced llama.cpp integration and smarter model management" date="2025-01-31" ogImage="/assets/images/changelog/changelog0.6.6.gif" />
|
||||
|
||||
## Highlights 🎉
|
||||
|
||||
Jan v0.6.6 delivers significant improvements to the llama.cpp backend, introduces Hugging Face as a
|
||||
built-in provider, and brings smarter model management with auto-unload capabilities. This release
|
||||
also includes numerous MCP refinements and platform-specific enhancements.
|
||||
|
||||
### 🚀 Major llama.cpp Backend Overhaul
|
||||
|
||||
We've completely revamped the llama.cpp integration with:
|
||||
- **Smart Backend Management**: The backend now auto-updates and persists your settings properly
|
||||
- **Device Detection**: Jan automatically detects available GPUs and hardware capabilities
|
||||
- **Direct llama.cpp Access**: Models now interface directly with llama.cpp (previously hidden behind Cortex)
|
||||
- **Automatic Migration**: Your existing models seamlessly move from Cortex to direct llama.cpp management
|
||||
- **Better Error Handling**: Clear error messages when models fail to load, with actionable solutions
|
||||
- **Per-Model Overrides**: Configure specific settings for individual models
|
||||
|
||||
### 🤗 Hugging Face Cloud Router Integration
|
||||
|
||||
Connect to Hugging Face's new cloud inference service:
|
||||
- Access pre-configured models running on various providers (Fireworks, Together AI, and more)
|
||||
- Hugging Face handles the routing to the best available provider
|
||||
- Simplified setup with just your HF token
|
||||
- Non-deletable provider status to prevent accidental removal
|
||||
- Note: Direct model ID search in Hub remains available as before
|
||||
|
||||
### 🧠 Smarter Model Management
|
||||
|
||||
New intelligent features to optimize your system resources:
|
||||
- **Auto-Unload Old Models**: Automatically free up memory by unloading unused models
|
||||
- **Persistent Settings**: Your model capabilities and settings now persist across app restarts
|
||||
- **Zero GPU Layers Support**: Set N-GPU Layers to 0 for CPU-only inference
|
||||
- **Memory Calculation Improvements**: More accurate memory usage reporting
|
||||
|
||||
### 🎯 MCP Refinements
|
||||
|
||||
Enhanced MCP experience with:
|
||||
- Tool approval dialog improvements with scrollable parameters
|
||||
- Better experimental feature edge case handling
|
||||
- Fixed tool call button disappearing issue
|
||||
- JSON editing tooltips for easier configuration
|
||||
- Auto-focus on "Always Allow" action for smoother workflows
|
||||
|
||||
### 📚 New MCP Integration Tutorials
|
||||
|
||||
Comprehensive guides for powerful MCP integrations:
|
||||
- **Canva MCP**: Create and manage designs through natural language - generate logos, presentations, and marketing materials directly from chat
|
||||
- **Browserbase MCP**: Control cloud browsers with AI - automate web tasks, extract data, and monitor sites without complex scripting
|
||||
- **Octagon Deep Research MCP**: Access finance-focused research capabilities - analyze markets, investigate companies, and generate investment insights
|
||||
|
||||
### 🖥️ Platform-Specific Improvements
|
||||
|
||||
**Windows:**
|
||||
- Fixed terminal windows popping up during model loading
|
||||
- Better process termination handling
|
||||
- VCRuntime included in installer for compatibility
|
||||
- Improved NSIS installer with app running checks
|
||||
|
||||
**Linux:**
|
||||
- AppImage now works properly with newest Tauri version and it went from almost 1GB to less than 200MB
|
||||
- Better Wayland compatibility
|
||||
|
||||
**macOS:**
|
||||
- Improved build process and artifact naming
|
||||
|
||||
### 🎨 UI/UX Enhancements
|
||||
|
||||
Quality of life improvements throughout:
|
||||
- Fixed rename thread dialog showing incorrect thread names
|
||||
- Assistant instructions now have proper defaults
|
||||
- Download progress indicators remain visible when scrolling
|
||||
- Better error pages with clearer messaging
|
||||
- GPU detection now shows accurate backend information
|
||||
- Improved clickable areas for better usability
|
||||
|
||||
### 🔧 Developer Experience
|
||||
|
||||
Behind the scenes improvements:
|
||||
- New automated QA system using CUA (Computer Use Automation)
|
||||
- Standardized build process across platforms
|
||||
- Enhanced error stream handling and parsing
|
||||
- Better proxy support for the new downloader
|
||||
- Reasoning format support for advanced models
|
||||
|
||||
### 🐛 Bug Fixes
|
||||
|
||||
Notable fixes include:
|
||||
- Factory reset no longer fails with access denied errors
|
||||
- OpenRouter provider stays selected properly
|
||||
- Model search in Hub shows latest data only
|
||||
- Temporary download files are cleaned up on cancel
|
||||
- Legacy threads no longer appear above new threads
|
||||
- Fixed encoding issues on various platforms
|
||||
|
||||
## Breaking Changes
|
||||
|
||||
- Models previously managed by Cortex now interface directly with llama.cpp (automatic migration included)
|
||||
- Some sampling parameters have been removed from the llama.cpp extension for consistency
|
||||
- Cortex extension is deprecated in favor of direct llama.cpp integration
|
||||
|
||||
## Coming Next
|
||||
|
||||
We're working on expanding MCP capabilities, improving model download speeds, and adding more provider
|
||||
integrations. Stay tuned!
|
||||
|
||||
Update your Jan or [download the latest](https://jan.ai/).
|
||||
|
||||
For the complete list of changes, see the [GitHub release notes](https://github.com/menloresearch/jan/releases/tag/v0.6.6).
|
||||
|
Before Width: | Height: | Size: 1.4 MiB After Width: | Height: | Size: 1.4 MiB |
BIN
docs/src/pages/docs/_assets/api-server-ui.png
Normal file
|
After Width: | Height: | Size: 562 KiB |
BIN
docs/src/pages/docs/_assets/browserbase.png
Normal file
|
After Width: | Height: | Size: 714 KiB |
BIN
docs/src/pages/docs/_assets/browserbase2.png
Normal file
|
After Width: | Height: | Size: 554 KiB |
BIN
docs/src/pages/docs/_assets/browserbase3.png
Normal file
|
After Width: | Height: | Size: 377 KiB |
BIN
docs/src/pages/docs/_assets/browserbase4.png
Normal file
|
After Width: | Height: | Size: 453 KiB |
BIN
docs/src/pages/docs/_assets/browserbase5.png
Normal file
|
After Width: | Height: | Size: 616 KiB |
BIN
docs/src/pages/docs/_assets/browserbase6.png
Normal file
|
After Width: | Height: | Size: 742 KiB |
BIN
docs/src/pages/docs/_assets/browserbase7.png
Normal file
|
After Width: | Height: | Size: 544 KiB |
BIN
docs/src/pages/docs/_assets/canva.png
Normal file
|
After Width: | Height: | Size: 404 KiB |
BIN
docs/src/pages/docs/_assets/canva2.png
Normal file
|
After Width: | Height: | Size: 4.4 MiB |
BIN
docs/src/pages/docs/_assets/canva3.png
Normal file
|
After Width: | Height: | Size: 432 KiB |
BIN
docs/src/pages/docs/_assets/canva4.png
Normal file
|
After Width: | Height: | Size: 499 KiB |
BIN
docs/src/pages/docs/_assets/canva5.png
Normal file
|
After Width: | Height: | Size: 514 KiB |
BIN
docs/src/pages/docs/_assets/canva6.png
Normal file
|
After Width: | Height: | Size: 986 KiB |
BIN
docs/src/pages/docs/_assets/canva7.png
Normal file
|
After Width: | Height: | Size: 718 KiB |
BIN
docs/src/pages/docs/_assets/canva8.png
Normal file
|
After Width: | Height: | Size: 685 KiB |
BIN
docs/src/pages/docs/_assets/canva9.png
Normal file
|
After Width: | Height: | Size: 1.5 MiB |
|
Before Width: | Height: | Size: 120 KiB After Width: | Height: | Size: 120 KiB |
BIN
docs/src/pages/docs/_assets/octagon.png
Normal file
|
After Width: | Height: | Size: 946 KiB |
BIN
docs/src/pages/docs/_assets/octagon2.png
Normal file
|
After Width: | Height: | Size: 1.1 MiB |
BIN
docs/src/pages/docs/_assets/octagon3.png
Normal file
|
After Width: | Height: | Size: 286 KiB |
BIN
docs/src/pages/docs/_assets/octagon4.png
Normal file
|
After Width: | Height: | Size: 522 KiB |
BIN
docs/src/pages/docs/_assets/octagon5.png
Normal file
|
After Width: | Height: | Size: 620 KiB |
BIN
docs/src/pages/docs/_assets/octagon6.png
Normal file
|
After Width: | Height: | Size: 781 KiB |
BIN
docs/src/pages/docs/_assets/octagon7.png
Normal file
|
After Width: | Height: | Size: 713 KiB |
BIN
docs/src/pages/docs/_assets/octagon8.png
Normal file
|
After Width: | Height: | Size: 684 KiB |
BIN
docs/src/pages/docs/_assets/octagon9.png
Normal file
|
After Width: | Height: | Size: 659 KiB |
@ -40,6 +40,15 @@
|
||||
"mcp": "Model Context Protocol",
|
||||
"mcp-examples": "MCP Examples",
|
||||
|
||||
"localserver": {
|
||||
"title": "LOCAL SERVER",
|
||||
"type": "separator"
|
||||
},
|
||||
"api-server": "Server Setup",
|
||||
"llama-cpp-server": "LlamaCpp Server",
|
||||
"server-settings": "Server Settings",
|
||||
"server-troubleshooting": "Server Troubleshooting",
|
||||
"server-examples": "Integrations",
|
||||
"reference-separator": {
|
||||
"title": "REFERENCE",
|
||||
"type": "separator"
|
||||
|
||||
100
docs/src/pages/docs/api-server.mdx
Normal file
@ -0,0 +1,100 @@
|
||||
---
|
||||
title: Local API Server
|
||||
description: Run Jan's OpenAI-compatible API server on your local machine for private, offline AI development.
|
||||
keywords:
|
||||
[
|
||||
Jan,
|
||||
local AI server,
|
||||
OpenAI API,
|
||||
local API,
|
||||
self-hosted AI,
|
||||
offline AI,
|
||||
privacy-focused AI,
|
||||
API integration,
|
||||
local LLM server,
|
||||
llama.cpp,
|
||||
CORS,
|
||||
API key
|
||||
]
|
||||
---
|
||||
import { Callout, Steps } from 'nextra/components'
|
||||
|
||||
# Local API Server
|
||||
|
||||
Jan provides a built-in, OpenAI-compatible API server that runs entirely on your computer, powered by `llama.cpp`. Use it as a drop-in replacement for cloud APIs to build private, offline-capable AI applications.
|
||||
|
||||

|
||||
|
||||
## Quick Start
|
||||
|
||||
<Steps>
|
||||
### Start the Server
|
||||
1. Navigate to **Settings** > **Local API Server**.
|
||||
2. Enter a custom **API Key** (e.g., `secret-key-123`). This is required for all requests.
|
||||
3. Click **Start Server**.
|
||||
|
||||
The server is ready when the logs show `JAN API listening at http://127.0.0.1:1337`.
|
||||
|
||||
### Test with cURL
|
||||
Open a terminal and make a request. Replace `YOUR_MODEL_ID` with the ID of an available model in Jan.
|
||||
|
||||
```bash
|
||||
curl http://127.0.0.1:1337/v1/chat/completions \
|
||||
-H "Content-Type: application/json" \
|
||||
-H "Authorization: Bearer secret-key-123" \
|
||||
-d '{
|
||||
"model": "YOUR_MODEL_ID",
|
||||
"messages": [{"role": "user", "content": "Tell me a joke."}]
|
||||
}'
|
||||
```
|
||||
</Steps>
|
||||
|
||||
## Server Configuration
|
||||
|
||||
These settings control the network accessibility and basic behavior of your local server.
|
||||
|
||||
### Server Host
|
||||
The network address the server listens on.
|
||||
- **`127.0.0.1`** (Default): The server is only accessible from your own computer. This is the most secure option for personal use.
|
||||
- **`0.0.0.0`**: The server is accessible from other devices on your local network (e.g., your phone or another computer). Use this with caution.
|
||||
|
||||
### Server Port
|
||||
The port number for the API server.
|
||||
- **`1337`** (Default): A common alternative port.
|
||||
- You can change this to any available port number (e.g., `8000`).
|
||||
|
||||
### API Prefix
|
||||
The base path for all API endpoints.
|
||||
- **`/v1`** (Default): Follows OpenAI's convention. The chat completions endpoint would be `http://127.0.0.1:1337/v1/chat/completions`.
|
||||
- You can change this or leave it empty if desired.
|
||||
|
||||
### API Key
|
||||
A mandatory secret key to authenticate requests.
|
||||
- You must set a key. It can be any string (e.g., `a-secure-password`).
|
||||
- All API requests must include this key in the `Authorization: Bearer YOUR_API_KEY` header.
|
||||
|
||||
### Trusted Hosts
|
||||
A comma-separated list of hostnames allowed to access the server. This provides an additional layer of security when the server is exposed on your network.
|
||||
|
||||
## Advanced Settings
|
||||
|
||||
### Cross-Origin Resource Sharing (CORS)
|
||||
- **(Enabled by default)** Allows web applications (like a custom web UI you are building) running on different domains to make requests to the API server.
|
||||
- **Disable this** if your API will only be accessed by non-browser-based applications (e.g., scripts, command-line tools) for slightly improved security.
|
||||
|
||||
### Verbose Server Logs
|
||||
- **(Enabled by default)** Provides detailed, real-time logs of all incoming requests, responses, and server activity.
|
||||
- This is extremely useful for debugging application behavior and understanding exactly what is being sent to the models.
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
<Callout>
|
||||
Ensure **Verbose Server Logs** are enabled to get detailed error messages in the "Server Logs" view.
|
||||
</Callout>
|
||||
|
||||
- **Connection Refused:** The server is not running, or your application is pointing to the wrong host or port.
|
||||
- **401 Unauthorized:** Your API Key is missing from the `Authorization` header or is incorrect.
|
||||
- **404 Not Found:**
|
||||
- The `model` ID in your request body does not match an available model in Jan.
|
||||
- Your request URL is incorrect (check the API Prefix).
|
||||
- **CORS Error (in a web browser):** Ensure the CORS toggle is enabled in Jan's settings.
|
||||
@ -21,7 +21,11 @@ import { Settings } from 'lucide-react'
|
||||
|
||||
# Local AI Engine (llama.cpp)
|
||||
|
||||
llama.cpp is the engine that runs AI models locally on your computer. It's what makes Jan work without needing internet or cloud services.
|
||||
`llama.cpp` is the core **inference engine** Jan uses to run AI models locally on your computer. This section covers the settings for the engine itself, which control *how* a model processes information on your hardware.
|
||||
|
||||
<Callout>
|
||||
Looking for API server settings (like port, host, CORS)? They have been moved to the dedicated [**Local API Server**](/docs/local-server/api-server) page.
|
||||
</Callout>
|
||||
|
||||
## Accessing Engine Settings
|
||||
|
||||
@ -59,6 +59,8 @@ These are advanced settings. You typically only need to adjust them if models ar
|
||||
| **Engine Version** | Shows which version of llama.cpp you're running | Check compatibility with newer models |
|
||||
| **Check Updates** | Downloads newer engine versions | When new models require updated engine |
|
||||
| **Backend Selection** | Choose the version optimized for your hardware | After installing new graphics cards or when performance is poor |
|
||||
| **Auto Update Engine** | Automatically updates llama.cpp to latest version | Enable for automatic compatibility with new models |
|
||||
| **Auto-Unload Old Models** | Unloads unused models to free memory | Enable when running multiple models or low on memory |
|
||||
|
||||
## Hardware Backends
|
||||
|
||||
@ -138,8 +140,12 @@ These control how efficiently models run:
|
||||
| Setting | What It Does | Recommended Value | Impact |
|
||||
|---------|-------------|------------------|---------|
|
||||
| **Continuous Batching** | Process multiple requests at once | Enabled | Faster when using multiple tools or having multiple conversations |
|
||||
| **Parallel Operations** | How many requests to handle simultaneously | 4 | Higher = more multitasking, but uses more memory |
|
||||
| **CPU Threads** | How many processor cores to use | Auto-detected | More threads can speed up CPU processing |
|
||||
| **Threads** | Number of threads for generation | -1 (auto) | -1 uses all logical cores, adjust for specific needs |
|
||||
| **Threads (Batch)** | Threads for batch and prompt processing | -1 (auto) | Usually same as Threads setting |
|
||||
| **Batch Size** | Logical maximum batch size | 2048 | Higher allows more parallel processing |
|
||||
| **uBatch Size** | Physical maximum batch size | 512 | Controls memory usage during batching |
|
||||
| **GPU Split Mode** | How to distribute model across GPUs | Layer | Layer mode is most common for multi-GPU setups |
|
||||
| **Main GPU Index** | Primary GPU for processing | 0 | Change if you want to use a different GPU |
|
||||
|
||||
## Memory Settings
|
||||
|
||||
@ -148,15 +154,53 @@ These control how models use your computer's memory:
|
||||
| Setting | What It Does | Recommended Value | When to Change |
|
||||
|---------|-------------|------------------|----------------|
|
||||
| **Flash Attention** | More efficient memory usage | Enabled | Leave enabled unless you have problems |
|
||||
| **Caching** | Remember recent conversations | Enabled | Speeds up follow-up questions |
|
||||
| **KV Cache Type** | Memory precision trade-off | f16 | Change to q8_0 or q4_0 if running out of memory |
|
||||
| **mmap** | Load models more efficiently | Enabled | Helps with large models |
|
||||
| **Disable mmap** | Don't memory-map model files | Disabled | Enable if experiencing crashes or pageouts |
|
||||
| **MLock** | Keep model in RAM, prevent swapping | Disabled | Enable if you have enough RAM and want consistent performance |
|
||||
| **Context Shift** | Handle very long conversations | Disabled | Enable for very long chats or multiple tool calls |
|
||||
| **Disable KV Offload** | Keep KV cache on CPU | Disabled | Enable if GPU memory is limited |
|
||||
| **KV Cache K Type** | Memory precision for keys | f16 | Change to q8_0 or q4_0 if running out of memory |
|
||||
| **KV Cache V Type** | Memory precision for values | f16 | Change to q8_0 or q4_0 if running out of memory |
|
||||
| **KV Cache Defragmentation** | Threshold for cache cleanup | 0.1 | Lower values defragment more often |
|
||||
|
||||
### KV Cache Types Explained
|
||||
- **f16**: Most stable, uses more memory
|
||||
- **q8_0**: Balanced memory usage and quality
|
||||
- **q4_0**: Uses least memory, slight quality loss
|
||||
- **f16**: Full 16-bit precision, uses more memory but highest quality
|
||||
- **q8_0**: 8-bit quantized, balanced memory usage and quality
|
||||
- **q4_0**: 4-bit quantized, uses least memory, slight quality loss
|
||||
|
||||
## Advanced Settings
|
||||
|
||||
These settings are for fine-tuning model behavior and advanced use cases:
|
||||
|
||||
### Text Generation Control
|
||||
|
||||
| Setting | What It Does | Default Value | When to Change |
|
||||
|---------|-------------|---------------|----------------|
|
||||
| **Max Tokens to Predict** | Maximum tokens to generate | -1 (infinite) | Set a limit to prevent runaway generation |
|
||||
| **Custom Jinja Chat Template** | Override model's chat format | Empty | Only if model needs special formatting |
|
||||
|
||||
### RoPE (Rotary Position Embedding) Settings
|
||||
|
||||
| Setting | What It Does | Default Value | When to Change |
|
||||
|---------|-------------|---------------|----------------|
|
||||
| **RoPE Scaling Method** | Context extension method | None | For models that support extended context |
|
||||
| **RoPE Scale Factor** | Context scaling multiplier | 1 | Increase for longer contexts |
|
||||
| **RoPE Frequency Base** | Base frequency for RoPE | 0 (auto) | Usually loaded from model |
|
||||
| **RoPE Frequency Scale Factor** | Frequency scaling factor | 1 | Advanced tuning only |
|
||||
|
||||
### Mirostat Sampling
|
||||
|
||||
| Setting | What It Does | Default Value | When to Change |
|
||||
|---------|-------------|---------------|----------------|
|
||||
| **Mirostat Mode** | Alternative sampling method | Disabled | Try V1 or V2 for more consistent output |
|
||||
| **Mirostat Learning Rate** | How fast it adapts | 0.1 | Lower for more stable output |
|
||||
| **Mirostat Target Entropy** | Target perplexity | 5 | Higher for more variety |
|
||||
|
||||
### Output Constraints
|
||||
|
||||
| Setting | What It Does | Default Value | When to Change |
|
||||
|---------|-------------|---------------|----------------|
|
||||
| **Grammar File** | Constrain output format | Empty | For structured output (JSON, code, etc.) |
|
||||
| **JSON Schema File** | Enforce JSON structure | Empty | When you need specific JSON formats |
|
||||
|
||||
## Troubleshooting Common Issues
|
||||
|
||||
@ -184,23 +228,34 @@ These control how models use your computer's memory:
|
||||
|
||||
**For most users:**
|
||||
1. Use the default backend that Jan installs
|
||||
2. Leave all performance settings at defaults
|
||||
3. Only adjust if you experience problems
|
||||
2. Enable Auto Update Engine for automatic compatibility
|
||||
3. Leave all performance settings at defaults
|
||||
4. Only adjust if you experience problems
|
||||
|
||||
**If you have an NVIDIA graphics card:**
|
||||
1. Download the appropriate CUDA backend
|
||||
1. Select the appropriate CUDA backend from the dropdown (e.g., `avx2-cuda-12-0`)
|
||||
2. Make sure GPU Layers is set high in model settings
|
||||
3. Enable Flash Attention
|
||||
3. Keep Flash Attention enabled
|
||||
4. Set Main GPU Index if you have multiple GPUs
|
||||
|
||||
**If models are too slow:**
|
||||
1. Check you're using GPU acceleration
|
||||
2. Try enabling Continuous Batching
|
||||
3. Close other applications using memory
|
||||
1. Check you're using GPU acceleration (CUDA/Metal/Vulkan backend)
|
||||
2. Enable Continuous Batching
|
||||
3. Increase Batch Size and uBatch Size
|
||||
4. Close other applications using memory
|
||||
|
||||
**If running out of memory:**
|
||||
1. Change KV Cache Type to q8_0
|
||||
2. Reduce Context Size in model settings
|
||||
3. Try a smaller model
|
||||
1. Enable Auto-Unload Old Models
|
||||
2. Change KV Cache K/V Type to q8_0 or q4_0
|
||||
3. Reduce Context Size in model settings
|
||||
4. Enable MLock if you have sufficient RAM
|
||||
5. Try a smaller model
|
||||
|
||||
**For advanced users:**
|
||||
1. Experiment with Mirostat sampling for more consistent outputs
|
||||
2. Use Grammar/JSON Schema files for structured generation
|
||||
3. Adjust RoPE settings for models with extended context support
|
||||
4. Fine-tune thread counts based on your CPU
|
||||
|
||||
<Callout type="info">
|
||||
Most users can run Jan successfully without changing any of these settings. The defaults are chosen to work well on typical hardware.
|
||||
|
||||
275
docs/src/pages/docs/mcp-examples/browser/browserbase.mdx
Normal file
@ -0,0 +1,275 @@
|
||||
---
|
||||
title: Browserbase MCP
|
||||
description: Control browsers with natural language through Browserbase's cloud infrastructure.
|
||||
keywords:
|
||||
[
|
||||
Jan,
|
||||
MCP,
|
||||
Model Context Protocol,
|
||||
Browserbase,
|
||||
browser automation,
|
||||
web scraping,
|
||||
Stagehand,
|
||||
headless browser,
|
||||
tool calling,
|
||||
]
|
||||
---
|
||||
|
||||
import { Callout, Steps } from 'nextra/components'
|
||||
|
||||
# Browserbase MCP
|
||||
|
||||
[Browserbase MCP](https://docs.browserbase.com/integrations/mcp/introduction) gives AI models actual browser control through cloud infrastructure. Built on Stagehand, it lets you navigate websites, extract data, and interact with web pages using natural language commands.
|
||||
|
||||
The integration provides real browser sessions that AI can control, enabling tasks that go beyond simple web search APIs.
|
||||
|
||||
## Available Tools
|
||||
|
||||
<Callout type="info">
|
||||
Browserbase's MCP tools evolve over time. This list reflects current capabilities but may change.
|
||||
</Callout>
|
||||
|
||||
### Multi-Session Tools
|
||||
- `multi_browserbase_stagehand_session_create`: Create parallel browser sessions
|
||||
- `multi_browserbase_stagehand_session_list`: Track active sessions
|
||||
- `multi_browserbase_stagehand_session_close`: Clean up sessions
|
||||
- `multi_browserbase_stagehand_navigate_session`: Navigate in specific session
|
||||
|
||||
### Core Browser Actions
|
||||
- `browserbase_stagehand_navigate`: Navigate to URLs
|
||||
- `browserbase_stagehand_act`: Perform actions ("click the login button")
|
||||
- `browserbase_stagehand_extract`: Extract text content
|
||||
- `browserbase_stagehand_observe`: Find page elements
|
||||
- `browserbase_screenshot`: Capture screenshots
|
||||
|
||||
### Session Management
|
||||
- `browserbase_session_create`: Create or reuse sessions
|
||||
- `browserbase_session_close`: Close active sessions
|
||||
|
||||
## Prerequisites
|
||||
|
||||
- Jan with MCP enabled
|
||||
- Browserbase account (includes 60 minutes free usage)
|
||||
- Model with strong tool calling support
|
||||
- Node.js installed
|
||||
|
||||
<Callout type="warning">
|
||||
Currently, only the latest Anthropic models handle multiple tools reliably. Other models may struggle with the full tool set.
|
||||
</Callout>
|
||||
|
||||
## Setup
|
||||
|
||||
### Enable MCP
|
||||
|
||||
1. Go to **Settings** > **MCP Servers**
|
||||
2. Toggle **Allow All MCP Tool Permission** ON
|
||||
|
||||

|
||||
|
||||
### Get Browserbase Credentials
|
||||
|
||||
1. Sign up at [browserbase.com](https://browserbase.com)
|
||||
- Email verification required
|
||||
- Phone number authentication
|
||||
- Thorough security process
|
||||
|
||||
2. Access your dashboard and copy:
|
||||
- **API Key**
|
||||
- **Project ID**
|
||||
|
||||

|
||||
|
||||
### Configure MCP Server
|
||||
|
||||
Click `+` in MCP Servers section:
|
||||
|
||||
**NPM Package Configuration:**
|
||||
- **Server Name**: `browserbase`
|
||||
- **Command**: `npx`
|
||||
- **Arguments**: `@browserbasehq/mcp-server-browserbase`
|
||||
- **Environment Variables**:
|
||||
- Key: `BROWSERBASE_API_KEY`, Value: `your-api-key`
|
||||
- Key: `BROWSERBASE_PROJECT_ID`, Value: `your-project-id`
|
||||
|
||||

|
||||
|
||||
### Verify Setup
|
||||
|
||||
Check the tools bubble in chat to confirm Browserbase tools are available:
|
||||
|
||||

|
||||
|
||||
## Real Usage Example
|
||||
|
||||
### Live Information Query
|
||||
|
||||
```
|
||||
Which sports matches are happening right now in Australia (irrespective of the sport)?
|
||||
```
|
||||
|
||||
This simple query demonstrates browser automation in action:
|
||||
|
||||
1. **Tool Activation**
|
||||
- Model creates browser session
|
||||
- Navigates to sports websites
|
||||
- Extracts current match data
|
||||
|
||||

|
||||
|
||||
2. **Results Delivery**
|
||||
- Real-time match information
|
||||
- Multiple sports covered
|
||||
- Current scores and timings
|
||||
|
||||

|
||||
|
||||
The AI successfully found:
|
||||
- AFL matches with live scores
|
||||
- NRL games in progress
|
||||
- Upcoming Rugby Union fixtures
|
||||
|
||||
## Common Issues
|
||||
|
||||
### Tool Call Failures
|
||||
|
||||
Sometimes tool calls fail due to parsing issues:
|
||||
|
||||

|
||||
|
||||
**Solutions:**
|
||||
- Try rephrasing your prompt
|
||||
- Disable unnecessary tools
|
||||
- Use simpler, more direct requests
|
||||
- Switch to Claude 3.5+ Sonnet if using another model
|
||||
|
||||
### Model Limitations
|
||||
|
||||
Most models struggle with multiple tools. If experiencing issues:
|
||||
- Start with single-purpose requests
|
||||
- Build complexity gradually
|
||||
- Consider which tools are actually needed
|
||||
- Expect some trial and error initially
|
||||
|
||||
## Usage Limits
|
||||
|
||||
**Free Tier:**
|
||||
- 60 minutes of browser time included
|
||||
- Sessions auto-terminate after 5 minutes inactivity
|
||||
- Can adjust timeout in Browserbase dashboard
|
||||
- Usage visible in dashboard analytics
|
||||
|
||||
**Session Management:**
|
||||
- Each browser session counts against time
|
||||
- Close sessions when done to conserve minutes
|
||||
- Multi-session operations consume time faster
|
||||
|
||||
## Practical Use Cases
|
||||
|
||||
### Real-Time Data Collection
|
||||
```
|
||||
Check current prices for MacBook Pro M4 at major Australian retailers and create a comparison table.
|
||||
```
|
||||
|
||||
### Form Testing
|
||||
```
|
||||
Navigate to myservice.gov.au and walk through the Medicare claim process, documenting each required field.
|
||||
```
|
||||
|
||||
### Content Monitoring
|
||||
```
|
||||
Visit ABC News Australia and extract the top 5 breaking news headlines with their timestamps.
|
||||
```
|
||||
|
||||
### Multi-Site Analysis
|
||||
```
|
||||
Compare flight prices from Sydney to Tokyo next week across Qantas, Jetstar, and Virgin Australia.
|
||||
```
|
||||
|
||||
### Automated Verification
|
||||
```
|
||||
Check if our company is listed correctly on Google Maps, Yelp, and Yellow Pages, noting any discrepancies.
|
||||
```
|
||||
|
||||
## Advanced Techniques
|
||||
|
||||
### Session Reuse
|
||||
```
|
||||
Create a browser session, log into LinkedIn, then search for "AI engineers in Melbourne" and extract the first 10 profiles.
|
||||
```
|
||||
|
||||
### Parallel Operations
|
||||
```
|
||||
Create three browser sessions: monitor stock prices on ASX, check crypto on CoinSpot, and track forex on XE simultaneously.
|
||||
```
|
||||
|
||||
### Sequential Workflows
|
||||
```
|
||||
Go to seek.com.au, search for "data scientist" jobs in Sydney, apply filters for $150k+, then extract job titles and companies.
|
||||
```
|
||||
|
||||
## Optimization Tips
|
||||
|
||||
**Prompt Engineering:**
|
||||
- Be specific about what to extract
|
||||
- Name exact websites when possible
|
||||
- Break complex tasks into steps
|
||||
- Specify output format clearly
|
||||
|
||||
**Tool Selection:**
|
||||
- Use multi-session only when needed
|
||||
- Close sessions promptly
|
||||
- Choose observe before act when possible
|
||||
- Screenshot sparingly to save time
|
||||
|
||||
**Error Recovery:**
|
||||
- Have fallback prompts ready
|
||||
- Start simple, add complexity
|
||||
- Watch for timeout warnings
|
||||
- Monitor usage in dashboard
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
**Connection Issues:**
|
||||
- Verify API key and Project ID
|
||||
- Check Browserbase service status
|
||||
- Ensure NPX can download packages
|
||||
- Restart Jan after configuration
|
||||
|
||||
**Browser Failures:**
|
||||
- Some sites block automation
|
||||
- Try different navigation paths
|
||||
- Check if site requires login
|
||||
- Verify target site is accessible
|
||||
|
||||
**Performance Problems:**
|
||||
- Reduce concurrent sessions
|
||||
- Simplify extraction requests
|
||||
- Check remaining time quota
|
||||
- Consider upgrading plan
|
||||
|
||||
**Model Struggles:**
|
||||
- Too many tools overwhelm most models
|
||||
- Claude 3.5+ Sonnet most reliable
|
||||
- Reduce available tools if needed
|
||||
- Use focused, clear instructions
|
||||
|
||||
<Callout type="info">
|
||||
Browser automation is complex. Expect occasional failures and be prepared to adjust your approach.
|
||||
</Callout>
|
||||
|
||||
## Browserbase vs Browser Use
|
||||
|
||||
| Feature | Browserbase | Browser Use |
|
||||
|---------|-------------|-------------|
|
||||
| **Infrastructure** | Cloud browsers | Local browser |
|
||||
| **Setup Complexity** | API key only | Python environment |
|
||||
| **Performance** | Consistent | System dependent |
|
||||
| **Cost** | Usage-based | Free (local resources) |
|
||||
| **Reliability** | High | Variable |
|
||||
| **Privacy** | Cloud-based | Fully local |
|
||||
|
||||
## Next Steps
|
||||
|
||||
Browserbase MCP provides genuine browser automation capabilities, not just web search. This enables complex workflows like form filling, multi-site monitoring, and data extraction that would be impossible with traditional APIs.
|
||||
|
||||
The cloud infrastructure handles browser complexity while Jan maintains conversational privacy. Just remember: with great browser power comes occasional parsing errors.
|
||||
260
docs/src/pages/docs/mcp-examples/deepresearch/octagon.mdx
Normal file
@ -0,0 +1,260 @@
|
||||
---
|
||||
title: Octagon Deep Research MCP
|
||||
description: Finance-focused deep research with AI-powered analysis through Octagon's MCP integration.
|
||||
keywords:
|
||||
[
|
||||
Jan,
|
||||
MCP,
|
||||
Model Context Protocol,
|
||||
Octagon,
|
||||
deep research,
|
||||
financial research,
|
||||
private equity,
|
||||
market analysis,
|
||||
technical research,
|
||||
tool calling,
|
||||
]
|
||||
---
|
||||
|
||||
import { Callout, Steps } from 'nextra/components'
|
||||
|
||||
# Octagon Deep Research MCP
|
||||
|
||||
[Octagon Deep Research MCP](https://docs.octagonagents.com/guide/deep-research-mcp.html) provides specialized AI research capabilities with a strong focus on financial markets and business intelligence. Unlike general research tools, Octagon excels at complex financial analysis, market dynamics, and investment research.
|
||||
|
||||
The integration delivers comprehensive reports that combine multiple data sources, cross-verification, and actionable insights - particularly useful for understanding market structures, investment strategies, and business models.
|
||||
|
||||
## Available Tools
|
||||
|
||||
### octagon-agent
|
||||
Orchestrates comprehensive market intelligence research, particularly strong in:
|
||||
- Financial market analysis
|
||||
- Private equity and M&A research
|
||||
- Corporate structure investigations
|
||||
- Investment strategy evaluation
|
||||
|
||||
### octagon-scraper-agent
|
||||
Specialized web scraping for public and private market data:
|
||||
- SEC filings and regulatory documents
|
||||
- Company financials and metrics
|
||||
- Market transaction data
|
||||
- Industry reports and analysis
|
||||
|
||||
### octagon-deep-research-agent
|
||||
Comprehensive research synthesis combining:
|
||||
- Multi-source data aggregation
|
||||
- Cross-verification of claims
|
||||
- Historical trend analysis
|
||||
- Actionable insights generation
|
||||
|
||||
## Prerequisites
|
||||
|
||||
- Jan with MCP enabled
|
||||
- Octagon account (includes 2-week Pro trial)
|
||||
- Model with tool calling support
|
||||
- Node.js installed
|
||||
|
||||
<Callout type="info">
|
||||
Octagon offers a 2-week Pro trial upon signup, providing full access to their financial research capabilities.
|
||||
</Callout>
|
||||
|
||||
## Setup
|
||||
|
||||
### Enable MCP
|
||||
|
||||
1. Go to **Settings** > **MCP Servers**
|
||||
2. Toggle **Allow All MCP Tool Permission** ON
|
||||
|
||||

|
||||
|
||||
### Get Octagon API Key
|
||||
|
||||
1. Sign up at [Octagon signup page](https://app.octagonai.co/signup/?redirectToAfterSignup=https://app.octagonai.co/api-keys)
|
||||
2. Navigate to the API playground
|
||||
3. Copy your API key from the dashboard
|
||||
|
||||

|
||||
|
||||
### Configure MCP Server
|
||||
|
||||
Click `+` in MCP Servers section:
|
||||
|
||||
**NPM Package Configuration:**
|
||||
- **Server Name**: `octagon-mcp-server`
|
||||
- **Command**: `npx`
|
||||
- **Arguments**: `-y octagon-mcp@latest`
|
||||
- **Environment Variables**:
|
||||
- Key: `OCTAGON_API_KEY`, Value: `your-api-key`
|
||||
|
||||

|
||||
|
||||
### Verify Setup
|
||||
|
||||
Check the tools bubble in chat to confirm Octagon tools are available:
|
||||
|
||||

|
||||
|
||||
## Real-World Example: Private Equity Analysis
|
||||
|
||||
Here's an actual deep research query demonstrating Octagon's financial analysis capabilities:
|
||||
|
||||
### The Prompt
|
||||
|
||||
```
|
||||
Break apart the private equity paradox: How did an industry that promises to "unlock value" become synonymous with gutting companies, yet still attracts the world's smartest money?
|
||||
|
||||
Start with the mechanics—how PE firms use other people's money to buy companies with borrowed cash, then charge fees for the privilege. Trace the evolution from corporate raiders of the 1980s to today's trillion-dollar titans like Blackstone, KKR, and Apollo. Use SEC filings, M&A databases, and bankruptcy records to map their empires.
|
||||
|
||||
Dig into specific deals that illustrate the dual nature: companies genuinely transformed versus those stripped and flipped. Compare Toys "R" Us's death to Hilton's resurrection. Examine how PE-owned companies fare during economic downturns—do they really have "patient capital" or do they bleed portfolio companies dry through dividend recaps?
|
||||
|
||||
Investigate the fee structure that makes partners billionaires regardless of performance. Calculate the real returns after the 2-and-20 (or worse) fee structures. Why do pension funds and endowments keep pouring money in despite academic studies showing they'd do better in index funds?
|
||||
|
||||
Explore the revolving door between PE, government, and central banks. How many Fed officials and Treasury secretaries came from or went to PE? Map the political donations and lobbying expenditures that keep carried interest taxed as capital gains.
|
||||
|
||||
Address the human cost through labor statistics and case studies—what happens to employees when PE takes over? But also examine when PE genuinely saves failing companies and preserves jobs.
|
||||
|
||||
Write this as if explaining to a skeptical but curious friend over drinks—clear language, no jargon without explanation, and enough dry humor to make the absurdities apparent. Think Michael Lewis meets Matt Levine. Keep it under 3,000 words but pack it with hard data and real examples. The goal: help readers understand why PE is simultaneously capitalism's most sophisticated expression and its most primitive.
|
||||
```
|
||||
|
||||

|
||||
|
||||
### Research Process
|
||||
|
||||
The AI engages multiple Octagon tools to gather comprehensive data:
|
||||
|
||||

|
||||
|
||||
### The Results
|
||||
|
||||
Octagon delivers a detailed analysis covering:
|
||||
|
||||
**Part 1: The Mechanics Explained**
|
||||

|
||||
|
||||
**Part 2: Historical Analysis and Case Studies**
|
||||

|
||||
|
||||
**Part 3: Financial Engineering and Human Impact**
|
||||

|
||||
|
||||
The report demonstrates Octagon's ability to:
|
||||
- Access and analyze SEC filings
|
||||
- Compare multiple deal outcomes
|
||||
- Calculate real returns after fees
|
||||
- Track political connections
|
||||
- Assess human impact with data
|
||||
|
||||
## Finance-Focused Use Cases
|
||||
|
||||
### Investment Research
|
||||
```
|
||||
Analyze Tesla's vertical integration strategy vs traditional automakers. Include supply chain dependencies, margin analysis, and capital efficiency metrics from the last 5 years.
|
||||
```
|
||||
|
||||
### Market Structure Analysis
|
||||
```
|
||||
Map the concentration of market makers in US equities. Who controls order flow, what are their profit margins, and how has this changed since zero-commission trading?
|
||||
```
|
||||
|
||||
### Corporate Governance
|
||||
```
|
||||
Investigate executive compensation at the 10 largest US banks post-2008. Compare pay ratios, stock buybacks vs R&D spending, and correlation with shareholder returns.
|
||||
```
|
||||
|
||||
### Private Market Intelligence
|
||||
```
|
||||
Track Series B+ funding rounds in AI/ML companies in 2024. Identify valuation trends, investor concentration, and compare to public market multiples.
|
||||
```
|
||||
|
||||
### Regulatory Analysis
|
||||
```
|
||||
Examine how Basel III implementation differs across major markets. Which banks gained competitive advantages and why?
|
||||
```
|
||||
|
||||
### M&A Strategy
|
||||
```
|
||||
Analyze Microsoft's acquisition strategy under Nadella. Calculate actual vs projected synergies, integration success rates, and impact on market position.
|
||||
```
|
||||
|
||||
## Technical Research Capabilities
|
||||
|
||||
While finance-focused, Octagon also handles technical research:
|
||||
|
||||
### Framework Evaluation
|
||||
```
|
||||
Compare Kubernetes alternatives for edge computing. Consider resource usage, latency, reliability, and operational complexity with real deployment data.
|
||||
```
|
||||
|
||||
### API Economics
|
||||
```
|
||||
Analyze the unit economics of major AI API providers. Include pricing history, usage patterns, and margin estimates based on reported compute costs.
|
||||
```
|
||||
|
||||
### Open Source Sustainability
|
||||
```
|
||||
Research funding models for critical open source infrastructure. Which projects are at risk and what are the economic incentives misalignments?
|
||||
```
|
||||
|
||||
## Research Quality
|
||||
|
||||
Octagon's reports typically include:
|
||||
- **Primary Sources**: SEC filings, earnings calls, regulatory documents
|
||||
- **Quantitative Analysis**: Financial metrics, ratios, trend analysis
|
||||
- **Comparative Studies**: Peer benchmarking, historical context
|
||||
- **Narrative Clarity**: Complex topics explained accessibly
|
||||
- **Actionable Insights**: Not just data, but implications
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
**Authentication Issues:**
|
||||
- Verify API key from Octagon dashboard
|
||||
- Check trial status hasn't expired
|
||||
- Ensure correct API key format
|
||||
- Contact Octagon support if needed
|
||||
|
||||
**Research Failures:**
|
||||
- Some queries may exceed scope (try narrowing)
|
||||
- Financial data may have access restrictions
|
||||
- Break complex queries into parts
|
||||
- Allow time for comprehensive research
|
||||
|
||||
**Tool Calling Problems:**
|
||||
- Not all models handle multiple tools well
|
||||
- Kimi-k2 via OpenRouter works reliably
|
||||
- Claude 3.5+ Sonnet also recommended
|
||||
- Enable tool calling in model settings
|
||||
|
||||
**Performance Considerations:**
|
||||
- Deep research takes time (be patient)
|
||||
- Complex financial analysis may take minutes
|
||||
- Monitor API usage in dashboard
|
||||
- Consider query complexity vs urgency
|
||||
|
||||
<Callout type="warning">
|
||||
Octagon specializes in financial and business research. While capable of technical analysis, it's optimized for market intelligence and investment research.
|
||||
</Callout>
|
||||
|
||||
## Pricing After Trial
|
||||
|
||||
After the 2-week Pro trial:
|
||||
- Check current pricing at octagonagents.com
|
||||
- Usage-based pricing for API access
|
||||
- Different tiers for research depth
|
||||
- Educational discounts may be available
|
||||
|
||||
## Octagon vs Other Research Tools
|
||||
|
||||
| Feature | Octagon | ChatGPT Deep Research | Perplexity |
|
||||
|---------|---------|----------------------|------------|
|
||||
| **Finance Focus** | Specialized | General | General |
|
||||
| **Data Sources** | Financial databases | Web-wide | Web-wide |
|
||||
| **SEC Integration** | Native | Limited | Limited |
|
||||
| **Market Data** | Comprehensive | Basic | Basic |
|
||||
| **Research Depth** | Very Deep | Deep | Moderate |
|
||||
| **Speed** | Moderate | Slow | Fast |
|
||||
|
||||
## Next Steps
|
||||
|
||||
Octagon Deep Research MCP excels at complex financial analysis that would typically require a team of analysts. The integration provides institutional-quality research capabilities within Jan's conversational interface.
|
||||
|
||||
Whether analyzing market structures, evaluating investments, or understanding business models, Octagon delivers the depth and accuracy that financial professionals expect, while maintaining readability for broader audiences.
|
||||
281
docs/src/pages/docs/mcp-examples/design/canva.mdx
Normal file
@ -0,0 +1,281 @@
|
||||
---
|
||||
title: Canva MCP
|
||||
description: Create and manage designs through natural language commands with Canva's official MCP server.
|
||||
keywords:
|
||||
[
|
||||
Jan,
|
||||
MCP,
|
||||
Model Context Protocol,
|
||||
Canva,
|
||||
design automation,
|
||||
graphic design,
|
||||
presentations,
|
||||
templates,
|
||||
tool calling,
|
||||
]
|
||||
---
|
||||
|
||||
import { Callout, Steps } from 'nextra/components'
|
||||
|
||||
# Canva MCP
|
||||
|
||||
[Canva MCP](https://www.canva.com/newsroom/news/deep-research-integration-mcp-server/) gives AI models the ability to create, search, and manage designs directly within Canva. As the first design platform with native MCP integration, it lets you generate presentations, logos, and marketing materials through conversation rather than clicking through design interfaces.
|
||||
|
||||
The integration provides comprehensive design capabilities without leaving your chat, though actual editing still happens in Canva's interface.
|
||||
|
||||
## Available Tools
|
||||
|
||||
<Callout type="info">
|
||||
Canva's MCP tools may change over time as the integration evolves. This list reflects current capabilities.
|
||||
</Callout>
|
||||
|
||||
### Design Operations
|
||||
- **generate-design**: Create new designs using AI prompts
|
||||
- **search-designs**: Search docs, presentations, videos, whiteboards
|
||||
- **get-design**: Get detailed information about a Canva design
|
||||
- **get-design-pages**: List pages in multi-page designs
|
||||
- **get-design-content**: Extract content from designs
|
||||
- **resize-design**: Adapt designs to different dimensions
|
||||
- **get-design-resize-status**: Check resize operation status
|
||||
- **get-design-generation-job**: Track AI generation progress
|
||||
|
||||
### Import/Export
|
||||
- **import-design-from-url**: Import files from URLs as new designs
|
||||
- **get-design-import-from-url**: Check import status
|
||||
- **export-design**: Export designs in various formats
|
||||
- **get-export-formats**: List available export options
|
||||
- **get-design-export-status**: Track export progress
|
||||
|
||||
### Organization
|
||||
- **create-folder**: Create folders in Canva
|
||||
- **move-item-to-folder**: Organize designs and assets
|
||||
- **list-folder-items**: Browse folder contents
|
||||
|
||||
### Collaboration
|
||||
- **comment-on-design**: Add comments to designs
|
||||
- **list-comments**: View design comments
|
||||
- **list-replies**: See comment threads
|
||||
- **reply-to-comment**: Respond to feedback
|
||||
|
||||
### Legacy Tools
|
||||
- **search**: ChatGPT connector (use search-designs instead)
|
||||
- **fetch**: Content retrieval for ChatGPT
|
||||
|
||||
## Prerequisites
|
||||
|
||||
- Jan with MCP enabled
|
||||
- Canva account (free or paid)
|
||||
- Model with tool calling support
|
||||
- Node.js installed
|
||||
- Internet connection for Canva API access
|
||||
|
||||
## Setup
|
||||
|
||||
### Enable MCP
|
||||
|
||||
1. Go to **Settings** > **MCP Servers**
|
||||
2. Toggle **Allow All MCP Tool Permission** ON
|
||||
|
||||

|
||||
|
||||
### Configure Canva MCP Server
|
||||
|
||||
Click `+` in MCP Servers section:
|
||||
|
||||
**Configuration:**
|
||||
- **Server Name**: `Canva`
|
||||
- **Command**: `npx`
|
||||
- **Arguments**: `-y mcp-remote@latest https://mcp.canva.com/mcp`
|
||||
- **Environment Variables**: Leave empty (authentication handled via OAuth)
|
||||
|
||||

|
||||
|
||||
### Authentication Process
|
||||
|
||||
When you first use Canva tools:
|
||||
|
||||
1. **Browser Opens Automatically**
|
||||
- Canva authentication page appears in your default browser
|
||||
- Log in with your Canva account
|
||||
|
||||

|
||||
|
||||
2. **Team Selection & Permissions**
|
||||
- Select your team (if you have multiple)
|
||||
- Review permissions the AI will have
|
||||
- Click **Allow** to grant access
|
||||
|
||||

|
||||
|
||||
The permissions include:
|
||||
- Reading your profile and designs
|
||||
- Creating new designs
|
||||
- Managing folders and content
|
||||
- Accessing team brand templates
|
||||
- Commenting on designs
|
||||
|
||||
### Model Configuration
|
||||
|
||||
Use a tool-enabled model:
|
||||
|
||||
- **Anthropic Claude 3.5+ Sonnet**
|
||||
- **OpenAI GPT-4o**
|
||||
- **Google Gemini Pro**
|
||||
|
||||
## Real-World Usage Example
|
||||
|
||||
Here's an actual workflow creating a company logo:
|
||||
|
||||
### Initial Setup Confirmation
|
||||
|
||||
```
|
||||
Are you able to access my projects?
|
||||
```
|
||||
|
||||
The AI explains available capabilities:
|
||||
|
||||

|
||||
|
||||
### Design Creation Request
|
||||
|
||||
```
|
||||
Create new designs with AI. Call it "VibeBusiness" and have it be a company focused on superintelligence for the benefit of humanity.
|
||||
```
|
||||
|
||||
The AI initiates design generation:
|
||||
|
||||

|
||||
|
||||
### Design Options
|
||||
|
||||
The AI creates multiple logo variations:
|
||||
|
||||
**First Option:**
|
||||

|
||||
|
||||
**Selected Design:**
|
||||

|
||||
|
||||
### Final Result
|
||||
|
||||
After selection, the AI confirms:
|
||||
|
||||

|
||||
|
||||
Clicking the design link opens it directly in Canva:
|
||||
|
||||

|
||||
|
||||
## Practical Use Cases
|
||||
|
||||
### Marketing Campaign Development
|
||||
```
|
||||
Create a social media campaign for our new product launch. Generate Instagram posts, Facebook covers, and LinkedIn banners with consistent branding.
|
||||
```
|
||||
|
||||
### Presentation Automation
|
||||
```
|
||||
Search for our Q4 sales presentation and create a simplified 5-slide version for the board meeting.
|
||||
```
|
||||
|
||||
### Brand Asset Management
|
||||
```
|
||||
List all designs in our "2025 Marketing" folder and export the approved ones as PDFs.
|
||||
```
|
||||
|
||||
### Design Iteration
|
||||
```
|
||||
Find our company logo designs from last month and resize them for business cards, letterheads, and email signatures.
|
||||
```
|
||||
|
||||
### Content Extraction
|
||||
```
|
||||
Extract all text from our employee handbook presentation so I can update it in our documentation.
|
||||
```
|
||||
|
||||
### Collaborative Review
|
||||
```
|
||||
Add a comment to the new website mockup asking the design team about the color scheme choices.
|
||||
```
|
||||
|
||||
## Workflow Tips
|
||||
|
||||
### Effective Design Generation
|
||||
- **Be specific**: "Create a minimalist tech company logo with blue and silver colors"
|
||||
- **Specify format**: "Generate an Instagram story template for product announcements"
|
||||
- **Include context**: "Design a professional LinkedIn banner for a AI research company"
|
||||
- **Request variations**: Ask for multiple options to choose from
|
||||
|
||||
### Organization Best Practices
|
||||
- Create folders before generating multiple designs
|
||||
- Use descriptive names for easy searching later
|
||||
- Move designs to appropriate folders immediately
|
||||
- Export important designs for backup
|
||||
|
||||
### Integration Patterns
|
||||
- Generate designs → Review options → Select preferred → Open in Canva for fine-tuning
|
||||
- Search existing designs → Extract content → Generate new versions
|
||||
- Create templates → Resize for multiple platforms → Export all variants
|
||||
|
||||
## Limitations and Considerations
|
||||
|
||||
**Design Editing**: While the MCP can create and manage designs, actual editing requires opening Canva's interface.
|
||||
|
||||
**Project Access**: The integration may not access all historical projects immediately, focusing on designs created or modified after connection.
|
||||
|
||||
**Generation Time**: AI design generation takes a few moments. The tool provides job IDs to track progress.
|
||||
|
||||
**Team Permissions**: Access depends on your Canva team settings and subscription level.
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
**Authentication Issues:**
|
||||
- Clear browser cookies for Canva
|
||||
- Try logging out and back into Canva
|
||||
- Ensure pop-ups aren't blocked for OAuth flow
|
||||
- Check team admin permissions if applicable
|
||||
|
||||
**Design Generation Failures:**
|
||||
- Verify you have creation rights in selected team
|
||||
- Check Canva subscription limits
|
||||
- Try simpler design prompts first
|
||||
- Ensure stable internet connection
|
||||
|
||||
**Tool Availability:**
|
||||
- Some tools require specific Canva plans
|
||||
- Team features need appropriate permissions
|
||||
- Verify MCP server is showing as active
|
||||
- Restart Jan after authentication
|
||||
|
||||
**Search Problems:**
|
||||
- Use search-designs (not the legacy search tool)
|
||||
- Be specific with design types and names
|
||||
- Check folder permissions for team content
|
||||
- Allow time for new designs to index
|
||||
|
||||
<Callout type="warning">
|
||||
Design generation uses Canva's AI capabilities and may be subject to usage limits based on your account type.
|
||||
</Callout>
|
||||
|
||||
## Advanced Workflows
|
||||
|
||||
### Batch Operations
|
||||
```
|
||||
Create 5 variations of our product announcement banner, then resize all of them for Twitter, LinkedIn, and Facebook.
|
||||
```
|
||||
|
||||
### Content Migration
|
||||
```
|
||||
Import all designs from [URLs], organize them into a "2025 Campaign" folder, and add review comments for the team.
|
||||
```
|
||||
|
||||
### Automated Reporting
|
||||
```
|
||||
Search for all presentation designs created this month, extract their content, and summarize the key themes.
|
||||
```
|
||||
|
||||
## Next Steps
|
||||
|
||||
Canva MCP bridges the gap between conversational AI and visual design. Instead of describing what you want and then manually creating it, you can generate professional designs directly through natural language commands.
|
||||
|
||||
The real power emerges when combining multiple tools - searching existing assets, generating new variations, organizing content, and collaborating with teams, all within a single conversation flow.
|
||||
@ -164,41 +164,17 @@ Jan stores everything locally on your computer in standard file formats.
|
||||
This duplicates your data to the new location - your original files stay safe.
|
||||
</Callout>
|
||||
|
||||
## Network Settings
|
||||
## Local API Server
|
||||
|
||||
### HTTPS Proxy Setup
|
||||
All settings for running Jan as a local, OpenAI-compatible server have been moved to their own dedicated page for clarity.
|
||||
|
||||
If you need to connect through a corporate network or want enhanced privacy:
|
||||
This includes configuration for:
|
||||
- Server Host and Port
|
||||
- API Keys
|
||||
- CORS (Cross-Origin Resource Sharing)
|
||||
- Verbose Logging
|
||||
|
||||
1. **Enable** the proxy toggle
|
||||
2. Enter your proxy details:
|
||||
```
|
||||
http://<username>:<password>@<server>:<port>
|
||||
```
|
||||
|
||||
**Example:**
|
||||
```
|
||||
http://user:pass@proxy.company.com:8080
|
||||
```
|
||||
|
||||

|
||||
|
||||
<Callout type="info">
|
||||
Proxy connections may slow down model downloads but don't affect local model performance.
|
||||
</Callout>
|
||||
|
||||
### SSL Certificate Handling
|
||||
|
||||
**Ignore SSL Certificates:** Only enable this for:
|
||||
- Corporate networks with internal certificates
|
||||
- Development/testing environments
|
||||
- Trusted network setups
|
||||
|
||||

|
||||
|
||||
<Callout type="warning">
|
||||
Only enable if you trust your network environment completely.
|
||||
</Callout>
|
||||
[**Go to Local API Server Settings →**](/docs/local-server/api-server)
|
||||
|
||||
## Emergency Options
|
||||
|
||||
|
Before Width: | Height: | Size: 163 KiB |
|
Before Width: | Height: | Size: 149 KiB |
|
Before Width: | Height: | Size: 598 KiB |
|
Before Width: | Height: | Size: 306 KiB |
|
Before Width: | Height: | Size: 85 KiB |
|
Before Width: | Height: | Size: 120 KiB |
|
Before Width: | Height: | Size: 450 KiB |
|
Before Width: | Height: | Size: 118 KiB |
|
Before Width: | Height: | Size: 453 KiB |
|
Before Width: | Height: | Size: 524 KiB |
|
Before Width: | Height: | Size: 147 KiB |
|
Before Width: | Height: | Size: 160 KiB |
|
Before Width: | Height: | Size: 142 KiB |
|
Before Width: | Height: | Size: 140 KiB |
|
Before Width: | Height: | Size: 162 KiB |
|
Before Width: | Height: | Size: 185 KiB |
|
Before Width: | Height: | Size: 185 KiB |
|
Before Width: | Height: | Size: 187 KiB |
|
Before Width: | Height: | Size: 187 KiB |
|
Before Width: | Height: | Size: 192 KiB |
|
Before Width: | Height: | Size: 187 KiB |
|
Before Width: | Height: | Size: 541 KiB |
|
Before Width: | Height: | Size: 257 KiB |
|
Before Width: | Height: | Size: 537 KiB |
|
Before Width: | Height: | Size: 576 KiB |
|
Before Width: | Height: | Size: 1.5 MiB |
|
Before Width: | Height: | Size: 1.2 MiB |
|
Before Width: | Height: | Size: 487 KiB |
|
Before Width: | Height: | Size: 170 KiB |
|
Before Width: | Height: | Size: 166 KiB |
|
Before Width: | Height: | Size: 183 KiB |
|
Before Width: | Height: | Size: 343 KiB |
|
Before Width: | Height: | Size: 1.5 MiB |
|
Before Width: | Height: | Size: 205 KiB |
|
Before Width: | Height: | Size: 22 MiB |
|
Before Width: | Height: | Size: 4.4 MiB |
|
Before Width: | Height: | Size: 819 KiB |
|
Before Width: | Height: | Size: 29 KiB |
|
Before Width: | Height: | Size: 512 KiB |
|
Before Width: | Height: | Size: 199 KiB |
|
Before Width: | Height: | Size: 144 KiB |
|
Before Width: | Height: | Size: 337 KiB |
|
Before Width: | Height: | Size: 126 KiB |
|
Before Width: | Height: | Size: 992 KiB |