Decorative dot pattern background
Decorative dot pattern background
Build · Observe · Automate · Ship
AI Agents
AI Agent Engineering Platform for development, observability, evaluation, and deployment in one place.
Core
Open Source TypeScript Framework

Everything you need to build production-ready AI agents in TypeScript.

MemoryRAGGuardrailsToolsMCPVoiceWorkflowand more...
typescript
import { Elysian, Agent } from "@elysian/core";
import { honoServer } from "@elysian/server-hono";
import { openai } from "@ai-sdk/openai";

const agent = new Agent({
  name: "my-elysian-app",
  instructions: "A helpful assistant that answers questions",
  model: openai("gpt-4o-mini"),
});

new Elysian({
  agents: { agent },
  server: honoServer(),
});
ElysianOps Console
Cloud / Self-Hosted Platform

Enterprise-grade platform to take AI agents from development to production.

Create production-ready AI agents in minutes with type-safe TypeScript APIsDocs
framework preview
typescript
import { openai } from "@ai-sdk/openai";
import { Agent, Elysian, createTriggers } from "@elysian/core";
import { createPinoLogger } from "@elysian/logger";
import { honoServer } from "@elysian/server-hono";
import { weatherTool } from "./tools/weather";

const logger = createPinoLogger({ name: "with-slack", level: "info" });

const slackAgent = new Agent({
  name: "slack-agent",
  instructions: "You are a Slack assistant.",
  tools: [weatherTool],
  model: openai("gpt-4o-mini"),
});

new Elysian({
  agents: { slackAgent },
  server: honoServer(),
  logger,
  triggers: createTriggers((on) => {
    on.slack.messagePosted(async ({ payload, agents }) => {
      const event = (payload as SlackMessagePayload | undefined) ?? {};
      const channelId = event.channel;
      const threadTs = event.thread_ts ?? event.ts;
      const text = event.text ?? "";
      const userId = event.user ?? "unknown-user";

      if (!channelId || !text) {
        logger.warn("Missing channel or text in Slack payload");
        return;
      }

      await agents.slackAgent.generateText(
        `Slack channel: ${channelId}\n` +
        `Thread: ${threadTs ?? "new thread"}\n` +
        `User: <@${userId}>\n` +
        `Message: ${text}\n` +
        `If the user asks for weather, call getWeather.`
      );
    });
  }),
});