Configuratie

De accountdienst hoort bij OHarness Cloud. De client kent alleen de publieke origin, niet het Supabase-project of de API-sleutel van het Composio-project.

LocatieVerantwoordelijkheid
~/.oharness/config.jsonAlgemene runtimevoorkeuren: modellen, permissies, logging, synchronisatie
~/.oharness/cloud.jsonOptioneel publiek Cloud-adres: { "siteUrl": "https://oharness.ai" }
~/.oharness/plugins.json{ "runtimePlugins": [...] }; optioneel plugins voor declaratieve bundels
~/.oharness/mcp.json{ "mcpServers": { ... } }; wijzigingen aan connectors via Web worden hier geschreven
Omgeving/secrets van de Cloud-deploymentSupabase-configuratie en servicesleutels die het platform beheert
Credential-opslagInloggegevens van de gebruiker; niet in een van de configuratiebestanden hierboven

OHARNESS_HOME verplaatst alle vier de clientbestanden. De officiële Cloud-origin is de standaard; zelfgehoste of ontwikkeloverrides gebruiken OHARNESS_SITE_URL, dan cloud.json, dan de meegeleverde publieke origin. HTTP is alleen toegestaan voor ontwikkeling via loopback. Configuratie in een repository kan de Cloud-origin niet kiezen en geen code van runtime-plugins laden. Programmatisch Harness.create({ config, runtimePlugins }) ondersteunt nog steeds expliciet meegegeven configuraties.

Geheugen

Blijvende notities stel je in onder memory in config.json (of in de oharness.config.json van een project): limieten, terugzoeken per bericht en automatische extractie. Projectnotities staan als Markdown in <project>/MEMORY/; gebruikersnotities over projecten heen staan in ~/.oharness/memory/user/. Toestemming voor synchronisatie en machinelokale indexen blijven in de gebruikersmap. Een projectconfiguratie mag het terugzoeken afstemmen of extractie uitzetten, maar alleen de eigen configuratie van de gebruiker kan extractie aanzetten, omdat die het modeltegoed van de gebruiker verbruikt. Geheugen noemt elke instelling.

Artefacten

Een sessie in een geregistreerd project bewaart elk artefact in <project>/ARTIFACTS/: de nieuwste revisie als gewoon bestand (ARTIFACTS/blue-field.html), de revisies die het verving in ARTIFACTS/.versions/<name>/v<N>.<ext>. Een sessie kan meerdere artefacten maken, elk als eigen bestand; dezelfde naam uit een andere sessie krijgt een achtervoegsel (blue-field-2.html). Bewerk je het bovenste bestand in een editor, dan verandert wat het paneel toont. ~/.oharness/storage/artifact/<session>.jsonl blijft de index — welke sessie wat maakte, en de versie- en synchronisatievelden van elke revisie — zonder de inhoud. Een sessie verwijderen haalt de index weg en laat de bestanden in het project staan. Sessies buiten een geregistreerd project, en rasterafbeeldingen, houden hun inhoud zoals voorheen in de index. Inhoud die hiervoor inline is vastgelegd, verhuist naar het project zodra de sessie opnieuw wordt geopend.

Synchronisatie

De zelfgehoste bestemming en de sessiecredential horen alleen in de config.json van de gebruiker:

{
  "sync": {
    "url": "https://sync.example.com",
    "token": "opaque-session-token",
    "enabled": true
  }
}

De huidige volgorde is: sync.url van de gebruiker, dan OHARNESS_SYNC_URL, dan de ingebouwde officiële bestemming. Configuratie in een repository kan de URL, het token of het team niet instellen, want dan zou een gekloonde repository transcripties kunnen omleiden; ze mag synchronisatie alleen uitzetten of uitsluitingen toevoegen. Herstart OHarness nadat je de bestemming hebt gewijzigd. Zie Je eigen synchronisatieserver draaien om de meegeleverde dienst uit te rollen en Synchronisatieprotocol om een compatibele te implementeren.

Compatibele migratie

Bestaande secties in config.json worden alleen als terugval gelezen zolang hun aparte bestand ontbreekt. Een bestaand apart bestand is leidend, ook een lege pluginlijst of een lege MCP-map. Het oude account.siteUrl wordt geaccepteerd; oude Supabase-velden gebruikt de client niet meer.

npm run config:migrate             # Preview filenames only; no secrets printed
npm run config:migrate -- --apply  # Back up, split, then clean the old sections

De migratie laat niet-gerelateerde voorkeuren intact en overschrijft geen bestaande opgesplitste bestanden. Ze bewaart een privéback-up config.before-split.<id>.json en schrijft de algemene configuratie als laatste. Bestanden worden atomair vervangen met modus 0600. Bewerk de configuratie niet tegelijk met de migratie en draai niet meerdere migratieprocessen. De back-up kan oude credentials bevatten: houd hem privé en verwijder hem zelf na controle. Migratie wijzigt nooit inloggegevens en autoriseert nooit apps.

Accounttransport

Inloggen via de browser gebruikt nog steeds Cloud /auth/desktop en /api/desktop/exchange. Vernieuwen en de OTP-terugval in de terminal gebruiken nu /api/desktop/auth/refresh, /otp en /verify. Werk Cloud bij voordat je een bijgewerkte client herstart. Een oudere Cloud geeft een expliciete fout; de client valt niet terug op directe Supabase-aanroepen.

Cloud gebruikt het ingestelde auth-project, valideert invoer, begrenst verzoeken en responsgroottes, en geeft alleen sessievelden terug. Tokens worden nooit gelogd of in fouten opgenomen. Verzoeken worden niet automatisch opnieuw geprobeerd; responses zijn no-store. Nieuw verkregen credentials leggen hun Cloud-origin vast; die wijzigen vereist opnieuw inloggen vóór het vernieuwen. Oude credentials krijgen deze origin bij de eerste geslaagde vernieuwing tegen het huidige vertrouwde Cloud-adres.

De rate limit van het Cloud-endpoint geldt per proces. Productiedeployments zouden daarnaast een gedeelde rate limit aan de edge moeten afdwingen. Supabase-instellingen van de website blijven in het Cloud-project; voor deze migratie zijn geen wijzigingen in het databaseschema nodig.

De gehoste cloudconnector houdt de Composio-sleutel en de allowlist van apps in Cloud. De ingebouwde runtime-plugin connector-cloud toont autorisatiekaarten in de Web-chat en hervat de wachtende tool na een geverifieerde koppeling. plugins.json regelt de pluginschakelaar; het bevat geen platformcredentials.