CYGNUS-X · V5

Seyfert

THE TYPESCRIPT FRAMEWORK FOR DISCORD
npm i seyfert
SCROLL INTO THE CORE · IT’S SAFE ↓
01Capabilities

Everything you need to ship

Each line ships with a receipt. No refunds — you won't be needing one.

F-01

Typed end to end

Inference everywhere: command options, event payloads, interaction responses. Quitting `as any` is hard. We made it mandatory.

0 'as any'
F-02

Ready for the big leagues

Proven from tiny side projects to multi-million-guild bots. Sharding, presence chunking and raw gateway access come in the box.

1M+ guilds
F-03

Let the decorators work

@Declare, @Options, @AutoLoad. No boilerplate, no manual REST calls, no bookkeeping. The decorators clock in so you don't have to.

<60s setup
F-04

Yours to rebuild

Custom cache, custom REST, custom client. Swap any piece the day you need it to behave differently. We won't take it personally.

100% hackable
F-05

Updates on day one

Threads, components v2, polls, interactions — there to use the same day Discord ships them, not a release later.

Day-1 support
F-06

And a whole ecosystem

Official plugins: Redis cache, uWS gateway, cooldowns — drop in what fits, swap what doesn't. And honestly, we ran out of room here.

Redis · uWS · +
02The toolkit

Your whole bot, in four files

A command. A guard in front of it. Buttons that talk back. Replies in any language. The everyday machinery of a real bot, already wired in. Pick a tab, steal the code.

echo.command.ts
import {
  Declare, Options, Command, createStringOption,
  type CommandContext,
} from 'seyfert';

const options = {
  message: createStringOption({
    description: 'What should I echo back?',
    required: true,
  }),
};

@Declare({ name: 'echo', description: 'Repeat after me' })
@Options(options)
export default class EchoCommand extends Command {
  async run(ctx: CommandContext<typeof options>) {
    await ctx.write({ content: ctx.options.message });
  }
}
// that's the whole file.

declare it and run it — registration and uploads happen on their own

03The difference

Same boot, two worlds

index.jsdiscord.js v14
import {
  Client, Collection, GatewayIntentBits, Events,
} from 'discord.js';
import { readdirSync } from 'node:fs';

// 1 · the ceremony
const client = new Client({
  intents: [GatewayIntentBits.Guilds],
});
client.commands = new Collection();

// 2 · hand-roll a command loader
for (const file of readdirSync('./commands')) {
  const command = require(`./commands/${file}`);
  client.commands.set(command.data.name, command);
}

// 3 · hand-roll a dispatcher
client.on(Events.InteractionCreate, async (i) => {
  if (!i.isChatInputCommand()) return;
  await client.commands.get(i.commandName)?.execute(i);
});

client.login(process.env.TOKEN);

// 4 · still owed: node deploy-commands.js, by hand
a loader, a dispatcher, a login — and a deploy script you still run by hand
seyfert.config.mjs + index.tsseyfert
// seyfert.config.mjs
import { config } from 'seyfert';

export default config.bot({
  token: process.env.BOT_TOKEN ?? '',
  locations: { base: 'dist', commands: 'commands' },
  intents: ['Guilds'],
});

// src/index.ts
import { Client } from 'seyfert';

const client = new Client();

// connects, loads everything, uploads your commands
client.start().then(() =>
  client.uploadCommands({ cachePath: './commands.json' }));

// that's the boot. all of it.
say where things live · start() does the rest · it's super effective!
0 loaders0 dispatchers0 deploy scripts

// one hour here is seven years in discord.js

04Luminosity

Shine brighter, burn less

84 MB where discord.js needs 206 — 2.45× lighter under the same load.

FULL MEASUREMENTS ↗
seyfert
84 MB
eris
90 MB
detritus
111 MB
oceanic
119 MB
discord.js
206 MB
◆ THIS FRAMEWORKMEDIAN RSS OF 24 SAMPLED RUNS · SAME GATEWAY WORKLOAD · NODE · NO SMART FRIDGES REQUIREDRAW DATA ↗
05In orbit

Production bots, in orbit

Real bots, really shipped, all circling one core. Hover one to hear it from the team.

After years of experience with Discord.js, Discordeno and Eris, Seyfert proved to be unmatched for large-scale music bots - dropping our RAM usage to under 1 GB (from almost 4 GB) while handling 200% more servers.
Listen— running seyfert

Add yours — open a PR ↗

06Open source
9+Contributors
MARCROCK22socram03yuzudevnicolito128FreeAoiEvilG-MCDrylozudragurimuXenofic

Read · review · contribute

CORE · 0 PC FROM CENTER

Ready to build your bot?

You made it through the arms. The center is where you start building.