Workspaces

Organize your AI empire 🗂️

A Workspace is a container for your bots. Think of it as a project or application boundary.

Create Workspace

from memofai import create_moa_client

client = create_moa_client(api_token='moa_your_token')

workspace = client.workspaces.create({
    'name': 'Customer Support System',
    'description': 'Handles all customer support bots'
})

print(f"Created: {workspace['id']}")

List Workspaces

workspaces = client.workspaces.list()

for ws in workspaces:
    print(f"{ws['name']} (ID: {ws['id']})")

Get Workspace

workspace = client.workspaces.get('ws_abc123')
print(workspace)

Update Workspace

updated = client.workspaces.update({
    'id': 'ws_abc123',
    'name': 'Updated Name',
    'description': 'New description'
})

Delete Workspace

client.workspaces.delete('ws_abc123')

Warning: Deleting a workspace deletes all its bots and memories!

Best Practices

One Workspace Per Project

# ✅ Good - Separate projects
support_ws = client.workspaces.create({'name': 'Customer Support'})
sales_ws = client.workspaces.create({'name': 'Sales Automation'})
personal_ws = client.workspaces.create({'name': 'Personal Assistant'})

# ❌ Bad - Everything in one
everything_ws = client.workspaces.create({'name': 'All My Stuff'})

Use Descriptive Names

# ✅ Good
workspace = client.workspaces.create({
    'name': 'E-Commerce Customer Support',
    'description': 'Handles customer inquiries for online store'
})

# ❌ Bad
workspace = client.workspaces.create({'name': 'Workspace 1'})

Common Patterns

Single Workspace App

class MyApp:
    def __init__(self):
        self.client = create_moa_client(api_token='moa_token')
        self.workspace = self._get_or_create_workspace()
    
    def _get_or_create_workspace(self):
        workspaces = self.client.workspaces.list()
        
        # Find or create
        app_ws = next(
            (ws for ws in workspaces if ws['name'] == 'My App'),
            None
        )
        
        if not app_ws:
            app_ws = self.client.workspaces.create({
                'name': 'My App',
                'description': 'Main application workspace'
            })
        
        return app_ws

Multi-Tenant with Workspaces

def get_tenant_workspace(tenant_id: str):
    """One workspace per tenant"""
    workspaces = client.workspaces.list()
    
    tenant_ws = next(
        (ws for ws in workspaces if ws['name'] == f'tenant_{tenant_id}'),
        None
    )
    
    if not tenant_ws:
        tenant_ws = client.workspaces.create({
            'name': f'tenant_{tenant_id}',
            'description': f'Workspace for tenant {tenant_id}'
        })
    
    return tenant_ws

Next: Bots →