One Method, Eight Interfaces: How Remy Apps Run Everywhere at Once A single backend method defined in Remy automatically projects onto eight interfaces—web, REST API, Discord, Telegram, MCP, cron, webhook, and email—without requiring any integration shims or per-interface rewrites. The platform handles routing, authentication, and serialization for every surface, allowing developers to define an application's logic once in a typed method and have it accessible everywhere. This architecture eliminates the traditional interface-first approach where each new surface requires separate code, configuration, and maintenance. One Method, Eight Interfaces: How Remy Apps Run Everywhere at Once A single backend method in Remy becomes a web endpoint, Discord bot, Telegram command, MCP tool, webhook, cron job, email handler, and REST API. At a Glance One method, eight interfaces: A single backend method in Remy automatically projects onto web, REST API, Discord, Telegram, MCP, cron, webhook, and email—no integration shims required. The method is the contract: Methods define typed inputs, outputs, and logic. The platform handles routing, auth, and serialization for every interface. Real example: A submitVendorRequest method powers a web form, a Discord slash command, a Telegram bot, an MCP tool for Claude Desktop, a Stripe webhook, a nightly cron job, an email handler, and a REST endpoint—all from the same 50 lines of TypeScript. Why it matters: You describe what the app does once. The platform makes it accessible everywhere. No per-interface rewrites, no API gateway configuration, no bot framework boilerplate. Built on MindStudio infrastructure: 200+ AI models, 1,000+ integrations, managed databases, auth, deployment—years of production substrate now powering Remy’s spec-driven architecture. Most full-stack apps are built interface-first. You write a web frontend, then bolt on an API, then add a Discord bot as a separate project with its own auth and database calls. Each interface is a new integration surface, a new maintenance burden, a new place for bugs to hide. Remy inverts this. You define methods—the application’s contract—and the platform projects them onto every interface automatically. One method becomes a web button, a Discord slash command, a Telegram bot action, an MCP tool, a webhook receiver, a cron job, an email handler, and a REST endpoint. Same logic, same auth, same database, eight surfaces. This is the most underrated architectural payoff of what Remy actually is /blog/what-is-openclaw-ai-agent : a product agent that compiles annotated markdown into a full-stack app. The spec describes methods. The platform makes them universally accessible. You never write integration code. What Does “One Method, Eight Interfaces” Actually Mean? A method in Remy is a backend function with a typed signature. It declares inputs, outputs, and logic. Here’s a simplified example: export async function submitVendorRequest input: { vendorName: string; requestDetails: string; urgency: 'low' | 'medium' | 'high' }, context: MethodContext : Promise<{ requestId: string; status: string } { // Validate input if input.vendorName || input.requestDetails { throw new Error 'Vendor name and request details are required' ; } // Insert into database const request = await context.db.vendorRequests.insert { vendorName: input.vendorName, requestDetails: input.requestDetails, urgency: input.urgency, status: 'pending', submittedAt: new Date , submittedBy: context.user?.id || 'anonymous' } ; // Notify the procurement team via email await context.integrations.sendEmail { to: 'procurement@company.com', subject: New ${input.urgency} priority vendor request , body: Vendor: ${input.vendorName}\n\nDetails: ${input.requestDetails} } ; return { requestId: request.id, status: 'submitted' }; } That’s it. Fifty lines of TypeScript. No routing config, no HTTP handlers, no bot command parsers, no webhook signature verification. The method is the contract. The platform does the rest. How the Same Method Powers Eight Interfaces Once submitVendorRequest is defined in the manifest, it’s automatically available on every interface Remy supports. Here’s what that looks like in practice: 1. Web Interface The web frontend can call the method directly from a React component: js import { useMethod } from '@mindstudio-ai/interface'; function VendorRequestForm { const submitRequest = useMethod 'submitVendorRequest' ; const handleSubmit = async formData = { const result = await submitRequest { vendorName: formData.vendor, requestDetails: formData.details, urgency: formData.urgency } ; console.log 'Request submitted:', result.requestId ; }; return