Cloudconnectors
connector-cloud is een architectuurplugin van OHarness, geen MCP. Cloud beheert de Composio-projectsleutel en de goedgekeurde configuratie van apps en tools. Clients gebruiken hun OHarness-login; de Gmail-OAuth-gegevens blijven bij Composio, gekoppeld aan de door de server geverifieerde OHarness-gebruikers-id. Er zijn geen nieuwe Supabase-tabellen nodig.
Configuratie
- Runtime-secret van de Cloud-website:
COMPOSIO_API_KEY. NooitNEXT_PUBLIC_en nooit in deconfig.json,plugins.json, browserbundel of modelcontext van de gebruiker. - Ingeschakelde apps worden afgeleid uit de Auth Configs in het Composio-project, niet uit een bestand. Een Auth Config met een toolbeperking is een ingeschakelde app en die beperking is de allowlist, dus een nieuwe integratie is een actie in het dashboard in plaats van een deploy. Het afleiden weigert liever dan dat het iets aanneemt: een configuratie die geen tools beperkt, wordt overgeslagen (Composio leest een ontbrekende beperking als elke tool van de toolkit), twee ingeschakelde configuraties voor één toolkit schakelen geen van beide in, en uitgeschakelde configuraties, onbruikbare id's of misvormde toolnamen laten die app vallen. De plafonds van 20 apps en 40 tools blijven gelijk. De set wordt één keer per proces bepaald, dus herstart Cloud na een wijziging in het dashboard.
- Cloud
website/connectors.jsonis nu optioneel en kan alleen inperken:{"disabled": ["slug"]}houdt een app achter zonder Composio aan te raken. Een bestand dat nogtoolkitsbevat, behoudt het oudere expliciete gedrag. De deployment kanOHARNESS_CONNECTORS_FILEin plaats daarvan naar een absoluut, gemount pad laten wijzen. Het staat bewust in gitignore, dus neem het alleen op of mount het alleen als je het gebruikt. - De bestaande Supabase-omgeving van de website valideert OHarness-logintokens.
- Client
cloud.json: optioneel{ "siteUrl": "http://localhost:4000" }voor lokale ontwikkeling; de standaard is het publieke Cloud-adres. Een andere Cloud-origin kan opnieuw inloggen vereisen.OHARNESS_SITE_URLis een alternatieve override. - Client
plugins.json: de standaardplugin heeft geen vermelding nodig. Uitzetten:{ "runtimePlugins": [{ "id": "connector-cloud", "enabled": false }] }.
Maak de Gmail-OAuth-Auth Config aan in het Composio-dashboard, voor hetzelfde project als de API-sleutel. Controleer de scopes en gebruik alleen-lezen Gmail-toegang voor leestaken; de allowlist voor uitvoering is geen vervanging voor OAuth-scopes met minimale rechten. De voorbeeldconfiguratie bevat placeholders, geen werkende inloggegevens.
Gebruik je OHarness_Cloud/dev.sh, zet de Cloud-variabelen dan op het website-proces (Next laadt website/.env.development.local). Het harness heeft de Composio-sleutel niet nodig. Laat het vóór het starten naar de lokale website wijzen, bijvoorbeeld OHARNESS_SITE_URL=http://localhost:4000 ./dev.sh up harness. up herstart geen draaiende processen; gebruik restart website harness nadat je je werk hebt opgeslagen. Een Cloud-wijziging op localhost zet de API niet live op de publieke site.
Verloop van het gesprek
- De agent roept
cloud_app_toolsaan om apps op te sommen of de exacte toolschema's/versie van een app te vinden. Dat kan al voordat er een app-account is gekoppeld. - Eerst draait het normale permissiebeleid van OHarness. Is de aanroep goedgekeurd maar niet gekoppeld, dan wacht de huidige tool en toont de Web-chat Connect / Cancel.
- Alleen de klik van de gebruiker op Connect vraagt een gehoste Composio-link aan. Cloud zet
user_idop basis van de gevalideerde login, nooit op basis van modelinvoer. - De UI opent de autorisatiepagina. De lokale broker pollt Cloud; Cloud controleert bij Composio de eigenaar van het account, de Auth Config, de toolkit en of die actief/niet uitgeschakeld is.
- Een geverifieerd succes laat de wachtende tool doorgaan in dezelfde agent-beurt. Die vindt het schema en roept daarna
cloud_app_executeaan via de normale permissiepoort. Er komt geen dubbele vraag aan de gebruiker en geen nieuwe autonome taak.
Een gratis account kan twee apps koppelen en gebruiken; elk betaald abonnement — ook Plus, persoonlijk of van een team, gelezen uit de ent-claim van het sessietoken — heeft geen limiet. De ruimte gaat naar de apps die als eerste zijn gekoppeld: een derde koppelen, of een tool draaien op een app voorbij de eerste twee (bijvoorbeeld na het verlopen van een abonnement), wordt geweigerd met 402 plan_required, wat het harness omzet in een melding die naar de prijspagina verwijst. Apps opsommen en een koppeling controleren zijn nooit beperkt. De site stelt het aantal in met OHARNESS_FREE_CONNECTOR_APPS; een zelfgehoste site zet OHARNESS_CONNECTORS_FREE=1 om de limiet voor elk ingelogd account op te heffen.
Wordt een eerder gekoppeld account ingetrokken, dan geeft execute vóór de uitvoering een expliciete weigering connection_required terug, waardoor ditzelfde verloop start. Time-outs, fouten van de aanbieder of onzekere uitvoeringsfouten worden nooit automatisch opnieuw uitgevoerd. De Web-pagina verversen speelt de status van openstaande kaarten opnieuw af zolang het proces leeft.
Veiligheid en grenzen van V1
- Slechts vier POST-endpoints voor native clients: catalog, status, link en execute. Autorisatielinks blijven in UI-antwoorden, buiten de modeluitvoer en de opslag van transcripties.
- Openstaande interacties zijn vastgepind op de geverifieerde gebruiker en de Cloud-origin. Wissel je van login, dan kan een oude autorisatietaak van een andere gebruiker niet verdergaan op een ander account.
- Metadata en uitvoering gebruiken dezelfde concrete toolversie. Als
latestna een herstart van de server anders wordt opgelost, zoek dan opnieuw in plaats van een verouderd schema uit te voeren. Gebruik gedateerde versies voor reproduceerbare deployments. - Annuleren, een agent-abort, een time-out van tien minuten en afsluiten stoppen de wachtende aanroep. Een geannuleerde taak draait een los voltooide OAuth-toestemming niet terug.
- Geen voortzetting na een herstart van het proces en geen opnieuw afspelen van achtergrondtaken. Start na een herstart een nieuwe beurt; een al voltooide Composio-koppeling blijft vindbaar.
- V1 gaat uit van één actief account per app/Auth Config/gebruiker. Meerdere actieve accounts falen gesloten tot een beheerder een keuze maakt. Geen gedeelde accounts en geen ACL-UI.
- Kaarten verschijnen op dit moment in de Web-chat (ook het Web-oppervlak van de desktop-app), niet in terminal- of headless-interfaces. Die hebben geen kaart-UI; gebruik Web voor de eerste koppeling, of zet deze plugin uit voor onbeheerde/headless runs.
- Elk proces heeft basale rate limiting. Productie moet gedeelde limieten aan de edge toevoegen, een audit- en bewaarbeleid hebben en OAuth-Auth Configs met passende scopes instellen.
Verificatie
npm run test:cloud-connectors dekt annulering in de broker, gelijktijdigheid, time-outs, geweigerde permissies en een echte agent die doorgaat na een gesimuleerde autorisatie. npm run test:composio van Cloud dekt eigendom, allowlist, versie, intrekking en het niet opnieuw proberen. node --conditions=oharness-source script/cloud-connector-ui-demo.ts start een geïsoleerde offline Web-demo; die raakt nooit echte Gmail aan. Live OAuth vraagt nog steeds om toestemming van de gebruiker in de browser.