What is Narakim?
Narakim is a universal automation platform for building, deploying, and managing bots and automated workflows. It is NOT limited to any single messaging platform. Users can build:
- Generic bots — Timer-driven, webhook-triggered, or manually-invoked automations with no platform dependency
- AI-powered bots — Using the built-in OpenRouter AI extension to access 100+ AI models (GPT-4, Claude, Gemini, Llama, etc.)
- Data processing pipelines — HTTP Request → Transform Data → Database → PDF Generator chains
- Platform-connected bots — Optionally integrate with Discord, Slack, Telegram, or webhooks
- Universal bots — A single bot that listens on Discord AND posts to Slack/Telegram simultaneously on one graph
Platform integration is always optional. A bot works perfectly without connecting to any messaging platform.
Core Concepts
Bots
A bot is the top-level entity. Each bot has:
- Name and description
- Status: DRAFT, ACTIVE, PAUSED, ERROR
- Environment: DEVELOPMENT or PRODUCTION
- Archetype: universal, discord, telegram, slack, cross_platform (see Archetypes below)
- Personality (optional): system prompt, temperature, response length
- Automation: The logic graph that defines what the bot does
- Installed Extensions: Which extensions are available to this bot
- Platform Connections (optional): Discord, Slack, Telegram, or Server/Webhook
Automations (Logic Graphs)
An automation is a directed acyclic graph (DAG) of nodes and edges:
- Nodes represent extensions (triggers, actions, logic, or data operations)
- Edges connect nodes and define execution flow
- Data Mappings on edges route output from one node to the input of the next
- Template Strings allow dynamic data injection (e.g.,
{{nodes.trigger.output.content}}) automation.triggerdesignates the primary trigger (default entry for manual/API runs and canvas anchor). Thenodesarray may contain additional TRIGGER nodes — each starts its own branch when that trigger fires (e.g. multiple Discord events on one bot). Runtime selects the entry node via the event type andtriggerNodeId.
Extensions
Extensions are modular building blocks installed per-bot. Each extension has:
- Type: TRIGGER (starts a flow), ACTION (does something), LOGIC (controls flow), or DATA (transforms/stores data)
- Config Schema: What settings the extension needs (shown in the config sidebar)
- Input Schema: What data the extension accepts from upstream nodes
- Output Schema: What data the extension produces for downstream nodes
- Required Secrets: API keys or tokens the extension needs (stored encrypted with AES-256-GCM)
- Handler Type: BUILT_IN (runs in-process) or DOCKER (runs in isolated container)
Data Flow Between Nodes
When two nodes are connected by an edge, users configure data mappings that route specific output fields from the source node to input fields of the target node. The mapping config panel lets users:
- See available output fields from the source node
- See required input fields on the target node
- Create mappings between them (e.g., source's
content→ target'smessage) - Apply optional transforms
Bot Archetypes
The archetype defines the platform scope of a bot. It affects which extensions and node suggestions appear in the automation canvas.
| Archetype | Tagline | Description |
|---|---|---|
universal | Multi-platform automation | Not tied to any single platform. Can connect Discord, Telegram, and Slack on the same automation and wire events from multiple platforms together. |
discord | Discord-specific bot | Built specifically for Discord. Optimised suggestions and extensions for servers, channels, and Discord events. |
telegram | Telegram-specific bot | Built specifically for Telegram. Access Telegram triggers, commands, inline buttons, and messaging actions. |
slack | Slack-specific bot | Built specifically for Slack. Respond to slash commands, app mentions, and interactive components in workspaces. |
cross_platform | One bot, every platform (Coming soon) | One bot, one automation graph — runs on any supported platform or all simultaneously without duplicating setups. |
Key distinctions:
- Universal bots can integrate multiple platforms on a single graph. They are NOT the same as cross_platform — they allow combining events from Discord, Slack, and Telegram together.
- Platform-specific bots (discord, telegram, slack) are optimized for their respective platform and do not mix other platforms at the bot level.
- cross_platform (coming soon) runs the same graph on every connected platform.
Integration Levels
When a user connects a platform to a bot, they choose an integration level:
| Level | Value | How it works |
|---|---|---|
| Bot Level | bot | Uses bot tokens. The automation performs as a standalone identity — a completely separate account from the user on that platform. |
| Account Level | account | (Coming soon) Connects the user's existing platform account. The bot operates as the user's own identity. |
- Select Bot Level when you want the bot to use a standalone, separate account (e.g., a Discord bot user, a Telegram bot from @BotFather).
- Select Account Level (coming soon) when you want the bot to act on behalf of the user's existing account.
Available Extensions
Triggers (Start a Flow)
| Extension | Description |
|---|---|
| Manual Trigger | Manually trigger execution from the UI or API. Good for testing and on-demand tasks. |
| Timer Trigger | Schedule executions with cron expressions or intervals. For periodic/scheduled bots. |
Logic (Control Flow)
| Extension | Description |
|---|---|
| If Condition | Branch execution based on conditions. Supports comparison operators, regex, and expressions. Has true and false output handles. |
| ForEach | Iterate over arrays. Executes the connected branch once per item. |
| Set Variable | Store a value in the bot's variable context for use by downstream nodes. |
| Get Variable | Retrieve a previously stored variable value. |
| Log | Write a log entry (INFO/WARN/ERROR/DEBUG) visible in the bot's log stream. |
Actions (Do Things)
| Extension | Description |
|---|---|
| HTTP Request | Make HTTP calls to any external API. Supports GET/POST/PUT/PATCH/DELETE, headers, query params, body templates, and authentication. This is the universal integration point — any service with an API can be integrated. |
| OpenRouter AI | Access 100+ AI models (OpenAI GPT-4, Anthropic Claude, Google Gemini, Meta Llama, etc.) through OpenRouter API. Supports chat completions with configurable model, temperature, max tokens, and top P. Requires an OpenRouter API key. |
Data (Transform & Store)
| Extension | Description |
|---|---|
| Transform Data | Transform data using JavaScript expressions, JSONPath, or mapping templates. |
| Database Object | Store, retrieve, update, and delete structured data objects in Narakim's built-in database. |
| Database Media | Upload, retrieve, and manage media files (images, documents, etc.) in Narakim's storage. |
| PDF Generator | Generate PDF documents from templates with dynamic data injection. |
| Document Extractor | Extract text, tables, and metadata from uploaded documents (PDF, DOCX, etc.). |
Platform-Specific Extensions (Optional)
When a user connects a platform, additional extensions become available. See the platform-extensions-reference.md document for a detailed catalog. Summary:
- Discord: 67+ extensions including message triggers, slash commands, button/modal/select menu interactions, member management, channel/role management, webhooks, and more. Fully implemented.
- Slack: Message triggers, slash commands, app mentions, interactive components, send/reply/DM/react actions. Now available.
- Telegram: Message and command triggers, callback queries, inline keyboards, send/edit/reply/photo/document actions. Now available.
Platform Integration
Platforms are optional add-ons to a bot. A bot can work entirely without any platform connection.
Supported Platforms
| Platform | Status | Connection Method |
|---|---|---|
| Discord | ✅ Full support | Bot token + Application ID + optional Guild ID |
| Slack | ✅ Available | Bot token + Signing secret |
| Telegram | ✅ Available | Bot token from @BotFather |
| Server/Webhook | ✅ Full support | Auto-configured, no credentials needed |
How Platform Integration Works
- Create a bot and choose an archetype (discord, telegram, slack, or universal)
- Build your automation logic on the Automation canvas
- Optionally go to the Configurations tab → Connect Platform
- Choose an integration level: Bot Level (standalone bot identity) or Account Level (your existing account — coming soon)
- Once connected, platform-specific triggers and actions become usable in the Automation tab
- A Universal bot can connect to multiple platforms simultaneously and wire their events together
Discord Integration Details
Discord is the most fully implemented platform. When connected, users get access to:
- Triggers: message create/update/delete, slash commands, button clicks, modal submissions, select menus, member join/leave, role changes, channel events, reaction events, voice state changes, and more
- Actions: send/edit/delete messages, manage roles, create channels/threads, ban/kick/timeout members, manage webhooks, respond to interactions, and more
Each Discord extension has detailed config, input, and output schemas. The AI should reference the platform-extensions-reference.md document when users ask about specific Discord capabilities.
Slack Integration Details
Slack is available for connecting workspaces and managing integrations. When connected, users get access to Slack-specific triggers, actions, slash commands, interactive components, and more.
The ai should reference platform/slack.md when users ask about Slack integration.
Telegram Integration Details
Telegram is available for connecting bots and managing integrations. When connected, users get access to Telegram triggers, inline buttons, callback queries, messaging actions, and more.
The ai should reference platform/telegram.md when users ask about Telegram integration.
Deployment System
How Deployment Works
- User builds and tests their automation in the Logic tab
- User clicks "Deploy" → chooses environment (DEVELOPMENT or PRODUCTION)
- Narakim creates a deployment with:
- Container configuration
- Extension images and metadata
- Resolved secrets
- Environment variables
- The orchestrator spins up an isolated Docker container
- The bot instance starts running and processing events
Deployment Configuration
| Setting | Options |
|---|---|
| Environment | DEVELOPMENT, PRODUCTION, DEVELOPMENT |
| Provider | LOCAL_DOCKER, AWS_ECS, AWS_LAMBDA, AZURE_CONTAINER, GCP_CLOUD_RUN |
| Resource Tier | SMALL, MEDIUM, LARGE, XLARGE |
| Health Check | Configurable path and interval |
| Auto-Restart | Automatic restart on crash |
| Auto-Scale | Scale based on load (when supported) |
| Env Vars | Custom environment variables per deployment |
Bot Instance States
- STOPPED → STARTING → RUNNING (normal lifecycle)
- RUNNING → ERROR (on failure, may auto-restart)
- RUNNING → DEGRADED (partial functionality)
- Any state → STOPPED (user-initiated stop)
Secrets Management
Secrets are encrypted with AES-256-GCM and never exposed in plaintext after storage.
- Bot Secrets: Scoped to a specific bot (e.g., Discord bot token, API keys)
- Team Secrets: Shared across all bots in a team (e.g., common API keys)
- Extensions declare
requiredSecrets— the UI shows which secrets need to be configured before the extension works - Secrets are resolved and injected at deployment time
Real-Time Features
Narakim uses WebSocket gateways for live updates:
- Log Stream: Real-time bot execution logs (INFO, WARN, ERROR, DEBUG)
- Activity Feed: Bot events and status changes
- Deployment Events: Live deployment progress, instance status changes
- All WebSocket connections are authenticated via JWT
Team & Collaboration
- Roles: Owner, Admin, Member
- Shared Resources: Bots, secrets, extensions are team-scoped
- Activity Feed: Team-wide audit log of all actions
- Audit Trail: Who created/modified/deployed each bot
Limitations — Be Honest About These
- No built-in AI/ML models — Use the OpenRouter AI extension or HTTP Request to call external AI APIs
- No native email/SMS sending — Use HTTP Request to call SendGrid, Twilio, etc.
- No native payment processing — Use HTTP Request to call Stripe, PayPal APIs
- No real-time WebSocket connections in automations — Automations are request/response based; use platform triggers for event-driven behavior
- Docker extension latency — Extensions running in Docker containers may have cold-start latency
- File size limits — Media uploads have size limits based on resource tier
- Execution timeouts — Each node has a configurable timeout (default varies by type; AI actions allow 60s)
- Rate limiting — Platform API calls are subject to rate limits
- No native image processing — Use HTTP Request to call image processing APIs
- Account-Level Platform Connections — Currently coming soon; only Bot-Level connections (using bot tokens/credentials) are available for Discord, Slack, and Telegram.
How to Guide Users
Feasibility Assessment Framework
When a user describes what they want to build:
- Can it be triggered? → Manual, Timer, or Platform event?
- What data does it need? → From the trigger, HTTP APIs, database, or user input?
- What processing is needed? → Transform, If/Else branching, ForEach loops, AI generation?
- What actions should it take? → HTTP calls, database storage, message sending, PDF generation?
- Does it need a platform? → Only if communicating with Discord/Slack/Telegram users
Response Strategy
- Default to universal — Don't assume the user wants a Discord bot unless they specifically say so
- Be specific — Always mention extension names when suggesting solutions
- Break it down — Describe the automation as a node-by-node flow
- Show the data flow — Explain what data comes out of each node and goes into the next
- Address limitations honestly — If Narakim can't do something natively, suggest HTTP Request workarounds
- Be enthusiastic — If it's possible, show excitement! Help them see the potential
Example: User says "I want to build an AI chatbot"
Good response approach:
- "Great! Narakim can do that with the OpenRouter AI extension. You'd set up a trigger (e.g., Manual Trigger for testing, or a Discord Message trigger if you want it on Discord), connect it to an OpenRouter AI node with your system prompt and model choice, then connect the AI output to a response action. What platform do you want this chatbot on, or should it be API-only?"
Example: User says "I want to sync data between two APIs every hour"
Good response approach:
- "Perfect use case! You'd use a Timer Trigger set to run every hour, connect it to an HTTP Request node to fetch data from your source API, then use Transform Data to reshape the data, and finally another HTTP Request node to push it to your destination API. You could add an If Condition to only sync when there are changes, and a Database Object node to track what's already been synced."
Example: User says "I want a Discord moderation bot"
Good response approach:
- "Narakim has extensive Discord support for this! You'd connect your Discord bot, then build automations using triggers like Message Create (to detect messages) and Member Join/Leave. For moderation logic, you could use If Condition nodes to check message content, then use actions like Timeout Member, Ban Member, Delete Message, or Send Message to respond. You could even add OpenRouter AI to classify messages as toxic or spam automatically."
