TeamHub turns every Nextcloud Team into a real workspace — with messages, an activity feed, configurable widgets, and one-click access to the team's Talk chat, Files folder, Calendar and Deck board.
Nextcloud Teams (formerly Circles) is the membership backbone. TeamHub is the workspace experience built on top of it. The two are complementary, not competing.
Nextcloud Teams answers the question "who is in this group?" — it provides the list of people that any other Nextcloud app can share with. It lives mainly in the Contacts app.
TeamHub answers the question "where does this team work?" — it gives every team a dedicated home in the top navigation, with messages, activity, widgets and direct links into the team's shared Talk room, Files folder, Calendar and Deck board.
Ships with Nextcloud · Used as the group primitive across the Hub
Installs alongside · Wraps Teams + Talk + Files + Calendar + Deck
TeamHub does not reinvent chat, files, calendar or task management — it composes them into one team-scoped workspace. Each integration is auto-detected; missing apps simply have their tab and widget hidden.
Tab bar · Message stream · Activity feed · Widget grid · Browse Teams · Admin settings · Integration API
TeamHub provisions per-team resources in each installed app and surfaces them in the team workspace. If an app is missing, its tab and widget are hidden automatically.
The group primitive — who belongs to which team, with what role, and which other apps they can share with. TeamHub reads and writes through this layer for every membership operation; it never invents its own user-group model.
Nextcloud 32 – 34 · PHP 8.1 – 8.4 · PostgreSQL or MySQL/MariaDB · Self-hosted, AGPL-3.0
Each card opens to show how the feature works, what it integrates with, and how it differs from the underlying Nextcloud app on its own.
Each team gets its own home in TeamHub, with tabs linking directly to its shared Talk, Files, Calendar and Deck.
Open a team in TeamHub and you land on its home view. A tab bar runs across the top — Home, Chat, Files, Calendar, Deck, plus any custom links the team admin has added. Each tab opens that app already scoped to the team's shared resource. No more hunting for "which folder is the team's", no more guessing which Talk room is the right one.
The Talk room, Files folder, Calendar and Deck board are created automatically when the team is created. No manual setup.
If Talk, Calendar or Deck is not installed, the corresponding tab simply does not appear. Nothing to configure.
Each user can drag tabs into their preferred order. The order is saved per user, per team.
Team admins can add any URL as a tab — internal apps, external dashboards, anything.
A drag-and-drop grid of widgets — calendar, tasks, files, members, activity, pages — saved per user per team.
The team home view is a configurable grid of widgets. Each widget pulls live data from the team's shared apps. The widget grid is fully drag-and-drop in edit mode — every widget can be moved, resized, or removed, and the message stream itself is resizable. Layout is persisted per user per team, with a per-user default that applies to any team they have not yet customised.
Next calendar entries with a "Schedule meeting" action that creates both a Talk call and a calendar event in one step.
Open cards from the team's Deck board, sorted by due date. Add new tasks straight from the widget.
Two separate widgets: most recently modified files in the team folder, and files starred by the user inside it.
Avatar stack of all team members with member count. Moderators can invite from the widget header.
The 5 most recent events across all team resources, with a "More" link to the full 30-day activity feed.
Wiki pages from the team's IntraVox space. Auto-hides if IntraVox is not installed.
Threaded, editable, attachment-friendly messages built for things you want to find again later — not for ephemeral chat.
The message stream sits in the centre of every team's home view. Unlike Talk — which is optimised for live conversation that scrolls away — TeamHub messages are designed to be persistent reference material: announcements, polls, decisions, links to documents that the whole team should see once and remember.
Every message has its own threaded comment section, so discussion stays grouped with the announcement it relates to.
Authors can edit their own messages after posting — useful for fixing typos in pinned announcements.
Special message types for collecting team input without leaving the home view.
Attach files from the team's Files folder. Pasted URLs render as link previews.
Members get a Nextcloud notification when a new message is posted. Comments don't notify, to avoid noise.
The team list shows an unread badge for any team with messages you haven't seen.
One timeline showing file changes, calendar events, Deck card updates and member joins — grouped by day.
The activity feed answers the question every team member asks on Monday morning: "what happened while I was away?". It pulls from Nextcloud's activity stream and filters it to the resources scoped to the team — so file uploads in the team folder appear, but file uploads anywhere else on the server do not.
The compact Activity widget sits on the home view and shows the 5 most recent events. The full Activity feed view opens as a full-canvas page showing 30 days of history grouped by day.
Uploads, edits, renames, deletes inside the team's shared folder.
Event creations and updates on the team calendar.
Card creations, description and assignment changes, stack changes on the team board.
Calls and notable events in the team's shared Talk room.
Joins, leaves, role changes — visible to all members.
New TeamHub messages and edits to existing ones.
oc_activity table directly with team-scoped filters: file activity is matched on team folder ID, Deck activity on board and card IDs, Calendar on calendar ID, Talk on numeric room ID. PostgreSQL and MySQL/MariaDB are both supported.
Create teams, invite by user / group / email / federated account, manage roles, transfer ownership, upload a team logo.
The Manage Team panel covers everything a team owner or moderator needs without leaving TeamHub. Behind the scenes every operation goes through the Nextcloud Teams API — the team you create here is the same team that shows up in the Contacts app, in Files sharing, in Talk's Circles picker, and everywhere else.
Name, description, visibility (open / invite-only / protected / request-to-join), and per-team app enable/disable.
Local users, groups, email addresses, or federated accounts — each invite type can be globally enabled or disabled by admins.
Promote members to moderator or admin. Owners can transfer ownership to any existing team member.
Upload a JPG, PNG, GIF or WebP. Shown on the team home view and in the browse-teams directory.
For request-to-join teams, moderators see pending requests with one-click approve/reject.
Owners can transfer ownership or delete the team. Deletes properly clean up Talk room, Files folder, Calendar and Deck board.
A directory view of every visible team — search by name or description, see member counts, request access or join directly.
Discoverability is one of the things the stock Nextcloud Teams UI does not really solve. TeamHub adds a dedicated Browse Teams view that lists every team with the visible flag set, with grid and list display modes, search, and the team logos rendered inline. From there a user can request to join (for closed teams) or join directly (for open teams).
Toggle between visual grid (with logos) and compact list.
Filter by name or description as you type.
For open teams, join directly. For closed teams, send a join request to the moderators.
Each card shows whether you're a member, have a pending request, or can join.
Add any URL as a tab. Disable apps you don't want for a specific team. Different teams, different setups.
Not every team needs every app, and many teams have external tools (BI dashboards, marketing sites, internal wikis) that they want one click away. TeamHub addresses both:
Team admins can add any URL as a tab with a custom label and icon. Validated to reject javascript: and other unsafe schemes.
If a team doesn't need Deck or Calendar, switch them off. The tab disappears for everyone in the team.
Each user drags tabs into their own preferred order. Saved per user per team.
Copy a direct deep link to any team. Members land straight on the team home view.
Restrict who can create teams, customise the creation wizard, control invitation types, audit and repair team integrity.
For larger Nextcloud installations, just letting every user create teams freely is rarely the right policy. TeamHub's admin settings panel — which lives inside Nextcloud's standard admin area, not in a separate portal — gives IT admins the controls they need to roll TeamHub out across an organisation.
Limit team creation to specific Nextcloud groups (e.g. "managers", "department-heads").
Customise the welcome text shown at the top of the team creation dialog — naming conventions, governance reminders, etc.
Toggle which invitation methods are available to team admins: local users, groups, email addresses, federated accounts.
Paginated, searchable list of every team on the instance. Set owner, delete with full resource cleanup.
Detect and repair Circles membership cache mismatches that would otherwise hide a team from share pickers.
Everything lives in your Nextcloud admin panel. No separate logins, no SaaS dashboard.
Other apps can register sidebar widgets or full tab iframes into the team workspace, with one PHP call from their bootstrap.
TeamHub is built to be extended. Any other Nextcloud app installed on the same instance can register one of two integration types — and team admins decide per team whether to enable them.
Implement a single PHP interface returning items and optional action buttons. Your widget appears in the home view's widget grid.
Provide a URL — your app opens in a sandboxed iframe as a tab in the team's tab bar, scoped to the current team.
Registration and widget calls happen inside the same PHP process via DI. No loopback, no credentials forwarded.
Team admins enable each integration per team, so different teams can have different widgets and tabs.
ITeamHubWidget interface, registration patterns, and example code. The companion app IntraVox uses this same API for its Pages widget.
TeamHub looks at what's installed on your Nextcloud and turns on the matching tabs and widgets. Missing apps are simply hidden — no errors, no setup screens.
If you've ever wished a Nextcloud team felt more like a real workspace and less like a sharing target, TeamHub is for you.
Cross-functional groups that need shared tasks, files, a recurring meeting, and a place to post status updates that don't disappear into a chat scroll.
Long-running organisational units (Marketing, Engineering, HR) that want a stable home page with their resources, announcements and team-wide activity.
Smaller groups where governance matters — closed membership, request-to-join, polls for decisions, and a clear audit trail in the activity feed.
Federated teams across multiple Nextcloud servers using Nextcloud Teams' federation, with TeamHub providing the workspace UI on top.
Any Nextcloud app installed on the same instance can register integrations into TeamHub. Two integration types are supported and an app can register one or both:
// 1. Register in Application::boot() $integrationService->registerIntegration( appId: 'myapp', integrationType: 'widget', title: 'My App Widget', phpClass: MyWidget::class, calledInProcess: true, ); // 2. Implement ITeamHubWidget class MyWidget implements ITeamHubWidget { public function getWidgetData( string $teamId, string $userId ): array { return [ ‘items’ => $this->getItems($teamId), ‘actions’ => $this->getActions($teamId), ]; } }
Free, open source, and self-hosted. Runs entirely on your own Nextcloud server, on top of the apps you already trust.
Install from source · Nextcloud 32 – 34 · AGPL-3.0