Investor Portal
See Investors & Onboarding for the investor-facing side of this page — the white-labeled portal where investors sign in, invest, and manage their subscriptions once approved.
Purpose And Operating Boundary
Tahoe separates fund-manager login from investor login by design:
- Fund manager team signs in at Tahoe's own application domain (
/loginon the main Tahoe app, for exampletahoeapp.webdevelop.biz/login). - Investors sign in through a domain that belongs to the fund manager's organization, not Tahoe's domain. Tahoe issues a default
your-org.tahoe.appsubdomain for every organization and additionally lets the organization register its own custom domain (for exampleportal.newsilver.capital) so the investor-facing experience is fully white-labeled.
The Investor Portal → Domain tab is where a fund manager configures which domain investors use. It does not affect where the fund-manager team itself logs in.
Worked example: New Silver
| Actor | Login surface |
|---|---|
| New Silver manager team | tahoeapp.com/login (Tahoe's shared application domain) |
| New Silver investors | portal.newsilver.capital (New Silver's own custom domain, registered on the Domain tab) |
Information Shown
Domain Tab
| Field | Meaning |
|---|---|
| Organization subdomain | The organization's always-available Tahoe-hosted address, shown as your-org.tahoe.app. Investors can reach the portal here even before a custom domain is configured. |
| Investor (Custom domain) | An input for the organization's own domain or subdomain (for example portal.yourfund.com) that will serve the investor-facing login and dashboard once registered and verified. |
| Domain status | One of No custom domain, Pending DNS, Verified, or Active, reflecting DNS verification progress after registration. |
Other tabs on the same page (Branding, Contact & Links, Preview) configure the logo, colors, social links, and a live preview of the investor login and dashboard as they will render on the configured domain, but do not change routing.
Register A Custom Domain: Full Cycle
- Open Investor Portal → Domain.
- Enter the organization's domain or subdomain (for example
portal.newsilver.capital) in Custom domain. - Select Register Domain.
- Tahoe returns DNS instructions for the organization to complete outside Tahoe:
- a
CNAMErecord pointing the entered domain atcname.tahoe.app; - a
TXTrecord at_verify.<domain>proving domain ownership.
- a
- Status shows Pending DNS until the records are created and verified.
- Once verified, the domain becomes Active and investor login and the investor dashboard resolve on that domain instead of (or in addition to) the default
your-org.tahoe.appsubdomain.
At runtime, the investor-facing app resolves which organization's branding and configuration to apply from the requesting hostname (window.location.hostname), fetched via /organization/branding?domain={hostname}. This is the mechanism that lets portal.newsilver.capital and any other organization's custom domain each show that organization's own investor login and branding rather than a shared, generic one.
Verified in source, not yet in a live cycle
Domain registration (registerOrgDomain) and lookup (getOrgDomain) call /auth/organization/domain on the fund-manager API when mock data is disabled. The end-to-end path — DNS cutover, TXT verification, and an investor completing login on the resulting custom domain — was not exercised against a deployed environment for this document. Treat the full custom-domain cycle as Partial until that path is verified end to end.
Actors And Permissions
| Actor | Read Investor Portal domain | Register or update custom domain |
|---|---|---|
| Owner | Yes | Yes |
| Admin | Yes | Yes |
| Ops | Not Permitted | Not Permitted |
| Auditor | Not Permitted | Not permitted |
Failures And Recovery
| Condition | Result and recovery |
|---|---|
| Custom domain field left empty | Register Domain is disabled; enter a domain before submitting. |
| DNS records not yet created | Status remains Pending DNS; the investor-facing domain does not serve traffic until verification completes. |
Investor visits your-org.tahoe.app after a custom domain is active | Not verified in source whether the default subdomain continues to work in parallel or redirects; confirm before communicating this to an organization. |
| Fund-manager team member tries to log in at the investor domain, or vice versa | Manager and investor login are separate route trees (/login vs /investor/login) with separate auth guards; using the wrong domain does not authenticate the wrong actor type. |
Capability Status
| Capability | Maturity | Execution owner or location | Current boundary |
|---|---|---|---|
| Fund-manager team login at Tahoe's application domain | Live | Tahoe /login | Shared across all organizations; not organization-branded. |
Default your-org.tahoe.app investor subdomain | Live | This page and fund-manager API | Always available regardless of custom-domain status. |
| Register a custom investor-portal domain | Partial | This page and fund-manager API | DNS instructions are returned; live DNS cutover and verification were not exercised for this document. |
| Resolve organization branding by requesting hostname | Partial | Investor-portal SPA (useInvestorBranding) and fund-manager API | Source-verified mechanism; deployed parity across many live custom domains not verified. |
Owner Operating Checklist
Before registering a custom domain
- Confirm the organization controls DNS for the domain or subdomain being entered.
- Confirm the domain is not already registered to another Tahoe organization.
After registering
- Confirm Tahoe displays the returned
CNAMEandTXTinstructions. - Give the organization's DNS administrator both records; do not paraphrase or drop the
TXTverification record. - Recheck status until it reads Verified or Active before telling the organization investor login is ready on the new domain.
Communicating the split to an organization
- Tell the organization's team members to keep using Tahoe's application domain to log in (for example
tahoeapp.com/login). - Tell the organization's investors to use only the organization's registered domain (for example
portal.newsilver.capital), not Tahoe's own domain.
Technical Traceability
Tahoe Frontend
- Route names: src/router/routes.ts —
ROUTE_INVESTOR_PORTAL(/dashboard/investor-portal),ROUTE_INVESTOR_LOGIN(/investor/login),ROUTE_LOGIN(/login). - Investor Portal admin view: src/views/AdminInvestorPortalView.vue
- Domain, branding, and contact ViewModels: src/features/admin/view-models/useInvestorPortalAdminViewModel.ts
- Domain store: src/features/admin/stores/investorPortalStore.ts
- Domain and branding API adapter: src/features/investor-portal/data/investorPortalApi.ts
- Hostname-based branding resolution: src/features/investor-portal/composables/useInvestorBranding.ts
- Manager vs. investor auth-guard separation: src/features/auth/route-guards/resolveTahoeAuthRedirect.ts
Service Contracts
| Contract | Purpose |
|---|---|
GET /auth/organization/domain | Return the organization's current domain configuration and status. |
POST /auth/organization/domain | Register or update the organization's custom domain and return DNS instructions. |
GET /organization/branding?domain={hostname} | Resolve organization branding and configuration for the requesting hostname, used by the investor-facing app. |
Backend evidence for these contracts was not re-traced into the fund-manager API repository for this document; treat the endpoint paths above as sourced from the frontend adapter only, pending independent backend confirmation.
Revision History
| Version | Date | Change |
|---|---|---|
| 1.0 | 2026-09-11 | Initial source-backed description of the Investor Portal Domain tab and the fund-manager/investor login separation. |
| 1.1 | 2026-09-14 | Fixed "Organzation subdomain" typo to "Organization subdomain." Added cross-link to Investors & Onboarding for the investor-facing side of this page. Confirmed "New Silver" is an intentional real-client reference in these internal docs, kept as-is. |