Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
116 changes: 65 additions & 51 deletions README.md

Large diffs are not rendered by default.

7 changes: 4 additions & 3 deletions docs-site/src/pages/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ const PROVIDERS = [
"Azure Speech",
"OpenAI TTS",
"TypeSafe",
"Laya",

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

MINOR — intended as a non-blocking note; the author's rationale is accepted.

Adding the Laya chip here makes the inconsistency on this same rendered page one click easier to hit: the provider grid now enumerates 23 names, while the byte-identical (unmodified) copy elsewhere in this file still says 40:

  • QUICK_LINKS SDK Guide description — "Unified API for 40 providers"
  • routing card — "Unified API for 40 AI providers"
  • <Layout description="...from 40 providers...">

The commit message transparently documents that only sentences the diff touches must drop their counts, and sentences it does not touch are deferred — I accept that scoping. But docs/features/index.md's "Platform Capabilities" / "AI Provider Integration" tables (both un-touched) also still assert 40.

Suggested change
"Laya",
"Laya",

No code change required; if you want to fold the remaining count out before merge, the three index.tsx strings and the two features/index.md table rows above are the complete set (verified against base 8fc9088 → head f2387f4). Leaving them for the stated follow-up pass is fine.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed in bae3755: the hardcoded provider counts are gone. index.tsx (SDK Guide card, routing card, Layout description) and docs/features/index.md now say supported providers or many AI providers instead of 40.

];

const QUICK_LINKS = [
Expand Down Expand Up @@ -118,7 +119,7 @@ const FAQ_ITEMS = [
{
question: "What is NeuroLink?",
answer:
"NeuroLink is an enterprise AI development platform that provides unified access to 40 AI providers (OpenAI, Anthropic, Google AI, AWS Bedrock, Azure, DeepSeek, NVIDIA NIM, LM Studio, llama.cpp, plus voice providers like ElevenLabs, Deepgram, and more) through a single TypeScript SDK and professional CLI — 39 of them for generate()/stream(), plus TypeSafe for calibrated decide() judgements. It is extracted from production systems at Juspay and battle-tested at enterprise scale.",
"NeuroLink is an enterprise AI development platform that provides unified access to AI providers (OpenAI, Anthropic, Google AI, AWS Bedrock, Azure, DeepSeek, NVIDIA NIM, LM Studio, llama.cpp, plus voice providers like ElevenLabs, Deepgram, and more) through a single TypeScript SDK and professional CLI — most of them for generate()/stream(), plus TypeSafe and Laya for calibrated decide() judgements. It is extracted from production systems at Juspay and battle-tested at enterprise scale.",
},
{
question: "How is NeuroLink different from LangChain or Vercel AI SDK?",
Expand All @@ -133,7 +134,7 @@ const FAQ_ITEMS = [
{
question: "What AI providers does NeuroLink support?",
answer:
"NeuroLink supports 40 providers in total. 39 serve generate()/stream(): OpenAI, Anthropic, Google AI Studio, Google Vertex AI, AWS Bedrock, Azure OpenAI, Mistral, Ollama, LiteLLM, HuggingFace, SageMaker, OpenRouter, DeepSeek, NVIDIA NIM (400+ catalog models), LM Studio (local), llama.cpp (local GGUF), any OpenAI-compatible endpoint, and voice providers — OpenAI TTS, ElevenLabs, Google TTS, Azure TTS, Whisper, Deepgram, Azure STT, Google STT. The 40th, TypeSafe, serves only decide() — calibrated typed judgements, no text. Switching generate/stream providers requires changing a single parameter.",
"Most NeuroLink providers serve generate()/stream(): OpenAI, Anthropic, Google AI Studio, Google Vertex AI, AWS Bedrock, Azure OpenAI, Mistral, Ollama, LiteLLM, HuggingFace, SageMaker, OpenRouter, DeepSeek, NVIDIA NIM (400+ catalog models), LM Studio (local), llama.cpp (local GGUF), any OpenAI-compatible endpoint, and voice providers — OpenAI TTS, ElevenLabs, Google TTS, Azure TTS, Whisper, Deepgram, Azure STT, Google STT. Two serve decide() only — calibrated typed judgements, no text: TypeSafe, and Laya, a self-hosted open-weights model (LAYA_API_KEY + LAYA_BASE_URL). Switching generate/stream providers requires changing a single parameter.",
},
{
question: "Does NeuroLink support MCP (Model Context Protocol)?",
Expand All @@ -148,7 +149,7 @@ const FAQ_ITEMS = [
{
question: "What is the `decide` inference type?",
answer:
"decide() is a third inference type alongside generate() and stream() — a separate modality, not a mode of the other two, so a text-only provider is never reachable from it and a decide-only provider is never reachable from generation fallback. A decision model takes one state plus a set of named, typed questions and returns one typed, calibrated answer per question in a single parallel pass — no text, nothing to parse out of prose. Because the confidence is calibrated rather than self-reported, it can gate action directly: NeuroLink's classifier router uses asymmetric thresholds (0.3 confidence to route a request up to a pricier model, 0.6 to route it down) since routing too cheap and routing too expensive don't cost the same. Six consumers build on it today — model routing, a registry-derived model catalogue (64 models across 7 providers, 132 aliases, added on top of a host's own declared pool rather than replacing it), context budget sizing, compaction quality gating, calibrated MCP/tool-server routing, and RAG retrieval planning — and every one fails open: with no TYPESAFE_API_KEY configured, behavior is byte-for-byte what it was before. Decisions get their own model.decision observability span with independent cost attribution, kept separate from generation metrics, across all 9 supported exporters. TypeSafe's Jev is the first decision provider; enabling it is that one environment variable.",
"decide() is a third inference type alongside generate() and stream() — a separate modality, not a mode of the other two, so a text-only provider is never reachable from it and a decide-only provider is never reachable from generation fallback. A decision model takes one state plus a set of named, typed questions and returns one typed, calibrated answer per question in a single parallel pass — no text, nothing to parse out of prose. Because the confidence is calibrated rather than self-reported, it can gate action directly: NeuroLink's classifier router uses asymmetric thresholds (0.3 confidence to route a request up to a pricier model, 0.6 to route it down) since routing too cheap and routing too expensive don't cost the same. Six consumers build on it today — model routing, a registry-derived model catalogue (64 models across 7 providers, 132 aliases, added on top of a host's own declared pool rather than replacing it), context budget sizing, compaction quality gating, calibrated MCP/tool-server routing, and RAG retrieval planning — and every one fails open: with no TYPESAFE_API_KEY configured, behavior is byte-for-byte what it was before. Decisions get their own model.decision observability span with independent cost attribution, kept separate from generation metrics, across all 9 supported exporters. TypeSafe's Jev is the first decision provider, and Laya — an open-weights model you can run yourself — is a second; enabling either is one environment variable (two for Laya, which also needs a base URL).",
},
];

Expand Down
Loading
Loading