* feat: add initial project structure and documentation - Introduced the GNU General Public License (GPL) v3 in LICENSE file. - Added MCP configuration in .claude/mcp.json for server integration. - Created architecture documentation in docs/ARCHITECTURE.md outlining the platform's design and components. - Defined MVP specifications in docs/MVP.md for the Telegram-based Agent Assistant. - Established API reference for team management in docs/teams-api-reference.md. - Set up basic HTML structure in public/index.html and added logo image in public/logo.png. * feat: add initial project documentation and HTML structure - Introduced CODE_OF_CONDUCT.md to establish community guidelines and standards for behavior. - Created CONTRIBUTING.md to outline contribution process, development setup, and project conventions. - Added SECURITY.md to define the security policy, supported versions, and reporting procedures for vulnerabilities. - Established basic HTML structure in index.html for the application interface. * chore: remove hello-python skill files - Deleted skill.json and skill.py files for the Hello Python example runtime skill, as they are no longer needed in the project. * feat: port tinyhuman agent runtime from ZeroClaw into Tauri backend Port daemon supervisor, health registry, security (policy, secrets, audit, pairing), agent traits, and config modules from ZeroClaw (MIT) into a new tinyhuman/ module under src-tauri/src/. The daemon auto-starts on desktop and shuts down gracefully on app exit via CancellationToken. - health: global HealthRegistry with component tracking and JSON snapshots - security/policy: SecurityPolicy with command validation, risk levels, rate limiting - security/secrets: ChaCha20-Poly1305 SecretStore with legacy XOR migration - security/audit: AuditLogger with JSON-line events and log rotation - security/pairing: PairingGuard with brute-force protection and SHA-256 hashing - security/traits: Sandbox trait + NoopSandbox - config: minimal DaemonConfig with autonomy, reliability, secrets, audit sub-configs - daemon: supervisor with health state writer emitting Tauri events - agent/traits: Provider, Tool, Memory, Observer, RuntimeAdapter traits + Noop impls - commands/tinyhuman: Tauri commands for health, security policy, encrypt/decrypt - 185 inline unit tests across all modules - README updated with custom inference/tunneling/memory positioning Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * feat: update README to reflect AlphaHuman Mk1 branding and enhanced description - Changed project title to "AlphaHuman Mk1" for clarity. - Revised project description to emphasize user-friendly AI capabilities and the use of the Neocortex Mk1 model. - Removed outdated sections on custom inference, tunneling, and memory, streamlining the content for better readability. * update readme * Port zeroclaw runtime into tinyhuman * Replace CLI mentions with UI language * Split gateway module into smaller units * Split channels and config schema modules * Fix tinyhuman build, tests, and tunnel integration * feat(tinyhuman): add missing modules and ui-friendly services * refactor: rename tinyhuman to alphahuman * chore: remove bottom text from Welcome component * feat(settings): add tauri command console * feat(daemon): enhance daemon mode handling and integrate rustls with ring feature * feat(settings): implement comprehensive configuration management in TauriCommandsPanel * refactor(TauriCommandsPanel): streamline error handling and enhance async function usage * feat(settings): add skill management functionality to TauriCommandsPanel * style(TauriCommandsPanel): update input styles for improved readability and user experience * feat(settings): add Skills and Agent Chat panels with navigation and integration management * feat(settings): implement browser access management in SkillsPanel and enhance AgentChatPanel with local storage functionality --------- Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
9.5 KiB
AlphaHuman Teams API Reference
Complete reference for all teams-related API endpoints in the AlphaHuman platform.
Base URL: https://api.alphahuman.xyz
Authentication: Bearer JWT token required for all endpoints
Content-Type: application/json
Core Team Management
1. Create Team
POST /teams
Creates a new team with optional encryption.
Request Body:
{ "name": "string (required)", "magicWord": "string (optional)" }
Response Schema:
{
"id": "string",
"name": "string",
"slug": "string",
"magicWord": "string | null",
"createdBy": "string",
"isPersonal": "boolean",
"subscription": {
"hasActiveSubscription": "boolean",
"plan": "FREE|BASIC|PRO",
"planExpiry": "date-time | null",
"stripeCustomerId": "string | null"
},
"usage": {
"weeklyBudgetUsd": "number",
"spentThisWeekUsd": "number",
"weekStartDate": "date-time"
},
"inviteCode": "string | null",
"maxMembers": "number",
"createdAt": "date-time",
"updatedAt": "date-time"
}
Status Codes:
200- Team created successfully401- Unauthorized
2. List Teams
GET /teams
Retrieves all teams the authenticated user belongs to.
Response Schema:
{
"success": true,
"data": [
{
"team": {
"id": "string",
"name": "string",
"slug": "string",
"isPersonal": "boolean",
"subscription": { "hasActiveSubscription": "boolean", "plan": "FREE|BASIC|PRO" }
},
"role": "admin|billing_manager|member"
}
]
}
Status Codes:
200- Success401- Unauthorized
3. Get Team Details
GET /teams/{teamId}
Retrieves detailed information for a specific team.
Parameters:
teamId(path, required) - Team identifier
Response Schema:
{
"id": "string",
"name": "string",
"slug": "string",
"magicWord": "string | null",
"createdBy": "string",
"isPersonal": "boolean",
"subscription": {
"hasActiveSubscription": "boolean",
"plan": "FREE|BASIC|PRO",
"planExpiry": "date-time | null",
"stripeCustomerId": "string | null"
},
"usage": {
"weeklyBudgetUsd": "number",
"spentThisWeekUsd": "number",
"weekStartDate": "date-time"
},
"inviteCode": "string | null",
"maxMembers": "number",
"createdAt": "date-time",
"updatedAt": "date-time"
}
Status Codes:
200- Success403- Not a member of the team404- Team not found
4. Update Team Settings
PUT /teams/{teamId}
Updates team settings. Admin only.
Parameters:
teamId(path, required) - Team identifier
Request Body:
{ "name": "string (optional)", "maxMembers": "number (optional)" }
Status Codes:
200- Team updated successfully403- Only admins can update team settings
5. Delete Team
DELETE /teams/{teamId}
Deletes a team. Admin only, non-personal teams only.
Parameters:
teamId(path, required) - Team identifier
Status Codes:
200- Team deleted successfully400- Cannot delete a personal team403- Only admins can delete a team
6. Switch Active Team
POST /teams/{teamId}/switch
Changes the user's active team.
Parameters:
teamId(path, required) - Team identifier
Status Codes:
200- Successfully switched active team403- Not a member of the specified team
Team Member Management
7. List Team Members
GET /teams/{teamId}/members
Lists all members of a team.
Parameters:
teamId(path, required) - Team identifier
Response Schema:
{
"success": true,
"data": [{ "user": "string", "role": "admin|billing_manager|member", "joinedAt": "date-time" }]
}
Status Codes:
200- Success403- Not a member of this team
8. Remove Team Member
DELETE /teams/{teamId}/members/{userId}
Removes a member from the team. Admin only.
Parameters:
teamId(path, required) - Team identifieruserId(path, required) - User identifier to remove
Status Codes:
200- Member removed403- Only admins can remove members
9. Change Member Role
PUT /teams/{teamId}/members/{userId}/role
Changes a member's role within the team. Admin only.
Parameters:
teamId(path, required) - Team identifieruserId(path, required) - User identifier
Request Body:
{ "role": "admin|billing_manager|member" }
Status Codes:
200- Role updated403- Only admins can change member roles
10. Leave Team
POST /teams/{teamId}/leave
Allows a user to leave a team.
Parameters:
teamId(path, required) - Team identifier
Status Codes:
200- Successfully left the team400- Cannot leave as the only admin
Team Invite Management
11. Create Team Invite
POST /teams/{teamId}/invites
Creates a new invite code for the team.
Parameters:
teamId(path, required) - Team identifier
Request Body (Optional):
{ "maxUses": "number (default: 1)", "expiresInDays": "number (default: 7)" }
Response Schema:
{
"success": true,
"data": { "code": "string (e.g., T-1A2B3C4D5E6F)", "expiresAt": "date-time", "maxUses": "number" }
}
Status Codes:
200- Invite created successfully403- Not a team member
12. List Team Invites
GET /teams/{teamId}/invites
Lists all invites for a team.
Parameters:
teamId(path, required) - Team identifier
Status Codes:
200- Success403- User is not a member of the team
13. Revoke Team Invite
DELETE /teams/{teamId}/invites/{inviteId}
Revokes a team invite. Admin or invite creator only.
Parameters:
teamId(path, required) - Team identifierinviteId(path, required) - Invite identifier
Status Codes:
200- Invite successfully revoked403- Only admins or invite creator can revoke404- Invite does not exist
14. Join Team
POST /teams/join
Joins a team using an invite code.
Request Body:
{ "code": "string (required, e.g., T-1A2B3C4D5E6F)" }
Response Schema:
{ "success": true, "data": { "team": "string", "membership": "string" } }
Status Codes:
200- Joined the team successfully400- Invite expired, max uses reached, or already a team member404- Invite code not found
Team Billing Management
15. Purchase Team Subscription
POST /teams/{teamId}/billing/purchase
Purchases a subscription plan for the team. Admin or billing manager only.
Parameters:
teamId(path, required) - Team identifier
Request Body:
{
"plan": "BASIC_MONTHLY|BASIC_YEARLY|PRO_MONTHLY|PRO_YEARLY",
"successUrl": "string (optional)",
"cancelUrl": "string (optional)"
}
Status Codes:
200- Checkout session created successfully403- Only admins or billing managers can purchase plans
16. Get Team Subscription Plan
GET /teams/{teamId}/billing/plan
Retrieves the team's current subscription information.
Parameters:
teamId(path, required) - Team identifier
Response Schema:
{
"success": true,
"data": {
"plan": "FREE|BASIC|PRO",
"hasActiveSubscription": "boolean",
"planExpiry": "date-time | null"
}
}
Status Codes:
200- Success401- Unauthorized
17. Create Billing Portal Session
POST /teams/{teamId}/billing/portal
Creates a Stripe billing portal session for subscription management. Admin or billing manager only.
Parameters:
teamId(path, required) - Team identifier
Request Body (Optional):
{ "returnUrl": "string" }
Response Schema:
{ "success": true, "data": { "url": "string" } }
Status Codes:
200- Portal session created successfully403- Only admins or billing managers can create portal session
Team Roles
Role Hierarchy
- admin - Full team management permissions
- billing_manager - Billing and subscription management
- member - Basic team member access
Permission Matrix
| Action | Admin | Billing Manager | Member |
|---|---|---|---|
| View team details | ✅ | ✅ | ✅ |
| Update team settings | ✅ | ❌ | ❌ |
| Delete team | ✅ | ❌ | ❌ |
| Add/remove members | ✅ | ❌ | ❌ |
| Change member roles | ✅ | ❌ | ❌ |
| Create invites | ✅ | ✅ | ✅ |
| Manage billing | ✅ | ✅ | ❌ |
| Leave team | ✅* | ✅ | ✅ |
*Admin cannot leave if they are the only admin
Team Plans & Limits
Plan Types
- FREE - Basic team functionality
- BASIC - Enhanced features and limits
- PRO - Full feature set and highest limits
Usage Tracking
Teams have usage limits tracked through:
weeklyBudgetUsd- Weekly spending budgetspentThisWeekUsd- Current week spendingweekStartDate- When the current week startedmaxMembers- Maximum team size
Error Handling
Common Error Responses
{ "success": false, "error": "Error message description" }
Authentication
All endpoints require a Bearer JWT token:
Authorization: Bearer <your-jwt-token>
Rate Limiting
Standard API rate limits apply to all endpoints. Refer to main API documentation for specific limits.