mirror of
https://github.com/supermemoryai/supermemory.git
synced 2026-09-06 08:16:03 +00:00
Update apps/docs/org-settings.mdx
Co-Authored-By: mintlify[bot] <109931778+mintlify[bot]@users.noreply.github.com>
This commit is contained in:
parent
c42248ff35
commit
c3f290685a
1 changed files with 70 additions and 251 deletions
|
|
@ -1,265 +1,84 @@
|
|||
---
|
||||
title: "Organization Settings"
|
||||
description: "Configure organization-wide settings and content filtering for Supermemory"
|
||||
icon: "settings"
|
||||
title: Organization Settings
|
||||
description: Configure organization-wide settings for your Supermemory workspace
|
||||
---
|
||||
|
||||
Organization settings control how Supermemory processes content across your entire organization. These settings apply to all memories and connectors, helping you:
|
||||
## Organization Settings
|
||||
|
||||
- Filter content before indexing
|
||||
- Configure custom OAuth applications for connectors
|
||||
- Set organization-wide processing rules
|
||||
- Control what gets indexed and what gets excluded
|
||||
Organization settings allow you to customize and configure various aspects of your Supermemory workspace, including custom OAuth credentials for connectors, processing options, and analytics preferences.
|
||||
|
||||
## Custom OAuth Credentials
|
||||
|
||||
Supermemory provides default OAuth credentials for various connectors, but you can configure custom credentials for your organization to use your own OAuth applications. This gives you more control over the authentication flow and allows you to customize the OAuth app settings.
|
||||
|
||||
### Why Use Custom OAuth Credentials?
|
||||
|
||||
- **Branding**: Use your own OAuth app with custom branding and app information
|
||||
- **Rate Limits**: Avoid shared rate limits by using your own OAuth application
|
||||
- **Control**: Full control over OAuth app settings, permissions, and configurations
|
||||
- **Compliance**: Meet specific compliance requirements for your organization
|
||||
|
||||
### Supported Connectors
|
||||
|
||||
You can configure custom OAuth credentials for the following connectors:
|
||||
|
||||
- **Google Drive**: Custom Google OAuth Client ID and Secret
|
||||
- **Notion**: Custom Notion OAuth Client ID and Secret
|
||||
- **OneDrive**: Custom Microsoft OAuth Client ID and Secret
|
||||
- **GitHub**: Custom GitHub OAuth Client ID and Secret
|
||||
|
||||
## Configuring Custom GitHub OAuth Credentials
|
||||
|
||||
To use custom GitHub OAuth credentials for your organization:
|
||||
|
||||
### Step 1: Create a GitHub OAuth App
|
||||
|
||||
1. Go to [GitHub Developer Settings](https://github.com/settings/developers)
|
||||
2. Click **OAuth Apps** → **New OAuth App**
|
||||
3. Fill in the application details:
|
||||
- **Application name**: Your app name (e.g., "My Company - Supermemory")
|
||||
- **Homepage URL**: Your organization's homepage
|
||||
- **Authorization callback URL**: `https://api.supermemory.ai/auth/github/callback`
|
||||
4. Click **Register application**
|
||||
5. Note your **Client ID** (displayed on the app page)
|
||||
6. Click **Generate a new client secret** and save the secret securely
|
||||
|
||||
### Step 2: Configure in Supermemory
|
||||
|
||||
1. Navigate to **Advanced Settings** in your Supermemory dashboard
|
||||
2. Find the **GitHub** connector section
|
||||
3. Toggle **Use custom client keys** to enable
|
||||
4. Enter your **Client ID** and **Client Secret**
|
||||
5. Click **Save Changes**
|
||||
|
||||
### Validation Requirements
|
||||
|
||||
When configuring custom GitHub OAuth credentials, the following validation rules apply:
|
||||
|
||||
**Client ID:**
|
||||
- Must be at least 10 characters long
|
||||
- Must be less than 50 characters
|
||||
- Can only contain letters, numbers, dots, underscores, and hyphens
|
||||
|
||||
**Client Secret:**
|
||||
- Must be exactly 40 characters long
|
||||
- Must be a hexadecimal string (only contains 0-9 and a-f)
|
||||
|
||||
<Note>
|
||||
Settings are organization-wide and apply to all users and memories within your organization.
|
||||
Your Client Secret is encrypted before being stored in the database and is never displayed in plain text after saving.
|
||||
</Note>
|
||||
|
||||
## Why Settings Matter
|
||||
## Other Organization Settings
|
||||
|
||||
The settings endpoint is crucial for teaching Supermemory about your specific use case. It helps Supermemory understand:
|
||||
### Processing Settings
|
||||
|
||||
- **What you are**: Your organization's specific use case and purpose
|
||||
- **What to expect**: The types of content and information flowing through your system
|
||||
- **How to interpret**: Context for understanding queries in your specific use case
|
||||
- **What to prioritize**: Which content matters most for your users
|
||||
- **LLM Filtering**: Enable AI-powered filtering of content before processing
|
||||
- **Chunk Size**: Configure the maximum chunk size for document processing
|
||||
|
||||
### Example: Brand Guidelines Use Case
|
||||
### Analytics
|
||||
|
||||
Without proper settings, when a user searches "what are our values?", Supermemory might return random documents mentioning "values". But with proper configuration:
|
||||
Configure analytics and monitoring preferences for your organization. See [Analytics & Monitoring](/docs/analytics) for more details.
|
||||
|
||||
```typescript
|
||||
await client.settings.update({
|
||||
shouldLLMFilter: true,
|
||||
filterPrompt: `You are managing brand guidelines for Brand.ai.
|
||||
You will receive all outbound content from our organization.
|
||||
|
||||
When users search, they're looking for:
|
||||
- "What are our values?" → Return official brand values document
|
||||
- "What's our tone of voice?" → Return brand voice guidelines
|
||||
- "How do we describe our mission?" → Return approved mission statements
|
||||
|
||||
Focus on the latest approved brand materials, not drafts or outdated versions.`
|
||||
});
|
||||
```
|
||||
## Security
|
||||
|
||||
Now Supermemory understands that:
|
||||
- Searches about "values" refer to brand values, not financial values
|
||||
- "Tone" means brand voice, not audio settings
|
||||
- Priority should be given to official, approved content
|
||||
|
||||
This context dramatically improves search relevance and ensures users get the right information for their specific use case.
|
||||
|
||||
## API Endpoints
|
||||
|
||||
### Get Current Settings
|
||||
|
||||
Retrieve your organization's current settings configuration.
|
||||
|
||||
<CodeGroup>
|
||||
|
||||
```typescript TypeScript
|
||||
const settings = await client.settings.get();
|
||||
console.log('Current settings:', settings);
|
||||
```
|
||||
|
||||
```python Python
|
||||
settings = client.settings.get()
|
||||
print(f'Current settings: {settings}')
|
||||
```
|
||||
|
||||
```bash cURL
|
||||
curl -X GET "https://api.supermemory.ai/v3/settings" \
|
||||
-H "Authorization: Bearer $SUPERMEMORY_API_KEY"
|
||||
```
|
||||
|
||||
</CodeGroup>
|
||||
|
||||
### Update Settings
|
||||
|
||||
Update your organization's settings. You only need to include the fields you want to change.
|
||||
|
||||
<CodeGroup>
|
||||
|
||||
```typescript TypeScript
|
||||
const updatedSettings = await client.settings.update({
|
||||
shouldLLMFilter: true,
|
||||
filterPrompt: "Only index technical documentation and code",
|
||||
includeItems: ["*.md", "*.ts", "*.py"],
|
||||
excludeItems: ["node_modules", ".git", "*.test.*"]
|
||||
});
|
||||
|
||||
console.log('Updated fields:', updatedSettings.updated);
|
||||
```
|
||||
|
||||
```python Python
|
||||
updated_settings = client.settings.update(
|
||||
should_llm_filter=True,
|
||||
filter_prompt="Only index technical documentation and code",
|
||||
include_items=["*.md", "*.ts", "*.py"],
|
||||
exclude_items=["node_modules", ".git", "*.test.*"]
|
||||
)
|
||||
|
||||
print(f'Updated fields: {updated_settings.updated}')
|
||||
```
|
||||
|
||||
```bash cURL
|
||||
curl -X PATCH "https://api.supermemory.ai/v3/settings" \
|
||||
-H "Authorization: Bearer $SUPERMEMORY_API_KEY" \
|
||||
-H "Content-Type: application/json" \
|
||||
-d '{
|
||||
"shouldLLMFilter": true,
|
||||
"filterPrompt": "Only index technical documentation and code",
|
||||
"includeItems": ["*.md", "*.ts", "*.py"],
|
||||
"excludeItems": ["node_modules", ".git", "*.test.*"]
|
||||
}'
|
||||
```
|
||||
|
||||
</CodeGroup>
|
||||
|
||||
## Content Filtering Settings
|
||||
|
||||
Control what content gets indexed into Supermemory.
|
||||
|
||||
### Basic Filtering
|
||||
|
||||
Use include/exclude patterns to filter content:
|
||||
|
||||
```typescript
|
||||
await client.settings.update({
|
||||
includeItems: [
|
||||
"*.md", // All markdown files
|
||||
"*.mdx", // MDX documentation
|
||||
"docs/**", // Everything in docs folder
|
||||
"src/**/*.ts" // TypeScript files in src
|
||||
],
|
||||
excludeItems: [
|
||||
"node_modules", // Dependencies
|
||||
".git", // Version control
|
||||
"*.test.*", // Test files
|
||||
"build/**", // Build outputs
|
||||
"*.tmp" // Temporary files
|
||||
]
|
||||
});
|
||||
```
|
||||
|
||||
### Intelligent LLM Filtering
|
||||
|
||||
Enable AI-powered content filtering for semantic understanding:
|
||||
|
||||
```typescript
|
||||
await client.settings.update({
|
||||
shouldLLMFilter: true,
|
||||
filterPrompt: `You are filtering content for a technical documentation system.
|
||||
|
||||
Include:
|
||||
- API documentation
|
||||
- Code examples and tutorials
|
||||
- Technical guides and references
|
||||
- Architecture documentation
|
||||
|
||||
Exclude:
|
||||
- Marketing materials
|
||||
- Internal meeting notes
|
||||
- Personal information
|
||||
- Outdated or deprecated content
|
||||
|
||||
Focus on content that helps developers understand and use our APIs.`
|
||||
});
|
||||
```
|
||||
|
||||
## Connector OAuth Settings
|
||||
|
||||
Configure custom OAuth applications for connector integrations.
|
||||
|
||||
### Google Drive Custom OAuth
|
||||
|
||||
```typescript
|
||||
await client.settings.update({
|
||||
googleDriveCustomKeyEnabled: true,
|
||||
googleDriveClientId: "your-client-id.apps.googleusercontent.com",
|
||||
googleDriveClientSecret: "your-client-secret"
|
||||
});
|
||||
```
|
||||
|
||||
### Notion Custom OAuth
|
||||
|
||||
```typescript
|
||||
await client.settings.update({
|
||||
notionCustomKeyEnabled: true,
|
||||
notionClientId: "your-notion-oauth-client-id",
|
||||
notionClientSecret: "your-notion-oauth-client-secret"
|
||||
});
|
||||
```
|
||||
|
||||
### OneDrive Custom OAuth
|
||||
|
||||
```typescript
|
||||
await client.settings.update({
|
||||
onedriveCustomKeyEnabled: true,
|
||||
onedriveClientId: "your-azure-app-id",
|
||||
onedriveClientSecret: "your-azure-app-secret"
|
||||
});
|
||||
```
|
||||
|
||||
## Best Practices
|
||||
|
||||
### 1. Set Before Bulk Import
|
||||
Configure settings before importing large amounts of content. Changes don't retroactively affect existing memories.
|
||||
|
||||
### 2. Be Specific in Filter Prompts
|
||||
Provide clear context about your organization and expected search patterns:
|
||||
|
||||
```typescript
|
||||
// Good - Specific and contextual
|
||||
filterPrompt: `Technical documentation for developers.
|
||||
Include: API references, code examples, error solutions.
|
||||
Exclude: marketing content, personal data, test files.
|
||||
Users search for: implementation details, troubleshooting, best practices.`
|
||||
|
||||
// Bad - Too vague
|
||||
filterPrompt: "Only important content"
|
||||
```
|
||||
|
||||
### 3. Test OAuth Credentials
|
||||
Always test custom OAuth credentials in development before production:
|
||||
|
||||
```typescript
|
||||
// Test connection after updating OAuth settings
|
||||
const testConnection = await client.connections.create('google-drive', {
|
||||
redirectUrl: 'https://yourapp.com/callback',
|
||||
containerTags: ['test-connection']
|
||||
});
|
||||
```
|
||||
|
||||
### 4. Monitor Filter Effectiveness
|
||||
Check what's being indexed to ensure filters work as expected:
|
||||
|
||||
```typescript
|
||||
const memories = await client.memories.list({
|
||||
containerTags: ['your-tags'],
|
||||
limit: 10
|
||||
});
|
||||
|
||||
// Review what's actually being indexed
|
||||
memories.memories.forEach(memory => {
|
||||
console.log(`Indexed: ${memory.title} - ${memory.type}`);
|
||||
});
|
||||
```
|
||||
|
||||
## Important Notes
|
||||
|
||||
<Warning>
|
||||
**Settings Limitations:**
|
||||
- Changes are organization-wide, not per-user
|
||||
- Settings don't retroactively process existing memories
|
||||
- OAuth credentials must be properly configured in respective platforms
|
||||
- Filter patterns are applied during content ingestion
|
||||
</Warning>
|
||||
|
||||
## Related Documentation
|
||||
|
||||
- [Connectors Overview](/connectors/overview) - Setting up external integrations
|
||||
- [Google Drive Setup](/connectors/google-drive) - Configure Google Drive OAuth
|
||||
- [Notion Setup](/connectors/notion) - Configure Notion OAuth
|
||||
- [OneDrive Setup](/connectors/onedrive) - Configure OneDrive OAuth
|
||||
All sensitive credentials (OAuth secrets, API keys) are encrypted at rest using industry-standard encryption. Credentials are only decrypted when needed for authentication flows and are never exposed in API responses or logs.
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue