Skip to content

Tenant Harness

The Tenant Harness is the environment that enables the FDE to operate autonomously and independently for each tenant. Each tenant’s skills, memory, rules, and configuration are fully isolated, and the FDE operates within the tenant’s specific context.

When FDEs are simultaneously deployed to multiple client organizations, tenant isolation is a prerequisite for safe autonomous operation.

Skills auto-generated from Acme’s business patterns are never executed for Beta Inc. Conversely, Beta Inc’s memory never contaminates Acme’s reports.

app/orgs/
acme/ # Acme's autonomous operating environment
skills/ # Skills auto-generated from observations
rules/ # Tenant-specific behavioral constraints
memory/ # Knowledge auto-accumulated from workflow observations
config/ # Authentication and environment settings
scheduled-tasks.yaml # Scheduled task definitions
beta-inc/ # Beta Inc's autonomous operating environment
skills/
rules/
memory/
config/
scheduled-tasks.yaml

The initial harness structure is created by a 0ai engineer, but the contents are autonomously populated by the FDE.

When the FDE observes workflows and detects recurring patterns, it auto-generates skills and stores them in this directory.

app/orgs/acme/skills/
weekly-kpi-report/ # Auto-generated from observations
SKILL.md
scripts/
support-triage/ # Auto-generated from observations
SKILL.md

PMs do not need to write skills manually. The FDE generates skills and PMs review and approve them.

memory/ — Auto-Accumulated Business Knowledge

Section titled “memory/ — Auto-Accumulated Business Knowledge”

The FDE automatically memorizes business knowledge from Slack conversations, meeting transcripts, and shared documents.

app/orgs/acme/memory/
INDEX.md # Auto-generated memory index
company-overview.md # Organization structure, key products
kpi-definitions.md # KPI definitions and review cadence
stakeholders.md # Team members and roles

Memory is automatically added and updated, with periodic organization (Memory Distill) also running automatically.

rules/ — Tenant-Specific Behavioral Constraints

Section titled “rules/ — Tenant-Specific Behavioral Constraints”

Defines behavioral rules specific to the tenant: expression guidelines, prohibited items, escalation conditions, and more.

Initial rules are set by the 0ai engineer based on discussions with the PM. The FDE may later propose rule additions based on learned feedback.

config/ — Authentication and Environment Settings

Section titled “config/ — Authentication and Environment Settings”

Manages Slack workspace IDs, API authentication, service connection information, and more. Set by the 0ai engineer — PMs do not need to edit directly.

app/
_shared/ # Skills and rules shared across all tenants
skills/
rules/
orgs/
acme/ # Acme-specific skills and rules
beta-inc/ # Beta Inc-specific skills and rules
  • Shared: Generic capabilities like browser automation, data analysis, image generation
  • Tenant-specific: Tenant-specific KPI definitions, report formats, notification rules

The FDE combines both when executing tasks. It layers tenant-specific context on top of shared capabilities to produce output optimized for each organization.

Tenant harness independence is guaranteed at three levels:

LevelContentEffect
File isolationIndependent directories per tenantData physically cannot mix
Config isolationSlack channels, env, and auth are per-tenantNotifications and auth never cross
Memory isolationTenant memory is not accessible to other tenantsBusiness knowledge cannot leak

PMs do not need to be aware of harness internals. PM involvement occurs in these situations:

  • Skill approval: Reviewing the content and quality of auto-generated skills
  • Memory review: Periodically verifying that learned business knowledge is accurate
  • Rule adjustments: Requesting changes to expression rules or escalation conditions via the 0ai engineer
  • Scheduled task approval: Approving proposed scheduled task additions

All of these are completed through Slack notifications and responses. No direct file editing required.

  • Do not mix information from other tenants into a tenant harness
  • Credentials (API keys, tokens) are stored in the harness’s config/ and are never written directly into memory or documents
  • Harness change history is managed via git, making all changes traceable