Connect Sovyn to Manus
For Manus to move your app to Sovyn, you connect the two once. Manus calls such a connection an “MCP” or a “connector”. It takes about two minutes and needs no code.
Set up
Section titled “Set up”-
Create an access key in Sovyn
Sign in to Sovyn and open your account menu in the top right corner. Choose API keys, or go straight to the API key page.
Click Create API key, enter a name such as
Manus connectorand confirm with Create API key. Copy the new key with Copy key. It starts withsovyn_.Screenshot coming soonSovyn, API keys page: newly created key with the “Copy key” button (key blurred) -
Open the connector settings in Manus
In Manus, open Settings and then Connectors. Click Add connectors, switch to the Custom MCP tab and choose Add custom MCP server → Direct configuration.
Screenshot coming soonManus, Settings → Connectors → Custom MCP: “Add custom MCP server” button -
Fill in the fields
Field in Manus What to enter Server Name SovynTransport Type HTTPServer URL the address below Custom Header – name x-api-keyCustom Header – value your key from step 1 Server URL https://app.sovyn.eu/api/mcpMind the exact spelling of the header name:
x-api-key, lower case, with hyphens.Screenshot coming soonManus, completed “Direct configuration” form: Server Name Sovyn, transport HTTP, Server URL, header x-api-key (value blurred) -
Add the note (recommended)
Copy the following text into the Note field. It tells Manus how to work with Sovyn so the move runs through without back-and-forth.
Note Sovyn migrates vibe-coded apps (Manus, Lovable, Supabase, generic) ontoan EU stack: code migration (auto-merged into the default branch),EU provisioning, data cutover. Use this connector when the user wants tomove their app to Sovyn.Procedure: First read the resource sovyn://migration-guide. Then callsovyn_get_context (if there is exactly one team: use it without asking)and from then on strictly follow the next_action hint fromsovyn_get_status.Shared repository (most important rule):Sovyn writes to the GitHub repository itself — sovyn_migrate_code mergesthe codemod into the default branch via the GitHub API. Your workingcopy does not learn about that. So: before EVERY change, commit and push(including a dependency update or lockfile refresh), fetch first andrebase onto the default branch. Never force-push this branch — thatdeletes the migration commit, the repository falls back to itspre-migration state and the next deploy ships exactly that. A rejectednon-fast-forward push is the safeguard working, not an obstacle: pull,rebase, push again.Important:- The app code must be on GitHub — if it is not, push it there first.- Installing the Sovyn GitHub app (sovyn_github_install_link) is abrowser click only the user can make: hand over the link, wait forconfirmation.- Poll sovyn_get_status every 15-30 seconds; analysis/migration/provisioning each take minutes — do not give up early.- The data cutover depends on the stack (next_action names the tool):- Manus (call_sovyn_migrate_data): pass the database credentials as amysql://user:pass@host:port/db URL; if unknown, ask the user. If theapp uses files (services.storage), they are copied to the EU bucketin the same step — requires BUILT_IN_FORGE_API_URL/KEY to be set(read them from the Manus app environment, never invent them).- Lovable/Supabase (call_sovyn_restore_backup): no connection string —instead backupUrl, a public https:// URL of the database export(pg_dump, optionally .zip). If the target already has data, the jobfails with DOWN_MIGRATE_TARGET_NOT_EMPTY → call again with reset=true.- On confirm_deploy_plan (generic apps): confirm the fields listed inplanNeedsReview via sovyn_confirm_deploy_plan (confirm what is certainyourself, ask the user about the rest), then provision.- On inspect_log_and_retry: read logTail/error, fix what can be fixed,repeat the step. On unsupported_app or missing_target_db: stop andexplain the problem to the user.- After next_action=done: report the deploy URL. If the app has loginand data was migrated, drive the user onboarding — migrated userscannot sign up again, they take over their account through a one-timeclaim link. Call sovyn_list_claimable_users; on case=single callsovyn_issue_claim_links right away (no confirmation, the link isemailed automatically), on case=multiple confirm the selection withthe user. Hand every link to the person it belongs to. -
Save
Click Save. Manus checks the connection and then lists the Sovyn tools, for example
sovyn_get_contextandsovyn_get_status. You’re all set.Screenshot coming soonManus, connector “Sovyn” connected, list of Sovyn tools visible
Start the move
Section titled “Start the move”Open your app’s project in Manus and write in the chat:
Migrate my app to Sovyn.From here, Manus and Sovyn work together. Each step takes a few minutes, and Manus keeps you posted. They need you at two points:
- Allow GitHub access: The first time, Manus gives you a link to the Sovyn GitHub app. Open it, confirm the installation and tell Manus you’re done. If your app isn’t on GitHub yet, Manus takes care of that first.
- Take over your data: If Manus doesn’t know your database credentials, it asks you for them.
At the end, Manus tells you the address where your app now runs on Sovyn. If your app has a login, your users receive a personal link to take over their existing account. Nobody has to sign up again.
Important: don’t overwrite the move
Section titled “Important: don’t overwrite the move”Sovyn saves the migrated code directly in your GitHub project. If Manus later suggests to “overwrite” GitHub, to “force-push” or to “sync the sandbox to GitHub”, decline. That would undo the move.
If something doesn’t work
Section titled “If something doesn’t work”Manus shows an error or “Unauthorized” when saving
Section titled “Manus shows an error or “Unauthorized” when saving”Check the Server URL and the header name x-api-key for typos, and make sure
the key was pasted completely (it starts with sovyn_). A key is valid for
one year. If it expired or was revoked, create a new one and replace it in
Manus.
Manus doesn’t use Sovyn in the chat
Section titled “Manus doesn’t use Sovyn in the chat”Check that the “Sovyn” connector is switched on in Manus, and mention Sovyn explicitly in your message, for example “Migrate my app with the Sovyn connector”.
It has been stuck for a long time
Section titled “It has been stuck for a long time”Analysis, migration and setup each take a few minutes. Ask Manus for the status (“What’s the status at Sovyn?”). Still stuck? Write to us at hallo@sovyn.eu.