Skip to main content

Nextcloud integrations

Path: Admin → Nextcloud integrations.

This panel controls which of the 11 Nextcloud integrations are available, at three levels: org-wide default, per-group override, and ultimately what each user sees.

Three-layer model​

┌───────────────────────────────────┐
│ 1. Org default │ Tick boxes — what's on for the whole org
├───────────────────────────────────┤
│ 2. Per-group disable list │ Specific groups can DISABLE org-on tools
├───────────────────────────────────┤
│ 3. Resolved per user │ User sees a tool if AT LEAST ONE of
│ │ their groups still allows it
└───────────────────────────────────┘

The rule for layer 3 is enable wins — if a user is in two groups, one disabling Mail and one allowing Mail, the user gets Mail. Disabling for everyone means disabling in every group the user belongs to.

Tab 1 — Org default​

A grid of the 11 integrations with on/off toggles:

IntegrationDefault
Files & WebDAV✅
Mail✅
Calendar✅
Contacts✅
Deck✅
Talk✅
Notes✅
Tasks✅
Activity✅
Notifications✅
User Status✅

Saving here sets the org's enabledIntegrations array. This becomes the default for users unless overridden by their groups.

Tab 2 — Per-group overrides​

A table with one row per group (NC-synced + Bee Flow-native). For each group, a multi-select of integrations to disable for its members.

Examples:

GroupDisabled integrations
internsTalk, Mail
finance(none)
engineering(none — they get everything)

The UI shows a count of affected users next to each group, so you can see the blast radius before saving.

Walkthrough — disable Mail for interns​

  1. Go to Admin → NC integrations → Per-group.
  2. Find the interns group row.
  3. In the multi-select, add Mail.
  4. Save.

Effect: every interns member loses access to nextcloud_mail_* tools — even if they're also in another group. Wait — that's wrong. Enable wins. If an intern is also in engineering, and engineering doesn't disable Mail, they keep it. To truly remove Mail, disable it everywhere they're a member.

In practice, design groups so users belong to exactly one "feature tier" group. The intuitive behaviour ("they're an intern, they shouldn't have Mail") works when interns are only in interns — and you separately decide whether to also disable Mail in any group they happen to also be in.

Edge cases​

SituationBehaviour
User belongs to no groupsOrg default applies.
Org has integration disabledAll groups inherit; per-group overrides become moot for that integration.
User loses all groupsOrg default applies.
Group is deletedIts disable list disappears; users may regain access.

Per-tool exceptions​

If you need finer granularity than per-integration (e.g. "Sales can read Mail but not draft / send"), do it at the agent level: build an agent with nextcloud_mail_search + nextcloud_mail_read enabled but not nextcloud_mail_compose / _send. Then share that agent with the Sales group.

Lock per-user override​

By default, individual users can re-enable disabled integrations at the user level (Settings → Account → Integrations). To prevent this, toggle Lock user-level overrides in the Org default tab. Useful for compliance.

Source of truth​

The settings live in Postgres on the org row (enabledIntegrations array) and on each group row (disabled_integrations array). The runtime resolution happens in server/core/integrationTools.js at every chat turn — no server restart needed.