diff --git a/package.json b/package.json
index 2957be56f..c786a9538 100644
--- a/package.json
+++ b/package.json
@@ -36,6 +36,7 @@
"@monaco-editor/react": "4.4.6",
"@next/mdx": "13.1.1",
"@radix-ui/react-slider": "1.1.2",
+ "@rive-app/react-canvas": "4.4.0",
"@sindresorhus/slugify": "2.1.1",
"@vercel/og": "0.0.22",
"acorn": "8.8.1",
@@ -71,6 +72,7 @@
"react-dom": "18.2.0",
"react-error-boundary": "3.1.4",
"react-fast-compare": "3.2.0",
+ "react-fast-marquee": "1.6.2",
"react-feather": "2.0.10",
"react-syntax-highlighter": "15.5.0",
"react-use": "17.4.0",
diff --git a/pages/ai.tsx b/pages/ai.tsx
new file mode 100644
index 000000000..bb8c4f07d
--- /dev/null
+++ b/pages/ai.tsx
@@ -0,0 +1,1171 @@
+import { GetStaticProps } from "next";
+import Link from "next/link";
+import Marquee from "react-fast-marquee";
+import Check from "src/shared/Icons/Check";
+import Header from "src/shared/Header";
+import Container from "src/shared/layout/Container";
+import PageContainer from "src/shared/layout/PageContainer";
+import Logos from "src/shared/Home/Logos";
+// Icons
+import CopyBtn from "src/shared/Home/CopyBtn";
+import { ChevronRightIcon } from "@heroicons/react/20/solid";
+import CodeWindow from "src/shared/CodeWindow";
+import Footer from "src/shared/Footer";
+
+export const getStaticProps: GetStaticProps = async () => {
+ return {
+ props: {
+ designVersion: "2",
+ },
+ };
+};
+
+export default function AI() {
+ return (
+
+
+
+
+
+ {/*
+
+
+ Companies of all sizes trust Inngest to power their AI functionality.
+
+
+ */}
+
+ {/* Code example */}
+
+
+ Focus on what matters: AI.
+
+
+ Spend time developing what's important. Scale from day 0 by leaving
+ the complex orchestration to us.
+
+
+
+
+ {/*
+
+ TODO: Flow diagram
+
+ */}
+
+
+
+
+
+ {/* Call out box: rapid development */}
+
+
+
+
+
+
+
+
+ Rapidly iterate on complex AI chains,
+
+ directly in code.
+
+
+
+ A simple, powerful interface that lets you define reliable flow
+ control in your own code. Write AI workflows directly in your
+ API using our SDK, with local testing out of the box.
+
+
+
+
+ Get started{" "}
+
+
+
+
+
+
+
+
+
+ Your data, your environment
+
+
+ Leverage data from your own database, vector store, or APIs
+ directly in code — without complex interfaces or adapters.
+
+
+
+
+
+
+ Any AI model, any AI pattern
+
+
+ Easily implement any AI model as either a single call or using
+ patterns like RAG, tree of thoughts, chain of thoughts, or
+ safety rails, directly in code.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 12x
+ development speedup
+
+ compared to traditional infrastructure
+
+
+
+ 75%
+ total cost reduction
+
+ on infrastructure and time spent
+
+
+
+
+
+
+
+
+
+
+ Scale-ready production AI in hours.
+ Zero infrastructure required.
+
+
+
+ Move to production by deploying Inngest functions inside your existing
+ API, wherever it is — serverless, servers, or edge. Backed by rock
+ solid external orchestration, your workflows are ready to scale in
+ milliseconds.
+
+
+
+
+
+
+ Use with any framework, on any cloud:
+
+
+
+
+
+ );
+}
+
+const AIHero = () => (
+
+
+
+ Build powerful{" "}
+ AI workflows in
+ code.
+
+
+
+ Develop, test, and deploy reliable AI workflows to production with zero
+ new infrastructure, in less than a day. Inngest’s event-driven workflows
+ handle queueing, state, scale, and observability, letting you focus on
+ what matters.
+
+ Concurrency, rate limiting, debounce, automatic cancellation —
+ everything you need to scale, while respecting rate limits, built in
+ from the beginning.
+
+
+
+ Global and per-user
+ concurrency limits
+
+
+ Per-user priorities with
+ fairness guarantees
+
+
+ Auto-cancellation via events
+ to save costs
+
+
+
+
+
+
+ Local development
+
+
+ Iterate on AI flows in your existing code base and test things
+ locally using our dev server, with full production parity.
+
+
+
+ One-command setup for local
+ dev
+
+
+ Visual workflow debugging and
+ logs
+
+
+ Production parity for
+ risk-free deploys
+
+
+
+
+
+
+ No magic: write regular code
+
+
+ Easily create AI workflows with regular code, using any library or
+ integrations you need without learning anything new.
+
+ Deploy in your existing API, on your existing host, without spinning
+ up new infra or provisioning new services — whether you use servers
+ or serverless.
+
+
+
+ Hosted in your existing API
+
+
+ Serverless, servers, or edge
+
+
+ Zero additional infra or
+ provisioning
+
+
+
+
+
+
+
+ Modern SDLC
+
+
+ Hassle free development with preview environments, logging,
+ one-click replay, and error reporting built in.
+
+
+
+ Preview & branch envs built
+ in
+
+
+ Logging and error reporting
+
+
+ E2E encryption available
+
+
+
+
+
+
+
+ End-to-end observability
+
+
+ Full insight without the fuss. Tag functions by user, account,
+ context length, prompt rating, and see any data on any metric.
+
+
+
+ Real-time metrics
+
+
+ Function tagging with
+ user-level cost basis
+
+
+ One click replay
+
+
+
+
+
+ );
+};
+
+const aiFlow = `
+export const userWorkflow = inngest.createFunction(
+ fnOptions, fnListener,
+ async ({ event, step, ctx }) => {
+ const similar = await step.run("query-vectordb", async () => {
+ // Query a vectorDB for similar results given input
+ const embedding = createEmedding(event.data.input);
+ return await index.query({ vector: embedding, topK: 3 }).matches;
+ });
+
+ const response = await step.run("generate-llm-response", async () => {
+ // Inject our prompt given similar search results and event.data.input
+ const prompt = createAgentPrompt(similar, event.data.input);
+ return await llm.createCompletion({
+ model: "gpt-3.5-turbo",
+ prompt: createAgentPrompt(similar),
+ });
+ });
+
+ // Run as many chains and post-AI flows as you need, with retries, state
+ // and orchestration managed for you.
+
+ await step.run("save-to-db", async () => {
+ // Connect to your standard DBs and APIs, as this is regular code that's
+ // deployed in your existing stack
+ await db.summaries.create({ requestID: event.data.requestID, response });
+ });
+ }
+);
+`;
+
+const DevIcon = (props) => (
+
+);
+
+const ProdIcon = (props) => (
+
+);
+
+const StoreLogos = (props) => (
+
+);
+
+const ProviderLogos = (props) => (
+
+);
diff --git a/pages/blog/[slug].tsx b/pages/blog/[slug].tsx
index 2ad87e888..f88293aaa 100644
--- a/pages/blog/[slug].tsx
+++ b/pages/blog/[slug].tsx
@@ -19,14 +19,14 @@ import IconCalendar from "src/shared/Icons/Calendar";
import CTACallout from "src/shared/CTACallout";
import Blockquote from "src/shared/Blog/Blockquote";
import rehypeCodeTitles from "rehype-code-titles";
-import YouTube from 'react-youtube-embed'
+import YouTube from "react-youtube-embed";
const components = {
DiscordCTA,
Button,
CTACallout,
Blockquote,
- YouTube
+ YouTube,
};
type Props = {
diff --git a/pages/demo.tsx b/pages/demo.tsx
index b8f41380a..3ae767949 100644
--- a/pages/demo.tsx
+++ b/pages/demo.tsx
@@ -39,7 +39,11 @@ export default function Demo() {
Create, Test, and Deploy in minutes
-
diff --git a/pages/uses/internal-tools.tsx b/pages/uses/internal-tools.tsx
index 9d74af314..12fe6a979 100644
--- a/pages/uses/internal-tools.tsx
+++ b/pages/uses/internal-tools.tsx
@@ -34,7 +34,10 @@ export default function Template() {
and ship using the most advanced tooling platform available.
-
+
Sign up
@@ -104,7 +107,10 @@ export default function Template() {
Between
-
+
Start building today
@@ -161,7 +167,10 @@ export default function Template() {
-
+
Sign up
diff --git a/pages/uses/workflow-engine.tsx b/pages/uses/workflow-engine.tsx
new file mode 100644
index 000000000..1c99e1583
--- /dev/null
+++ b/pages/uses/workflow-engine.tsx
@@ -0,0 +1,264 @@
+import { GetStaticProps } from "next";
+import CodeWindow from "src/shared/CodeWindow";
+import Header from "src/shared/Header";
+import Check from "src/shared/Icons/Check";
+import Container from "src/shared/layout/Container";
+import PageContainer from "src/shared/layout/PageContainer";
+import Link from "next/link";
+import { ChevronRightIcon } from "@heroicons/react/20/solid";
+import { useRive } from "@rive-app/react-canvas";
+import { useEffect } from "react";
+import Footer from "src/shared/Footer";
+
+export const getStaticProps: GetStaticProps = async (ctx) => {
+ return {
+ props: {
+ designVersion: "2",
+ },
+ };
+};
+
+export default function workflowEngine() {
+ const { rive, RiveComponent } = useRive({
+ src: "/assets/animations/workflows.riv",
+ stateMachines: "state",
+ autoplay: false,
+ });
+
+ useEffect(() => {
+ rive && window.setTimeout(() => rive && rive.play(), 500);
+ }, [rive]);
+
+ return (
+
+
+
+
+
+
+
+
+ Launch customizable workflows, in weeks
+
+
+
+ Build powerful customizable workflows directly in your product
+ using Inngest as the reliable orchestration engine. Develop
+ locally and ship to your existing production systems ready for
+ any scale.
+
+
+
+
+ Integrate directly into
+ your existing code
+
+
+ Powerful, customizable,
+ and observable
+
+
+ Operate at scale
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Case study
+
+
+ FlorianWorks: zero to building a mission-critical workflow engine
+ for fire departments
+
+
+ FlorianWorks develops custom-built software products for fire
+ departments, incorporating custom workflows built directly on top
+ of Inngest to ship reliable products faster and easier than ever
+ before.
+
+
+ Utilizing Inngest's core workflow engine and primitives such as{" "}
+ step.waitForEvent, FlorianWorks
+ ships scheduling, roster management, a rules engine, and finance
+ management without spending effort developing custom distributed
+ systems primitives or reliability concerns.
+
+
+
+ Development on core
+ business logic only
+
+
+ Auditable, logged, secure
+ workflows
+
+
+ Zero additional
+ infrastructure required
+
+
+
+
+
+
+
+
+
+
+ "Inngest is a great platform to build reliability into your long
+ running tasks without drowning in complexity.""
+
+
Ozan Şener, Principal Engineer
+
+
+
+
+
+
+
+ Fully customizable, durable workflows
+
+
+ You bring the application code, we bring the engine. Allow your
+ own users to create workflows composed of reusable logic that you
+ define. Our engine runs workflows as steps, taking care of scale,
+ orchestration, idempotency, retries, and observability for you.
+
+
+ Build simple linear workflows or complex DAG-based workflows with
+ parallelism and fan-in out of the box. Leverage our step
+ primitives for human-in-the-loop or paused functions which
+ automatically resume based off of conditions being met.
+
+
+
+
+
+
+ Concurrency, rate limiting and debounce
+
+ controls built in, with custom keys or controlling your
+ own user's limits
+
+
+
+
+
+ Reliably run any code
+ in any step, with retries and error handling
+ automatically managed
+
+
+
+
+
+
+ Auditable, observable, and scalable
+
+ handling tens of thousands of requests per second with
+ real time metrics
+