Julian Vanecek commited on
Commit
c4dca42
·
1 Parent(s): 3151bfa
This view is limited to 50 files because it contains too many changes.   See raw diff
Files changed (50) hide show
  1. .gitignore +30 -0
  2. PROJECT_SPEC.md +218 -0
  3. README.md +76 -0
  4. app.py +20 -0
  5. backend/vector_store_assistant_wrapper.py +148 -0
  6. backend/vector_store_manager.py +20 -43
  7. config/openai_config.json +37 -0
  8. config/vector_stores.json +23 -0
  9. frontend/__init__.py +1 -0
  10. frontend/gradio_app.py +281 -0
  11. pages/Chorus_R1.1_QuickStartGuide_TOC.txt +32 -0
  12. pages/Chorus_R1.1_QuickStartGuide_page_001.txt +8 -0
  13. pages/Chorus_R1.1_QuickStartGuide_page_002.txt +36 -0
  14. pages/Chorus_R1.1_QuickStartGuide_page_003.txt +28 -0
  15. pages/Chorus_R1.1_QuickStartGuide_page_004.txt +12 -0
  16. pages/Chorus_R1.1_QuickStartGuide_page_005.txt +32 -0
  17. pages/Chorus_R1.1_QuickStartGuide_page_006.txt +7 -0
  18. pages/Chorus_R1.1_QuickStartGuide_page_007.txt +17 -0
  19. pages/Chorus_R1.1_QuickStartGuide_page_008.txt +14 -0
  20. pages/Chorus_R1.1_QuickStartGuide_page_009.txt +20 -0
  21. pages/Chorus_R1.1_QuickStartGuide_page_010.txt +19 -0
  22. pages/Chorus_R1.1_QuickStartGuide_page_011.txt +22 -0
  23. pages/Chorus_R1.1_QuickStartGuide_page_012.txt +20 -0
  24. pages/Chorus_R1.1_QuickStartGuide_page_013.txt +27 -0
  25. pages/Chorus_R1.1_QuickStartGuide_page_014.txt +20 -0
  26. pages/Chorus_R1.1_QuickStartGuide_page_015.txt +27 -0
  27. pages/Chorus_R1.1_QuickStartGuide_page_016.txt +11 -0
  28. pages/Chorus_R1.1_QuickStartGuide_page_017.txt +17 -0
  29. pages/Chorus_R1.1_QuickStartGuide_page_018.txt +20 -0
  30. pages/Chorus_R1.1_QuickStartGuide_page_019.txt +7 -0
  31. pages/Chorus_R1.1_QuickStartGuide_page_020.txt +17 -0
  32. pages/Chorus_R1.1_QuickStartGuide_page_021.txt +27 -0
  33. pages/Chorus_R1.1_QuickStartGuide_page_022.txt +30 -0
  34. pages/Chorus_R1.1_QuickStartGuide_page_023.txt +31 -0
  35. pages/Chorus_R1.1_QuickStartGuide_page_024.txt +17 -0
  36. pages/Chorus_R1.1_UserGuide_TOC.txt +73 -0
  37. pages/Chorus_R1.1_UserGuide_page_001.txt +8 -0
  38. pages/Chorus_R1.1_UserGuide_page_002.txt +36 -0
  39. pages/Chorus_R1.1_UserGuide_page_003.txt +36 -0
  40. pages/Chorus_R1.1_UserGuide_page_004.txt +12 -0
  41. pages/Chorus_R1.1_UserGuide_page_005.txt +44 -0
  42. pages/Chorus_R1.1_UserGuide_page_006.txt +44 -0
  43. pages/Chorus_R1.1_UserGuide_page_007.txt +30 -0
  44. pages/Chorus_R1.1_UserGuide_page_008.txt +8 -0
  45. pages/Chorus_R1.1_UserGuide_page_009.txt +9 -0
  46. pages/Chorus_R1.1_UserGuide_page_010.txt +33 -0
  47. pages/Chorus_R1.1_UserGuide_page_011.txt +7 -0
  48. pages/Chorus_R1.1_UserGuide_page_012.txt +16 -0
  49. pages/Chorus_R1.1_UserGuide_page_013.txt +14 -0
  50. pages/Chorus_R1.1_UserGuide_page_014.txt +27 -0
.gitignore ADDED
@@ -0,0 +1,30 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Python
2
+ __pycache__/
3
+ *.py[cod]
4
+ *$py.class
5
+ *.so
6
+ .Python
7
+ env/
8
+ venv/
9
+ ENV/
10
+ .venv
11
+
12
+ # IDE
13
+ .idea/
14
+ .vscode/
15
+ *.swp
16
+ *.swo
17
+
18
+ # OS
19
+ .DS_Store
20
+ Thumbs.db
21
+
22
+ # Project specific
23
+ *.log
24
+ .env
25
+ test_*.py
26
+ !backend/test_pdf_mapping.py
27
+
28
+ # Temporary files
29
+ *.tmp
30
+ *.bak
PROJECT_SPEC.md ADDED
@@ -0,0 +1,218 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # OpenAI Chatbot MCP v2 - Complete Project Specification
2
+
3
+ ## Project Overview
4
+
5
+ **Location**: `/Users/jsv/Work/ataya/concert-master/AWS/backend/chatbot/openai_chatbot/openai-chatbot-mcp`
6
+
7
+ **Description**: "doc specific rag + document reading + mcp for at will rag"
8
+
9
+ **Goal**: Create an advanced OpenAI chatbot with version-specific document retrieval, MCP-style tools for flexible RAG queries, and page-level document access.
10
+
11
+ ## Architecture Summary
12
+
13
+ ### Core Components:
14
+
15
+ 1. **Multiple Vector Stores** (per version)
16
+ - Separate vector store for each document version (Harmony 1.2, 1.5, 1.6, 1.8, Chorus 1.1)
17
+ - One general/FAQ vector store for cross-version information
18
+ - Rationale: OpenAI vector stores don't support metadata filtering
19
+
20
+ 2. **Automatic Dual Querying**
21
+ - When user queries with a version (e.g., Harmony 1.8), automatically query:
22
+ - The version-specific vector store
23
+ - The general/FAQ vector store
24
+ - Append both results to the user query before sending to OpenAI
25
+
26
+ 3. **MCP-Style Tools** (implemented as OpenAI functions)
27
+ - **Vector Search Tool**: AI can query any vector store at will
28
+ - **Document Reader Tool**: AI can read specific pages or table of contents
29
+
30
+ 4. **Page-Level Document Access**
31
+ - Documents split into individual pages in `/pages` directory
32
+ - Table of contents (TOC) files for each document
33
+ - Tool behavior: No pages specified → return TOC; Pages specified → return page content
34
+
35
+ ## Requirements
36
+
37
+ ### User Interface (Gradio)
38
+ - Version selector dropdown (defaults to Harmony 1.8)
39
+ - Model selection (GPT-4.1, GPT-4.1 Mini, GPT-4.1 Nano, O4 Mini)
40
+ - Custom prompt support
41
+ - Real-time streaming responses
42
+ - Token usage and cost tracking
43
+ - Response time display
44
+ - Deploy to Hugging Face Spaces
45
+
46
+ ### Backend Features
47
+ - Support for multiple OpenAI vector stores
48
+ - Version-to-vector-store mapping
49
+ - Streaming responses
50
+ - Cost calculation
51
+ - Function calling for MCP-style tools
52
+
53
+ ### Document Versions
54
+ - **Harmony**: 1.2, 1.5, 1.6, 1.8 (latest)
55
+ - **Chorus**: 1.1 (latest)
56
+ - Each version has User Guide and Installation Guide
57
+
58
+ ## Design Decisions
59
+
60
+ ### 1. Latest Version Handling
61
+ - Config file will specify latest versions
62
+ - Latest Harmony: 1.8
63
+ - Latest Chorus: 1.1
64
+
65
+ ### 2. Version Ranges
66
+ - Not needed - discrete tool calls only
67
+ - User selects single version from dropdown
68
+
69
+ ### 3. Result Ranking
70
+ - No complex ranking needed
71
+ - Results clearly delineated by origin (version-specific vs general)
72
+ - AI can parse and prioritize based on context
73
+
74
+ ### 4. Context Limits
75
+ - Chunk size: ~1000 tokens
76
+ - Maximum chunks: 10-20 (10,000-20,000 tokens)
77
+ - Tradeoff: More context = better answers but higher cost
78
+ - Recommendation: Start with 10 chunks, monitor performance
79
+
80
+ ## Technical Implementation
81
+
82
+ ### Project Structure
83
+ ```
84
+ openai-chatbot-mcp/
85
+ ├── backend/
86
+ │ ├── chatbot_backend.py # Main backend with function calling
87
+ │ ├── vector_store_manager.py # Manages multiple vector stores
88
+ │ ├── document_reader.py # Page-level document access
89
+ │ └── upload_versioned_pdfs.py # Script to create version-specific stores
90
+ ├── frontend/
91
+ │ └── gradio_app.py # Gradio UI with version selection
92
+ ├── config/
93
+ │ ├── vector_stores.json # Maps versions to vector store IDs
94
+ │ └── openai_config.json # General configuration
95
+ ├── pages/ # Existing page-level documents
96
+ │ └── [document pages...]
97
+ ├── tools/
98
+ │ ├── vector_search_tool.py # Vector search function
99
+ │ └── document_reader_tool.py # Document reader function
100
+ ├── requirements.txt
101
+ ├── app.py # HF Spaces entry point
102
+ └── README.md
103
+ ```
104
+
105
+ ### Vector Store Configuration Example
106
+ ```json
107
+ {
108
+ "vector_stores": {
109
+ "harmony_1_2": "vs_xxx",
110
+ "harmony_1_5": "vs_xxx",
111
+ "harmony_1_6": "vs_xxx",
112
+ "harmony_1_8": "vs_xxx",
113
+ "chorus_1_1": "vs_xxx",
114
+ "general_faq": "vs_xxx"
115
+ },
116
+ "latest_versions": {
117
+ "harmony": "1.8",
118
+ "chorus": "1.1"
119
+ }
120
+ }
121
+ ```
122
+
123
+ ### MCP Tool Schemas
124
+
125
+ #### Vector Search Tool
126
+ ```python
127
+ {
128
+ "name": "search_vector_store",
129
+ "description": "Search a specific vector store for relevant information",
130
+ "parameters": {
131
+ "query": "Search query string",
132
+ "vector_store_name": "Name of vector store (e.g., 'harmony_1_8', 'general_faq')",
133
+ "max_results": "Maximum number of results (default: 5)"
134
+ }
135
+ }
136
+ ```
137
+
138
+ #### Document Reader Tool
139
+ ```python
140
+ {
141
+ "name": "read_document_pages",
142
+ "description": "Read specific pages from a document or get table of contents",
143
+ "parameters": {
144
+ "document_name": "Document identifier (e.g., 'Harmony_R1.8_UserGuide')",
145
+ "page_numbers": "List of page numbers to read (optional, returns TOC if not specified)"
146
+ }
147
+ }
148
+ ```
149
+
150
+ ### Query Flow
151
+ 1. User selects version (e.g., Harmony 1.8) and asks question
152
+ 2. Backend automatically queries:
153
+ - `harmony_1_8` vector store
154
+ - `general_faq` vector store
155
+ 3. Results formatted and appended to query:
156
+ ```
157
+ Based on Harmony 1.8 documentation:
158
+ [version-specific chunks]
159
+
160
+ Additional general information:
161
+ [FAQ/general chunks]
162
+
163
+ User Question: [original question]
164
+ ```
165
+ 4. Query sent to OpenAI with function calling enabled
166
+ 5. AI can use tools to get more information if needed
167
+ 6. Response streamed back to user
168
+
169
+ ## Implementation Steps
170
+
171
+ ### Phase 1: Setup Vector Stores
172
+ 1. Create upload script for versioned PDFs
173
+ 2. Create separate vector stores for each version
174
+ 3. Upload PDFs to respective stores
175
+ 4. Create general/FAQ vector store
176
+ 5. Save configuration with store IDs
177
+
178
+ ### Phase 2: Backend Development
179
+ 1. Create `vector_store_manager.py` for multi-store handling
180
+ 2. Extend `chatbot_backend.py` with:
181
+ - Multiple vector store support
182
+ - Function calling integration
183
+ - Automatic dual querying
184
+ 3. Implement MCP-style tools as functions
185
+ 4. Add document reader functionality
186
+
187
+ ### Phase 3: Frontend Enhancement
188
+ 1. Add version selector dropdown
189
+ 2. Update UI to show which stores were queried
190
+ 3. Maintain existing features (streaming, cost tracking, etc.)
191
+ 4. Add source attribution display
192
+
193
+ ### Phase 4: Testing & Deployment
194
+ 1. Test version-specific queries
195
+ 2. Test cross-version queries using tools
196
+ 3. Test document page reading
197
+ 4. Deploy to Hugging Face Spaces
198
+
199
+ ## Reference Implementation
200
+ - Simple version (single vector store): `/Users/jsv/Work/ataya/concert-master/AWS/backend/chatbot/openai_chatbot/openai-chatbot-simple`
201
+ - Use as base for architecture and patterns
202
+
203
+ ## Notes for Implementation
204
+ - MCP tools must be implemented as regular Python functions for HF Spaces
205
+ - All configuration should use HF Spaces secrets for API keys
206
+ - Maintain streaming support throughout
207
+ - Keep cost tracking and response time features
208
+ - Ensure clear source attribution in responses
209
+
210
+ ## Next Steps
211
+ 1. Start with creating the upload script for versioned PDFs
212
+ 2. Set up the vector store configuration
213
+ 3. Implement the backend components
214
+ 4. Enhance the frontend
215
+ 5. Test and deploy
216
+
217
+ ---
218
+ **To continue this project**: Use this specification as context and begin implementation from Phase 1.
README.md CHANGED
@@ -10,4 +10,80 @@ pinned: false
10
  short_description: doc specific rag + document reading + mcp for at will rag
11
  ---
12
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
13
  Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
 
10
  short_description: doc specific rag + document reading + mcp for at will rag
11
  ---
12
 
13
+ # OpenAI Chatbot MCP v2
14
+
15
+ Advanced OpenAI chatbot with version-specific document retrieval, MCP-style tools for flexible RAG queries, and page-level document access.
16
+
17
+ ## Features
18
+
19
+ - **Multi-Vector Store Support**: Separate vector stores for each product version
20
+ - **Automatic Dual Querying**: Queries both version-specific and general FAQ stores
21
+ - **MCP-Style Tools**:
22
+ - Vector Search Tool: AI can query any vector store at will
23
+ - Document Reader Tool: AI can read specific pages or table of contents
24
+ - **Page-Level Document Access**: Documents split into individual pages
25
+ - **Real-time Streaming**: Responses streamed in real-time
26
+ - **Cost Tracking**: Token usage and cost calculation
27
+ - **Multiple Models**: Support for GPT-4.1, GPT-4.1 Mini, GPT-4.1 Nano, O4 Mini
28
+
29
+ ## Quick Start on HuggingFace Spaces
30
+
31
+ 1. Set your `OPENAI_API_KEY` in the Space secrets
32
+ 2. Run the upload script to populate vector stores (see Setup below)
33
+ 3. Update `config/vector_stores.json` with actual vector store IDs
34
+ 4. The app will start automatically
35
+
36
+ ## Setup Instructions
37
+
38
+ ### 1. Environment Variables
39
+
40
+ Set your OpenAI API key:
41
+ ```bash
42
+ export OPENAI_API_KEY=your_api_key_here
43
+ ```
44
+
45
+ ### 2. Create Vector Stores
46
+
47
+ Run the upload script to create version-specific vector stores:
48
+ ```bash
49
+ python backend/upload_versioned_pdfs.py
50
+ ```
51
+
52
+ This will:
53
+ - Create separate vector stores for each version
54
+ - Upload PDFs to respective stores
55
+ - Save configuration in `config/vector_stores.json`
56
+
57
+ ### 3. Update Configuration
58
+
59
+ After running the upload script, update the `config/vector_stores.json` file with the actual vector store IDs.
60
+
61
+ ### 4. Run Locally
62
+
63
+ ```bash
64
+ python app.py
65
+ ```
66
+
67
+ ## Usage
68
+
69
+ 1. Select a product version from the dropdown (e.g., "Harmony 1.8")
70
+ 2. Choose an AI model
71
+ 3. Ask your question
72
+ 4. The AI will:
73
+ - Search the version-specific vector store
74
+ - Search the general FAQ store
75
+ - Use tools to find additional information if needed
76
+ - Provide a comprehensive answer
77
+
78
+ ## Tools Available to AI
79
+
80
+ ### Vector Search Tool
81
+ - Searches any vector store for relevant information
82
+ - Can target specific versions or general FAQ
83
+
84
+ ### Document Reader Tool
85
+ - Reads specific pages from documents
86
+ - Returns table of contents if no pages specified
87
+ - Useful for detailed information retrieval
88
+
89
  Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
app.py ADDED
@@ -0,0 +1,20 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """
2
+ Main application entry point for HuggingFace Spaces deployment.
3
+ """
4
+
5
+ import os
6
+ import sys
7
+ from pathlib import Path
8
+
9
+ # Add current directory to path
10
+ sys.path.append(str(Path(__file__).parent))
11
+
12
+ # Import the Gradio interface
13
+ from frontend.gradio_app import create_gradio_interface
14
+
15
+ # Create the interface
16
+ app = create_gradio_interface()
17
+
18
+ # Launch the app
19
+ if __name__ == "__main__":
20
+ app.launch()
backend/vector_store_assistant_wrapper.py ADDED
@@ -0,0 +1,148 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """
2
+ Vector Store Assistant Wrapper - Creates temporary assistants for querying vector stores.
3
+ This is a compromise approach that allows dynamic vector store selection.
4
+ """
5
+
6
+ import os
7
+ import json
8
+ import time
9
+ from typing import Dict, List, Optional
10
+ from openai import OpenAI
11
+ import logging
12
+
13
+ logger = logging.getLogger(__name__)
14
+
15
+
16
+ class VectorStoreAssistantWrapper:
17
+ def __init__(self, client: OpenAI):
18
+ """Initialize the assistant wrapper."""
19
+ self.client = client
20
+ self._assistant_cache = {} # Cache assistants by vector store ID
21
+
22
+ def _get_or_create_assistant(self, vector_store_id: str, store_name: str) -> str:
23
+ """Get existing or create new assistant for a vector store."""
24
+ # Check cache first
25
+ if vector_store_id in self._assistant_cache:
26
+ assistant_id = self._assistant_cache[vector_store_id]
27
+ try:
28
+ # Verify assistant still exists
29
+ self.client.beta.assistants.retrieve(assistant_id)
30
+ return assistant_id
31
+ except:
32
+ # Assistant was deleted, remove from cache
33
+ del self._assistant_cache[vector_store_id]
34
+
35
+ # Create new assistant
36
+ try:
37
+ assistant = self.client.beta.assistants.create(
38
+ name=f"Search Assistant for {store_name}",
39
+ instructions=f"You are a search assistant for {store_name}. Search the attached documents and provide relevant information.",
40
+ model="gpt-4o-mini", # Using mini for cost efficiency
41
+ tools=[{"type": "file_search"}],
42
+ tool_resources={
43
+ "file_search": {
44
+ "vector_store_ids": [vector_store_id]
45
+ }
46
+ }
47
+ )
48
+
49
+ # Cache the assistant
50
+ self._assistant_cache[vector_store_id] = assistant.id
51
+ logger.info(f"Created assistant {assistant.id} for vector store {vector_store_id}")
52
+
53
+ return assistant.id
54
+
55
+ except Exception as e:
56
+ logger.error(f"Error creating assistant: {e}")
57
+ raise
58
+
59
+ def search_vector_store(self, vector_store_id: str, store_name: str, query: str, max_results: int = 5) -> List[Dict]:
60
+ """Search a vector store using a temporary assistant."""
61
+ try:
62
+ # Get or create assistant
63
+ assistant_id = self._get_or_create_assistant(vector_store_id, store_name)
64
+
65
+ # Create a thread
66
+ thread = self.client.beta.threads.create()
67
+
68
+ # Add the query message
69
+ self.client.beta.threads.messages.create(
70
+ thread_id=thread.id,
71
+ role="user",
72
+ content=f"Search for: {query}"
73
+ )
74
+
75
+ # Run the assistant
76
+ run = self.client.beta.threads.runs.create_and_poll(
77
+ thread_id=thread.id,
78
+ assistant_id=assistant_id,
79
+ instructions=f"Search for information about: {query}. Return the most relevant excerpts.",
80
+ temperature=0.3
81
+ )
82
+
83
+ # Check if run completed successfully
84
+ if run.status != 'completed':
85
+ logger.error(f"Run failed with status: {run.status}")
86
+ return []
87
+
88
+ # Get messages
89
+ messages = self.client.beta.threads.messages.list(
90
+ thread_id=thread.id,
91
+ order="desc"
92
+ )
93
+
94
+ # Extract results from assistant's response
95
+ results = []
96
+ for message in messages:
97
+ if message.role == "assistant":
98
+ for content in message.content:
99
+ if content.type == "text":
100
+ # Extract text and any citations
101
+ text_content = content.text.value
102
+
103
+ # Parse annotations for file citations
104
+ if hasattr(content.text, 'annotations'):
105
+ for annotation in content.text.annotations:
106
+ if hasattr(annotation, 'file_citation'):
107
+ results.append({
108
+ "text": annotation.text,
109
+ "quote": annotation.file_citation.quote,
110
+ "file_id": annotation.file_citation.file_id
111
+ })
112
+
113
+ # If no annotations, add the whole response
114
+ if not results and text_content:
115
+ # Split response into chunks
116
+ chunks = text_content.split('\n\n')
117
+ for chunk in chunks[:max_results]:
118
+ if chunk.strip():
119
+ results.append({
120
+ "text": chunk.strip(),
121
+ "quote": chunk.strip(),
122
+ "file_id": ""
123
+ })
124
+
125
+ break
126
+ break
127
+
128
+ # Clean up thread
129
+ try:
130
+ self.client.beta.threads.delete(thread.id)
131
+ except:
132
+ pass
133
+
134
+ return results[:max_results]
135
+
136
+ except Exception as e:
137
+ logger.error(f"Error searching vector store: {e}")
138
+ return []
139
+
140
+ def cleanup_assistants(self):
141
+ """Clean up cached assistants."""
142
+ for assistant_id in list(self._assistant_cache.values()):
143
+ try:
144
+ self.client.beta.assistants.delete(assistant_id)
145
+ logger.info(f"Deleted assistant {assistant_id}")
146
+ except:
147
+ pass
148
+ self._assistant_cache.clear()
backend/vector_store_manager.py CHANGED
@@ -8,6 +8,7 @@ from typing import Dict, List, Optional, Tuple
8
  from pathlib import Path
9
  from openai import OpenAI
10
  import logging
 
11
 
12
  logger = logging.getLogger(__name__)
13
 
@@ -19,7 +20,10 @@ class VectorStoreManager:
19
  self.config_path = config_path or Path(__file__).parent.parent / "config" / "vector_stores.json"
20
  self.vector_stores = {}
21
  self.latest_versions = {}
 
22
  self.load_config()
 
 
23
 
24
  def load_config(self):
25
  """Load vector store configuration from file."""
@@ -32,6 +36,7 @@ class VectorStoreManager:
32
  config = json.load(f)
33
  self.vector_stores = config.get('vector_stores', {})
34
  self.latest_versions = config.get('latest_versions', {})
 
35
  logger.info(f"Loaded {len(self.vector_stores)} vector stores from config")
36
  except Exception as e:
37
  logger.error(f"Error loading vector store config: {e}")
@@ -60,51 +65,18 @@ class VectorStoreManager:
60
  return []
61
 
62
  try:
63
- # Create a thread for the query
64
- thread = self.client.beta.threads.create()
65
 
66
- # Add the query as a message
67
- self.client.beta.threads.messages.create(
68
- thread_id=thread.id,
69
- role="user",
70
- content=query
 
71
  )
72
 
73
- # Run the assistant with the specific vector store
74
- run = self.client.beta.threads.runs.create_and_poll(
75
- thread_id=thread.id,
76
- assistant_id="asst_temp", # This will be replaced with actual assistant ID
77
- tools=[{"type": "file_search"}],
78
- tool_resources={
79
- "file_search": {
80
- "vector_store_ids": [store_id]
81
- }
82
- }
83
- )
84
-
85
- # Get the messages
86
- messages = self.client.beta.threads.messages.list(
87
- thread_id=thread.id,
88
- order="asc"
89
- )
90
-
91
- # Extract search results
92
- results = []
93
- for message in messages:
94
- if message.role == "assistant":
95
- for content in message.content:
96
- if content.type == "text":
97
- # Parse file search annotations
98
- annotations = content.text.annotations
99
- for annotation in annotations:
100
- if annotation.type == "file_citation":
101
- results.append({
102
- "text": annotation.text,
103
- "file_id": annotation.file_citation.file_id,
104
- "quote": annotation.file_citation.quote
105
- })
106
-
107
- return results[:max_results]
108
 
109
  except Exception as e:
110
  logger.error(f"Error querying vector store '{store_name}': {e}")
@@ -175,4 +147,9 @@ class VectorStoreManager:
175
  for i, result in enumerate(general_results, 1):
176
  formatted.append(f"{i}. {result.get('quote', result.get('text', ''))}")
177
 
178
- return "\n".join(formatted)
 
 
 
 
 
 
8
  from pathlib import Path
9
  from openai import OpenAI
10
  import logging
11
+ from .vector_store_assistant_wrapper import VectorStoreAssistantWrapper
12
 
13
  logger = logging.getLogger(__name__)
14
 
 
20
  self.config_path = config_path or Path(__file__).parent.parent / "config" / "vector_stores.json"
21
  self.vector_stores = {}
22
  self.latest_versions = {}
23
+ self.descriptions = {}
24
  self.load_config()
25
+ # Initialize assistant wrapper for vector store searches
26
+ self.assistant_wrapper = VectorStoreAssistantWrapper(client)
27
 
28
  def load_config(self):
29
  """Load vector store configuration from file."""
 
36
  config = json.load(f)
37
  self.vector_stores = config.get('vector_stores', {})
38
  self.latest_versions = config.get('latest_versions', {})
39
+ self.descriptions = config.get('descriptions', {})
40
  logger.info(f"Loaded {len(self.vector_stores)} vector stores from config")
41
  except Exception as e:
42
  logger.error(f"Error loading vector store config: {e}")
 
65
  return []
66
 
67
  try:
68
+ # Get description for better context
69
+ description = self.descriptions.get(store_name, store_name)
70
 
71
+ # Use assistant wrapper for search
72
+ results = self.assistant_wrapper.search_vector_store(
73
+ vector_store_id=store_id,
74
+ store_name=description,
75
+ query=query,
76
+ max_results=max_results
77
  )
78
 
79
+ return results
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
80
 
81
  except Exception as e:
82
  logger.error(f"Error querying vector store '{store_name}': {e}")
 
147
  for i, result in enumerate(general_results, 1):
148
  formatted.append(f"{i}. {result.get('quote', result.get('text', ''))}")
149
 
150
+ return "\n".join(formatted)
151
+
152
+ def cleanup(self):
153
+ """Cleanup any resources (like temporary assistants)."""
154
+ if hasattr(self, 'assistant_wrapper'):
155
+ self.assistant_wrapper.cleanup_assistants()
config/openai_config.json ADDED
@@ -0,0 +1,37 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "models": {
3
+ "gpt-4o": {
4
+ "name": "GPT-4.1",
5
+ "description": "Most capable model",
6
+ "max_tokens": 128000,
7
+ "input_cost": 2.5,
8
+ "output_cost": 10.0
9
+ },
10
+ "gpt-4o-mini": {
11
+ "name": "GPT-4.1 Mini",
12
+ "description": "Affordable and intelligent",
13
+ "max_tokens": 128000,
14
+ "input_cost": 0.15,
15
+ "output_cost": 0.6
16
+ },
17
+ "gpt-4o-nano": {
18
+ "name": "GPT-4.1 Nano",
19
+ "description": "Fastest model",
20
+ "max_tokens": 128000,
21
+ "input_cost": 0.05,
22
+ "output_cost": 0.2
23
+ },
24
+ "o4-mini": {
25
+ "name": "O4 Mini",
26
+ "description": "Advanced reasoning",
27
+ "max_tokens": 128000,
28
+ "input_cost": 1.0,
29
+ "output_cost": 4.0
30
+ }
31
+ },
32
+ "default_model": "gpt-4o",
33
+ "temperature": 0.7,
34
+ "max_completion_tokens": 4000,
35
+ "chunk_size": 1000,
36
+ "max_chunks": 10
37
+ }
config/vector_stores.json ADDED
@@ -0,0 +1,23 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "vector_stores": {
3
+ "harmony_1_2": "vs_686db44dee9481918ded3a96e0fe2eb3",
4
+ "harmony_1_5": "vs_686db4581f14819183d14ecd6af34d48",
5
+ "harmony_1_6": "vs_686db462ef68819182bf27dd33168855",
6
+ "harmony_1_8": "vs_686db46d242881918505a7d9659fce06",
7
+ "chorus_1_1": "vs_686db47b2ee8819194c6d516766c0833"
8
+ },
9
+ "descriptions": {
10
+ "harmony_1_2": "Documentation for Harmony version 1.2",
11
+ "harmony_1_5": "Documentation for Harmony version 1.5",
12
+ "harmony_1_6": "Documentation for Harmony version 1.6",
13
+ "harmony_1_8": "Documentation for Harmony version 1.8",
14
+ "chorus_1_1": "Documentation for Chorus version 1.1"
15
+ },
16
+ "latest_versions": {
17
+ "harmony": "1.8",
18
+ "chorus": "1.1"
19
+ },
20
+ "created_at": "2025-07-08T19:15:09.549656",
21
+ "chunk_size": 1000,
22
+ "max_chunks": 10
23
+ }
frontend/__init__.py ADDED
@@ -0,0 +1 @@
 
 
1
+ # Frontend package
frontend/gradio_app.py ADDED
@@ -0,0 +1,281 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """
2
+ Gradio Frontend for OpenAI Chatbot with Multi-Vector Store Support
3
+ """
4
+
5
+ import gradio as gr
6
+ import os
7
+ import json
8
+ import logging
9
+ from typing import Dict, List, Tuple, Optional
10
+ from pathlib import Path
11
+ import time
12
+
13
+ # Add parent directory to path for imports
14
+ import sys
15
+ sys.path.append(str(Path(__file__).parent.parent))
16
+
17
+ from backend.chatbot_backend import ChatbotBackend
18
+
19
+ logging.basicConfig(level=logging.INFO)
20
+ logger = logging.getLogger(__name__)
21
+
22
+
23
+ class GradioApp:
24
+ def __init__(self):
25
+ """Initialize the Gradio application."""
26
+ self.chatbot = ChatbotBackend()
27
+ self.current_usage = {}
28
+
29
+ def get_version_choices(self) -> List[str]:
30
+ """Get formatted version choices for dropdown."""
31
+ versions = self.chatbot.get_available_versions()
32
+ choices = []
33
+
34
+ # Add Harmony versions
35
+ for version in versions.get("harmony", []):
36
+ choices.append(f"Harmony {version}")
37
+
38
+ # Add Chorus versions
39
+ for version in versions.get("chorus", []):
40
+ choices.append(f"Chorus {version}")
41
+
42
+ # Set default to latest Harmony
43
+ if choices:
44
+ latest_harmony = f"Harmony {self.chatbot.vector_store_manager.get_latest_version('harmony')}"
45
+ if latest_harmony in choices:
46
+ return choices, latest_harmony
47
+
48
+ return choices, choices[0] if choices else "Harmony 1.8"
49
+
50
+ def get_model_choices(self) -> List[str]:
51
+ """Get model choices for dropdown."""
52
+ models = self.chatbot.get_available_models()
53
+ choices = []
54
+
55
+ for model_id, model_info in models.items():
56
+ choices.append(f"{model_info['name']} ({model_id})")
57
+
58
+ return choices
59
+
60
+ def parse_version_selection(self, selection: str) -> Tuple[str, str]:
61
+ """Parse version selection into product and version."""
62
+ parts = selection.split(" ", 1)
63
+ if len(parts) == 2:
64
+ return parts[0].lower(), parts[1]
65
+ return "harmony", "1.8" # Default
66
+
67
+ def parse_model_selection(self, selection: str) -> str:
68
+ """Extract model ID from selection."""
69
+ # Extract model ID from parentheses
70
+ if "(" in selection and ")" in selection:
71
+ return selection.split("(")[1].split(")")[0]
72
+ return "gpt-4o" # Default
73
+
74
+ def format_usage_info(self, usage: Dict) -> str:
75
+ """Format usage information for display."""
76
+ if not usage:
77
+ return ""
78
+
79
+ info = []
80
+
81
+ # Token usage
82
+ if "usage" in usage:
83
+ tokens = usage["usage"]
84
+ info.append(f"**Tokens**: Input: {tokens['input_tokens']:,} | Output: {tokens['output_tokens']:,} | Total: {tokens['total_tokens']:,}")
85
+
86
+ # Cost
87
+ if "cost" in usage:
88
+ cost = usage["cost"]
89
+ info.append(f"**Cost**: Input: ${cost['input']:.4f} | Output: ${cost['output']:.4f} | Total: ${cost['total']:.4f}")
90
+
91
+ # Response time
92
+ if "response_time" in usage:
93
+ info.append(f"**Response Time**: {usage['response_time']:.2f}s")
94
+
95
+ # Model and version
96
+ if "model" in usage:
97
+ info.append(f"**Model**: {usage['model']}")
98
+
99
+ if "version_context" in usage:
100
+ info.append(f"**Context**: {usage['version_context']}")
101
+
102
+ return "\n\n".join(info)
103
+
104
+ def stream_response(self, message: str, history: List[List[str]],
105
+ version: str, model: str, custom_prompt: str,
106
+ temperature: float, max_tokens: int) -> Tuple[str, str]:
107
+ """Stream response from the chatbot."""
108
+ try:
109
+ # Parse selections
110
+ product, version_num = self.parse_version_selection(version)
111
+ model_id = self.parse_model_selection(model)
112
+
113
+ # Initialize response
114
+ response = ""
115
+
116
+ # Stream from backend
117
+ for chunk in self.chatbot.query_with_version(
118
+ query=message,
119
+ product=product,
120
+ version=version_num,
121
+ custom_prompt=custom_prompt if custom_prompt.strip() else None,
122
+ model=model_id,
123
+ temperature=temperature,
124
+ max_tokens=max_tokens
125
+ ):
126
+ if chunk["type"] == "content":
127
+ response += chunk["content"]
128
+ yield response, ""
129
+
130
+ elif chunk["type"] == "metadata":
131
+ # Store usage information
132
+ self.current_usage = chunk
133
+ usage_info = self.format_usage_info(chunk)
134
+ yield response, usage_info
135
+
136
+ elif chunk["type"] == "error":
137
+ error_msg = f"\n\n❌ Error: {chunk['error']}"
138
+ yield response + error_msg, ""
139
+
140
+ except Exception as e:
141
+ logger.error(f"Error in stream_response: {str(e)}")
142
+ yield f"❌ Error: {str(e)}", ""
143
+
144
+ def create_interface(self) -> gr.Blocks:
145
+ """Create the Gradio interface."""
146
+ version_choices, default_version = self.get_version_choices()
147
+ model_choices = self.get_model_choices()
148
+
149
+ with gr.Blocks(title="OpenAI Chatbot - Multi-Version RAG") as interface:
150
+ gr.Markdown("# OpenAI Chatbot with Version-Specific Documentation")
151
+ gr.Markdown("Ask questions about Harmony or Chorus products. The AI will search version-specific documentation and can use tools to find more information.")
152
+
153
+ with gr.Row():
154
+ with gr.Column(scale=3):
155
+ chatbot = gr.Chatbot(
156
+ height=500,
157
+ show_label=False,
158
+ elem_id="chatbot"
159
+ )
160
+
161
+ with gr.Row():
162
+ msg = gr.Textbox(
163
+ label="Your Question",
164
+ placeholder="Ask about features, installation, configuration...",
165
+ lines=2,
166
+ scale=4
167
+ )
168
+ submit = gr.Button("Send", variant="primary", scale=1)
169
+
170
+ usage_info = gr.Markdown(label="Usage Information")
171
+
172
+ with gr.Column(scale=1):
173
+ version_dropdown = gr.Dropdown(
174
+ choices=version_choices,
175
+ value=default_version,
176
+ label="Product Version",
177
+ info="Select the product version for context"
178
+ )
179
+
180
+ model_dropdown = gr.Dropdown(
181
+ choices=model_choices,
182
+ value=model_choices[0] if model_choices else "GPT-4.1 (gpt-4o)",
183
+ label="Model",
184
+ info="Select the AI model"
185
+ )
186
+
187
+ with gr.Accordion("Advanced Settings", open=False):
188
+ temperature = gr.Slider(
189
+ minimum=0,
190
+ maximum=1,
191
+ value=0.7,
192
+ step=0.1,
193
+ label="Temperature",
194
+ info="Higher = more creative, Lower = more focused"
195
+ )
196
+
197
+ max_tokens = gr.Slider(
198
+ minimum=100,
199
+ maximum=8000,
200
+ value=4000,
201
+ step=100,
202
+ label="Max Tokens",
203
+ info="Maximum response length"
204
+ )
205
+
206
+ custom_prompt = gr.Textbox(
207
+ label="Custom System Prompt",
208
+ placeholder="Optional: Add custom instructions for the AI",
209
+ lines=3
210
+ )
211
+
212
+ with gr.Accordion("Available Tools", open=True):
213
+ gr.Markdown("""
214
+ The AI has access to:
215
+ - **Vector Search**: Search any version's documentation
216
+ - **Document Reader**: Read specific pages or table of contents
217
+
218
+ The AI will use these tools automatically when needed.
219
+ """)
220
+
221
+ clear = gr.Button("Clear Conversation")
222
+
223
+ # Examples
224
+ gr.Examples(
225
+ examples=[
226
+ ["How do I install Harmony on Windows?"],
227
+ ["What are the new features in this version?"],
228
+ ["How do I configure SSL certificates?"],
229
+ ["What are the system requirements?"],
230
+ ["How do I troubleshoot connection issues?"]
231
+ ],
232
+ inputs=msg
233
+ )
234
+
235
+ # Event handlers
236
+ def user_submit(message, history):
237
+ return "", history + [[message, None]]
238
+
239
+ def bot_response(history, version, model, custom_prompt, temperature, max_tokens):
240
+ if not history or not history[-1][0]:
241
+ yield history, ""
242
+ return
243
+
244
+ user_message = history[-1][0]
245
+ history[-1][1] = ""
246
+
247
+ for response, usage in self.stream_response(
248
+ user_message, history[:-1], version, model,
249
+ custom_prompt, temperature, max_tokens
250
+ ):
251
+ history[-1][1] = response
252
+ yield history, usage
253
+
254
+ # Connect events
255
+ msg.submit(user_submit, [msg, chatbot], [msg, chatbot], queue=False).then(
256
+ bot_response,
257
+ [chatbot, version_dropdown, model_dropdown, custom_prompt, temperature, max_tokens],
258
+ [chatbot, usage_info]
259
+ )
260
+
261
+ submit.click(user_submit, [msg, chatbot], [msg, chatbot], queue=False).then(
262
+ bot_response,
263
+ [chatbot, version_dropdown, model_dropdown, custom_prompt, temperature, max_tokens],
264
+ [chatbot, usage_info]
265
+ )
266
+
267
+ clear.click(lambda: ([], ""), outputs=[chatbot, usage_info])
268
+
269
+ return interface
270
+
271
+
272
+ def create_gradio_interface() -> gr.Blocks:
273
+ """Create and return the Gradio interface."""
274
+ app = GradioApp()
275
+ return app.create_interface()
276
+
277
+
278
+ if __name__ == "__main__":
279
+ # For local testing
280
+ interface = create_gradio_interface()
281
+ interface.launch(debug=True)
pages/Chorus_R1.1_QuickStartGuide_TOC.txt ADDED
@@ -0,0 +1,32 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ TABLE OF CONTENTS
2
+ Document: Chorus R1.1 Quick Start Guide
3
+ Total Pages: 24
4
+ Generated from: Chorus R1.1 Quick Start Guide.pdf
5
+ ==================================================
6
+
7
+ 1 Objective - Page 4
8
+ 2 Chorus AP - Page 5
9
+ 2.1 Brief Introduction - Page 5
10
+ 3 Quick Start Guide - Page 7
11
+ 3.1 Prerequisites - Page 7
12
+ 3.1.1 Chorus Cloud Account - Page 7
13
+ 3.1.2 Chorus Device - Page 8
14
+ 3.2 Quick Start Steps - Page 9
15
+ 3.2.1 Confirm 5G service configuration - Page 9
16
+ 3.2.2 Add Device - Page 9
17
+ 3.2.3 Create Client Credentials - Page 11
18
+ 3.2.4 IP address for Chorus Device - Page 13
19
+ 3.2.5 Configure IP address Pool for UE - Page 14
20
+ 3.2.6 Connect to Internet - Page 15
21
+ 3.2.7 Power On - Page 15
22
+ 3.2.8 Device Status - Page 15
23
+ 3.2.9 Connect UE/Clients - Page 16
24
+ 3.2.10 Using Customized Zone and DNN - Page 17
25
+ 3.2.10.1 Create Zone - Page 17
26
+ 3.2.10.2 Create DNN - Page 18
27
+ 4 Troubleshooting - Page 20
28
+ 4.1 Chorus Device Connection Failure - Page 20
29
+ 4.2 UE Connection Failure - Page 20
30
+ Appendix 1 Glossary - Page 21
31
+ Appendix 2 DHCP Requirement - Page 23
32
+ Appendix 3 Concept of Zone - Page 23
pages/Chorus_R1.1_QuickStartGuide_page_001.txt ADDED
@@ -0,0 +1,8 @@
 
 
 
 
 
 
 
 
 
1
+ Page 1
2
+ Document: Chorus R1.1 Quick Start Guide
3
+ ==================================================
4
+
5
+ Ataya Proprietary and Confidential 1 CHORUS QUICK START GUIDE
6
+
7
+ Chorus Release 1.1
8
+ Quick Start Guide
pages/Chorus_R1.1_QuickStartGuide_page_002.txt ADDED
@@ -0,0 +1,36 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ Page 2
2
+ Document: Chorus R1.1 Quick Start Guide
3
+ ==================================================
4
+
5
+ Ataya Proprietary and Confidential 2 CHORUS QUICK START GUIDE
6
+ Table of Contents
7
+
8
+ 1 Objective ................................ ................................ ................................ ................................ .................... 4
9
+ 2 Chorus AP ................................ ................................ ................................ ................................ ................... 5
10
+ 2.1 Brief Introduction ................................ ................................ ................................ ............................... 5
11
+ 3 Quick Start Guide ................................ ................................ ................................ ................................ ....... 7
12
+ 3.1 Prerequisites ................................ ................................ ................................ ................................ ...... 7
13
+ 3.1.1 Chorus Cloud Account ................................ ................................ ................................ ................ 7
14
+ 3.1.2 Chorus Device ................................ ................................ ................................ ............................ 8
15
+ 3.2 Quick Start Steps ................................ ................................ ................................ ................................ 9
16
+ 3.2.1 Confirm 5G service configuration ................................ ................................ .............................. 9
17
+ 3.2.2 Add Device ................................ ................................ ................................ ................................ . 9
18
+ 3.2.3 Create Client Credentials ................................ ................................ ................................ ......... 11
19
+ 3.2.4 IP address for Chorus Device ................................ ................................ ................................ ... 13
20
+ 3.2.5 Configure IP address Pool for UE ................................ ................................ ............................. 14
21
+ 3.2.6 Connect to Internet ................................ ................................ ................................ .................. 15
22
+ 3.2.7 Power On ................................ ................................ ................................ ................................ .. 15
23
+ 3.2.8 Device Status ................................ ................................ ................................ ............................ 15
24
+ 3.2.9 Connect UE/Clients ................................ ................................ ................................ .................. 16
25
+ 3.2.10 Using Customized Zone and DNN ................................ ................................ ............................ 17
26
+ 3.2.10.1 Create Zone ................................ ................................ ................................ ...................... 17
27
+ 3.2.10.2 Create DNN ................................ ................................ ................................ ...................... 18
28
+ 4 Troubleshooting ................................ ................................ ................................ ................................ ....... 20
29
+ 4.1 Chorus Device Connection Failure ................................ ................................ ................................ ... 20
30
+ 4.2 UE Connection Failure ................................ ................................ ................................ ...................... 20
31
+ Appendix 1 Glossary ................................ ................................ ................................ ................................ .... 21
32
+ Appendix 2 DHCP Requirement ................................ ................................ ................................ .................. 23
33
+ Appendix 3 Concept of Zone ................................ ................................ ................................ ....................... 23
34
+
35
+ Table of Figures
36
+ Figure 1 Chorus Architecture ................................ ................................ ................................ ............................. 6
pages/Chorus_R1.1_QuickStartGuide_page_003.txt ADDED
@@ -0,0 +1,28 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ Page 3
2
+ Document: Chorus R1.1 Quick Start Guide
3
+ ==================================================
4
+
5
+ Ataya Proprietary and Confidential 3 CHORUS QUICK START GUIDE
6
+ Figure 2 Chorus invitation mail ................................ ................................ ................................ .......................... 7
7
+ Figure 3 Chorus first login password setup ................................ ................................ ................................ ........ 8
8
+ Figure 4 Chorus main page ................................ ................................ ................................ ................................ 8
9
+ Figure 5 Service Configuration ................................ ................................ ................................ ........................... 9
10
+ Figure 6 Add Chorus Device ................................ ................................ ................................ ............................. 10
11
+ figure 7 Chorus Device configuration ................................ ................................ ................................ ............... 10
12
+ Figure 8 Device Serial Number and MAC information ................................ ................................ ..................... 10
13
+ Figure 9 Devices list shows successfully created Chorus device ................................ ................................ ...... 11
14
+ Figure 10 Upload / Fetch Client Credentials ................................ ................................ ................................ .... 11
15
+ Figure 11 A single 5G client credential configuration ................................ ................................ ...................... 12
16
+ Figure 12 Configure the policies for the client ................................ ................................ ................................ . 12
17
+ Figure 13 Chorus Structure ................................ ................................ ................................ .............................. 13
18
+ Figure 14 Configure UE IP Pools ................................ ................................ ................................ ....................... 14
19
+ Figure 15 UE IP address ................................ ................................ ................................ ................................ .... 14
20
+ Figure 16 UE gets IP via external DHCP server ................................ ................................ ................................ . 15
21
+ Figure 17 Chorus Device status ................................ ................................ ................................ ........................ 15
22
+ Figure 18 Chorus Device Details ................................ ................................ ................................ ...................... 16
23
+ Figure 19 Active Clients shown on Cloud Dashboard ................................ ................................ ...................... 17
24
+ Figure 20 Add a New Zone ................................ ................................ ................................ ............................... 17
25
+ Figure 21 Input Zone Detail ................................ ................................ ................................ .............................. 18
26
+ Figure 22 Setup DNN in Chorus ................................ ................................ ................................ ....................... 19
27
+ Figure 23 Chorus Zone UE can reach another UE on different Chorus AP in Zone ................................ ....... 24
28
+ Figure 24 Chorus Zone Chorus Zone with source NAT ................................ ................................ .................. 24
pages/Chorus_R1.1_QuickStartGuide_page_004.txt ADDED
@@ -0,0 +1,12 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ Page 4
2
+ Document: Chorus R1.1 Quick Start Guide
3
+ ==================================================
4
+
5
+ Ataya Proprietary and Confidential 4 CHORUS QUICK START GUIDE
6
+ Revision History
7
+ Version Contents Date
8
+ 1.0 Initial Release d Version April 10 , 2025
9
+
10
+ 1 Objective
11
+ This document describe s the quick start steps of Ataya Chorus and the usage of Ataya Chorus after it is
12
+ installed .
pages/Chorus_R1.1_QuickStartGuide_page_005.txt ADDED
@@ -0,0 +1,32 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ Page 5
2
+ Document: Chorus R1.1 Quick Start Guide
3
+ ==================================================
4
+
5
+ Ataya Proprietary and Confidential 5 CHORUS QUICK START GUIDE
6
+ 2 Chorus AP
7
+ 2.1 Brief Introduction
8
+ Private 5G solutions remain complex for small to medium -sized deployments. On -site installation of
9
+ hardware and software for the 5G Core and network integration into existing systems are challenging
10
+ tasks. Additionally, monitoring, troubleshooting, software upgrades, and other maintenance activities add
11
+ to this complexity .
12
+ In many use cases, such as retail stores, gas stations, oil and gas operations, smart agriculture, and
13
+ emergency response systems, customers find the current 5G solutions overly burdensome. They are
14
+ looking for a simpler solution that reduces setup time an d requires minimal on -site configuration. They
15
+ need a plug -and-play system where gNBs connect to the internet and provide instant 5G service.
16
+ It is essential to reduce operational complexity with a centralized cloud -managed dashboard for all remote
17
+ sites and to lower costs by eliminating the need for servers, switches, and other hardware.
18
+ Chorus AP is the perfect answer for this concern . The key futures of Chorus are listed as follows :
19
+ Deployment simplicity:
20
+ Experience true zero -touch deployment just plug in the Chorus AP, and it works.
21
+ Data stays on -premises:
22
+ The Harmony data plane is contained within the Chorus AP.
23
+ Simplified device onboarding:
24
+ The multi -tenanted control plane is hosted in the cloud and automatically connects to the Chorus
25
+ AP on boot -up.
26
+ Device onboarding is managed through a cloud management dashboard.
27
+ The target use cases are listed as follows :
28
+ Enable quick point -to-point 5G connections in oil & gas, factory shop floors, vision -based use cases,
29
+ and more.
30
+ Enterprise customers are looking to augment Wi -Fi with 5G, such as in parking lots or airports for
31
+ cameras, or for private networks in venues and stadiums.
32
+ Ideal for small deployments of 1 to 5 nodes.
pages/Chorus_R1.1_QuickStartGuide_page_006.txt ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
 
1
+ Page 6
2
+ Document: Chorus R1.1 Quick Start Guide
3
+ ==================================================
4
+
5
+ Ataya Proprietary and Confidential 6 CHORUS QUICK START GUIDE
6
+
7
+ Figure 1 Chorus Architecture
pages/Chorus_R1.1_QuickStartGuide_page_007.txt ADDED
@@ -0,0 +1,17 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ Page 7
2
+ Document: Chorus R1.1 Quick Start Guide
3
+ ==================================================
4
+
5
+ Ataya Proprietary and Confidential 7 CHORUS QUICK START GUIDE
6
+ 3 Quick Start Guide
7
+ 3.1 Prerequisites
8
+ Chorus is designed for convenient deployment . There are only 2 prerequisites:
9
+ Chorus Cloud account
10
+ Chorus Device
11
+
12
+ 3.1.1 Chorus Cloud Account
13
+ To activate your account, check the invitation mail from Ataya Chorus . Click the ACCEPT INVITATION button
14
+ and you will be redirected to the Chorus page . Then you will be required to set a password with complexity.
15
+ Examples are shown as follows :
16
+
17
+ Figure 2 Chorus invitation mail
pages/Chorus_R1.1_QuickStartGuide_page_008.txt ADDED
@@ -0,0 +1,14 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ Page 8
2
+ Document: Chorus R1.1 Quick Start Guide
3
+ ==================================================
4
+
5
+ Ataya Proprietary and Confidential 8 CHORUS QUICK START GUIDE
6
+
7
+ Figure 3 Chorus first login password setup
8
+ Then you should see the main page of Chorus with your successfully created account. Examples are as
9
+ follows :
10
+
11
+ Figure 4 Chorus main page
12
+ 3.1.2 Chorus Device
13
+ The Chorus Device refers to the hardware that had been integrated with Chorus Agent , Chorus Data Plane
14
+ and the gNB.
pages/Chorus_R1.1_QuickStartGuide_page_009.txt ADDED
@@ -0,0 +1,20 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ Page 9
2
+ Document: Chorus R1.1 Quick Start Guide
3
+ ==================================================
4
+
5
+ Ataya Proprietary and Confidential 9 CHORUS QUICK START GUIDE
6
+ 3.2 Quick Start Steps
7
+ 3.2.1 Confirm 5G service configuration
8
+ There are four main configuration sections related to 5G services: Traffic Related Configuration , 5G Related
9
+ Configuration, Network Configuration and Device Time Synchronization . Chorus comes with a default set
10
+ of configurations, but you need to confirm those mandatory parameters (the one with a red asterisk before
11
+ column name) such as PLMN (MCC and MNC), Slice type and ID, Tracking Area range. Confirm these
12
+ configurations by cli cking Organization on the top menu bar and hit the Service Configuration on the left
13
+ side-menu. Examples are shown below:
14
+
15
+ Figure 5 Service Configuration
16
+ 3.2.2 Add Device
17
+ After all the prerequisites mentioned in 3.1 are ready, the first thing to do is to register Chorus Device and
18
+ configure related setting on Chorus Cloud (https://dashboard -chorus.ataya.io/dashboard ). Log in with your
19
+ Chorus account and click the Device s on top menu bar and click +Add Device button on the top -right. And
20
+ input the device name, MAC address and serial number. Examples are as follows :
pages/Chorus_R1.1_QuickStartGuide_page_010.txt ADDED
@@ -0,0 +1,19 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ Page 10
2
+ Document: Chorus R1.1 Quick Start Guide
3
+ ==================================================
4
+
5
+ Ataya Proprietary and Confidential 10 CHORUS QUICK START GUIDE
6
+
7
+ Figure 6 Add Chorus Device
8
+
9
+ figure 7 Chorus Device configuration
10
+ Device name: Chorus Cell Name
11
+ MAC address : MAC address of Chorus Cell. Example FC:B2D6:F6:D6:F7
12
+ Serial Number :12 digi t of Serial Number for Chorus Cell, Example SC280600079
13
+ Zone: Choose which Zone this device belongs to. Default: {Your Organization Name }. Refer
14
+ to Appendix 3 for more details about Zone .
15
+
16
+ You can find the Serial Number and MAC address information on the Chorus devices, examples as
17
+ following:
18
+
19
+ Figure 8 Device Serial Number and MAC information
pages/Chorus_R1.1_QuickStartGuide_page_011.txt ADDED
@@ -0,0 +1,22 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ Page 11
2
+ Document: Chorus R1.1 Quick Start Guide
3
+ ==================================================
4
+
5
+ Ataya Proprietary and Confidential 11 CHORUS QUICK START GUIDE
6
+
7
+ If Chorus device is successfully created, you will see your device on the Devices list, as shown below:
8
+
9
+ Figure 9 Devices list shows successfully created Chorus device
10
+ Please ensure that your license is valid and within the expiration period; otherwise, Chorus will not
11
+ establish the tunnel between the Chorus AP and the cloud core network.
12
+
13
+ 3.2.3 Create Client Credentials
14
+ To configure new 5G clients, click on Clients on the top menu bar. Then you can click the + Credentials
15
+ button on the top -right and choose either Upload / Fetch Client Credentials (.csv) to upload a list of client
16
+ credentials in CSV format or Enter Credential Info to enter a single client credential.
17
+
18
+ To upload a CSV file with client credentials, click the sample CSV file to download a sample file first to make
19
+ sure your CSV file contains all needed columns.
20
+
21
+ Figure 10 Upload / Fetch Client Credentials
22
+ If you select Enter Credential Info , you can enter a single client credential configuration:
pages/Chorus_R1.1_QuickStartGuide_page_012.txt ADDED
@@ -0,0 +1,20 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ Page 12
2
+ Document: Chorus R1.1 Quick Start Guide
3
+ ==================================================
4
+
5
+ Ataya Proprietary and Confidential 12 CHORUS QUICK START GUIDE
6
+
7
+ Figure 11 A single 5G client credential configuration
8
+ Subscriber Name: for display purposes
9
+ IMSI/SUPI: 5G subscriber identity
10
+ Key, OPC: the credential of the subscriber
11
+ Status: The client can be in assigned or not -assigned state. If it is in not-assigned state , Chorus will
12
+ deny this 5G client access .
13
+
14
+ For the Access Mobility Data section, please fill in your configuration as below:
15
+
16
+ Figure 12 Configure the policies for the client
17
+ You can apply policy about this client as follows :
18
+ Static IP address
19
+ You can configure a static IP address for the 5G UE but must be out of the configured UE IP range
20
+ pool of the DNN (those IP addresses could be assigned to other UEs).
pages/Chorus_R1.1_QuickStartGuide_page_013.txt ADDED
@@ -0,0 +1,27 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ Page 13
2
+ Document: Chorus R1.1 Quick Start Guide
3
+ ==================================================
4
+
5
+ Ataya Proprietary and Confidential 13 CHORUS QUICK START GUIDE
6
+ Bandwidth Limit
7
+ To limit maximum rates (UE AMBR) , update the AMBR Uplink and AMBR Downlink to the desired
8
+ values for the specific UE. This value will take precedence over a global UE AMBR in Service
9
+ Configuration for this specific UE.
10
+ IMEI Lock
11
+ Enabling this option will restrict th e enter SIM information for the specific UE to be used only by a
12
+ device with the given IMEI .
13
+ Policy
14
+ If there are predefined policies in Harmony system, the Policy drop down menu will show the
15
+ configured policies. Note that each client can only assign one policy.
16
+
17
+ 3.2.4 IP address for Chorus Device
18
+ Chorus requires a DHCP (Dynamic Host Configuration Protocol ) serve r in yo ur Data Network. Chorus will
19
+ ask your DHCP server for two dynamic IP addresses : Mgmt -ip and N6_IP (see Appendix for DHCP
20
+ requirements). If there is a DHCP server in your Data Network, you do not need to configure it manually.
21
+
22
+ The structure of Chorus data network is shown as follows :
23
+
24
+ Figure 13 Chorus Structure
25
+ Note that if you are using a L2/L3 switch, the mode of connection between Chorus AP to your switch must
26
+ NOT be set to trunk mode. Both the Mgmt -ip and N6_IP on the Chorus AP are logical interfaces, sharing a
27
+ single physical interface.
pages/Chorus_R1.1_QuickStartGuide_page_014.txt ADDED
@@ -0,0 +1,20 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ Page 14
2
+ Document: Chorus R1.1 Quick Start Guide
3
+ ==================================================
4
+
5
+ Ataya Proprietary and Confidential 14 CHORUS QUICK START GUIDE
6
+
7
+ 3.2.5 Configure IP address Pool for UE
8
+ The IP that UE will get is determined by Zone configuration. To change this setting, click the 3 -dots icon on
9
+ the right of your Zone , hit the Edit Zone and toggle the switch of NAT.
10
+
11
+ Figure 14 Configure UE IP Pools
12
+ NAT enabled / disabled:
13
+ If NAT is enabled, UEs will share the N6 IP address for outbound network traffic. The internal UE IP
14
+ pool is 192.168.65.1 ~ 192.168.65.254 by default.
15
+ If NAT is disabled, you must ensure that the start and end IP addresses align with the Zone's subnet
16
+ (refer to Appendix 3 for details on zones and IP subnets). Additionally, verify that these IP addresses
17
+ are not assigned to other clients within the Zone. The quantity of IP addresses should correspond to
18
+ the expected number of UEs to be supported in the Zone.
19
+
20
+ Figure 15 UE IP address
pages/Chorus_R1.1_QuickStartGuide_page_015.txt ADDED
@@ -0,0 +1,27 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ Page 15
2
+ Document: Chorus R1.1 Quick Start Guide
3
+ ==================================================
4
+
5
+ Ataya Proprietary and Confidential 15 CHORUS QUICK START GUIDE
6
+ UE uses DHCP to get an IP from external server (Beta) :
7
+ A beta feature is currently available that allows the UE to obtain an IP address from an external DHCP
8
+ server. If this feature is enabled, the UE will receive its IP address from the external DHCP server. Please
9
+ note that this setting cannot be modified once a Zone has been created. To utilize this feature, you must
10
+ create a new Zone and migrate your device to it.
11
+
12
+ Figure 16 UE gets IP via external DHCP server
13
+ 3.2.6 Connect to Internet
14
+ Connect the Chorus Device to an internet connection by using an Ethernet cable from the port labeled
15
+ Internet to switch/router in your site. Please ensure that the router provides DHCP service .
16
+
17
+ 3.2.7 Power On
18
+ After the configuration on Chorus cloud dashboard is done, connect the power supply and power on
19
+ Chorus AP and wait for the initialization (after initialization it will reboot automatically ). Once the reboot is
20
+ done and the service is up, you can check the status of Chorus Device by its LED indicators.
21
+
22
+ 3.2.8 Device Status
23
+ You can check the status of the Chorus device in Devices tab. You can hit the Details page to get additional
24
+ information about the device and its status. If device is connected it should show something like this
25
+
26
+ Figure 17 Chorus Device status
27
+ And on clicking the details you should see all three sections as green
pages/Chorus_R1.1_QuickStartGuide_page_016.txt ADDED
@@ -0,0 +1,11 @@
 
 
 
 
 
 
 
 
 
 
 
 
1
+ Page 16
2
+ Document: Chorus R1.1 Quick Start Guide
3
+ ==================================================
4
+
5
+ Ataya Proprietary and Confidential 16 CHORUS QUICK START GUIDE
6
+
7
+ Figure 18 Chorus Device Details
8
+
9
+ 3.2.9 Connect UE /Clients
10
+ Now the Chorus AP is ready to work. Y ou can turn on your client . Check the status of your client in the
11
+ Chorus cloud dashboard in the Insights & Analytics ->Client Statistics tab.
pages/Chorus_R1.1_QuickStartGuide_page_017.txt ADDED
@@ -0,0 +1,17 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ Page 17
2
+ Document: Chorus R1.1 Quick Start Guide
3
+ ==================================================
4
+
5
+ Ataya Proprietary and Confidential 17 CHORUS QUICK START GUIDE
6
+
7
+ Figure 19 Active Clients shown on Cloud Dashboard
8
+ 3.2.10 Using Customized Zone and DNN
9
+ Chorus comes with default Zone : {your organization name} and default DNN : internet . If you want to
10
+ change Zone name to your preference or change DNN name, you can follow the instruction below:
11
+
12
+ 3.2.10.1 Create Zone
13
+ A Zone in Chorus represents a broad label for a specific area or region. To Create a new Zone, first click the
14
+ Devices on the top menu bar, then click the Gear button on the top -right, as follows :
15
+
16
+ Figure 20 Add a New Zone
17
+ And input your zone details as following figure:
pages/Chorus_R1.1_QuickStartGuide_page_018.txt ADDED
@@ -0,0 +1,20 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ Page 18
2
+ Document: Chorus R1.1 Quick Start Guide
3
+ ==================================================
4
+
5
+ Ataya Proprietary and Confidential 18 CHORUS QUICK START GUIDE
6
+
7
+ Figure 21 Input Zone Detail
8
+ Zone Name: Provide a name
9
+ Zone Description: Provide a description
10
+ NAT (Network address translation) : If enabled NAT, The UE will share N6 IP address for outbound
11
+ network and IP range for UE will setting 192.168.65.1 -192.168.65.254 by default.
12
+ IP Range : IP pool for UE: IP range for UE. This pool shall R eserve a range of IP address f rom DHCP
13
+ server .
14
+ DHCP from external server (Beta): if this is enabled, UE will get an IP from an external DHCP
15
+ server.
16
+
17
+ 3.2.10.2 Create DNN
18
+ Select DNN configuration on the left sidebar . Chorus System comes with a default DNN called internet
19
+ and ready to be used. But if you want to add a new DNN, you can click the +DNN Configuration on the top -
20
+ right and input the DNN name, 5QI and ARP as you desire. Examples are shown as follows .
pages/Chorus_R1.1_QuickStartGuide_page_019.txt ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
 
1
+ Page 19
2
+ Document: Chorus R1.1 Quick Start Guide
3
+ ==================================================
4
+
5
+ Ataya Proprietary and Confidential 19 CHORUS QUICK START GUIDE
6
+
7
+ Figure 22 Setup DNN in Chorus
pages/Chorus_R1.1_QuickStartGuide_page_020.txt ADDED
@@ -0,0 +1,17 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ Page 20
2
+ Document: Chorus R1.1 Quick Start Guide
3
+ ==================================================
4
+
5
+ Ataya Proprietary and Confidential 20 CHORUS QUICK START GUIDE
6
+ 4 Trouble shoot ing
7
+ 4.1 Chorus Device Connection Failure
8
+ Please check if Device has been configured (check MAC and S/N)
9
+ Please check if device has license
10
+ Please check internet connectivity
11
+ 4.2 UE Connection Failure
12
+ Please check if Chorus device is active/connected (Devices tab)
13
+ Please check if SIM used in UE is configured in Chorus Cloud (clients tab)
14
+ Please check if DNN configured in UE matches that in Chorus Cloud (Organization ->DNN
15
+ configuration)
16
+ If NAT is disabled, please check if IP address assigned to UE matches your Zone IP (Devices ->Edit
17
+ Zone)
pages/Chorus_R1.1_QuickStartGuide_page_021.txt ADDED
@@ -0,0 +1,27 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ Page 21
2
+ Document: Chorus R1.1 Quick Start Guide
3
+ ==================================================
4
+
5
+ Ataya Proprietary and Confidential 21 CHORUS QUICK START GUIDE
6
+ Appendix 1 Glossary
7
+ Terminology Definition
8
+ 5GC 5G Core network
9
+ 5QI 5G QoS Identifier
10
+ AKA Authentication & Key Management ( e.g., 5G-AKA)
11
+ AMBR Aggregate Maximum Bit Rate
12
+ AMF Access & mobility Management Function
13
+ ARP Address Resolution Protocol, or
14
+ Allocation & Retention Priority
15
+ AUSF Authentication Server Function
16
+ CQI Channel Quality Indicator
17
+ CSV Comma -Separated Values file is a text file saved in a table structure format
18
+ DNN Data Network Name
19
+ DNS Domain Name System
20
+ EAP-AKA Extensible Authentication Protocol - AKA
21
+ EAP-TLS Extensible Authentication Protocol - Transport Layer Security
22
+ EMS Element Management System
23
+ gNB next Generation NodeB (the name of a 5G base station)
24
+ gNB Zone A group of gNBs; can be defined as a statistics calculation and display unit
25
+ GW Gateway
26
+ IMEI International Mobile Equipment Identity
27
+ IMSI International Mobile Subscriber Identity
pages/Chorus_R1.1_QuickStartGuide_page_022.txt ADDED
@@ -0,0 +1,30 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ Page 22
2
+ Document: Chorus R1.1 Quick Start Guide
3
+ ==================================================
4
+
5
+ Ataya Proprietary and Confidential 22 CHORUS QUICK START GUIDE
6
+ KPI Key Performance Indicator
7
+ MAD Mean Absolute Deviation
8
+ MCC Mobile Country Code
9
+ MNC Mobile Network Code
10
+ MSP Managed Service Provider
11
+ N3W Interface of UIWF for Wi-Fi/wired networks
12
+ Network A Harmony Network represents a Kubernetes cluster, is one or a group of nodes
13
+ (hosts ) running Harmony services (data, control, & management) under one
14
+ configuration .
15
+ Node A Node in a Kubernetes cluster runs as an instance (virtual machine) . For Harmony by
16
+ default a host has a node running on it. A node runs one or more pods in it.
17
+ Pod A Kubernetes Pod is the smallest deployable unit that can be created and managed. It
18
+ runs one or more containers. A Linux analogy for a pod is similar to a set of containers
19
+ with shared namespaces and filesystem volumes.
20
+ QoS Quality of Service
21
+ RAN Radio Access Network
22
+ RAT Radio Access Technology
23
+ SI Systems Integrator
24
+ Site A Harmony site is a location with a data plane running at the location
25
+ SMS Short Messaging Service
26
+ SMTP Simple Mail Transfer Protocol
27
+ SN or SQN Sequence Number
28
+ SSH Secure Shell protocol
29
+ SUPI Subscription Permanent Identifier
30
+ TAC Tracking Area Code
pages/Chorus_R1.1_QuickStartGuide_page_023.txt ADDED
@@ -0,0 +1,31 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ Page 23
2
+ Document: Chorus R1.1 Quick Start Guide
3
+ ==================================================
4
+
5
+ Ataya Proprietary and Confidential 23 CHORUS QUICK START GUIDE
6
+ TAI Tracking Area Identity
7
+ (PLMN + TAC)
8
+ UIWF Universal Inter -Working Function
9
+ UPF User Plane Function ; the 5G terminology for data plane
10
+ Zone (see Device Zone in section 0)
11
+
12
+ Appendix 2 DHCP Requirement
13
+ To ensure the Chorus system operates correctly , there are several requirements about the DHCP server
14
+ configuration listed as follows :
15
+ Allocate IP addresses for Mgmt and N6 based on their MAC Address
16
+ Provide subnet prefix / netmask in DHCP Offer
17
+ Provide Gateway IP address in DHCP Offer
18
+ Provide DNS server IP address in DHCP Offer
19
+ Reserve a range of IP addresses for UE (not dynamic allocated)
20
+ Appendix 3 Concept of Zone
21
+ To better manage all the Chorus APs, Ataya introduced the concept of Zones. The design of Zones allows
22
+ you to categorize and manage all your Chorus APs and control the network connectivity between them.
23
+ In general, the Chorus AP requires the customer network to enable connectivity from the Chorus AP to the
24
+ Chorus Cloud through a DHCP -assigned management IP and a network gateway. The Chorus AP will need
25
+ another DHCP -assigned data plane IP address to provide 5G UE connectivity to local, internal, and external
26
+ services.
27
+ When a Chorus zone disables data plane NAT, Chorus zone enables additional possibilities:
28
+ The Chorus zone allows services to initiate connections to a 5G UE served by a Chorus AP in the
29
+ Chorus zone.
30
+ The Chorus zone allows a 5G UE to initiate connections to a 5G UE served by another Chorus AP in
31
+ the same Chorus zone.
pages/Chorus_R1.1_QuickStartGuide_page_024.txt ADDED
@@ -0,0 +1,17 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ Page 24
2
+ Document: Chorus R1.1 Quick Start Guide
3
+ ==================================================
4
+
5
+ Ataya Proprietary and Confidential 24 CHORUS QUICK START GUIDE
6
+ To achieve these capabilities, 5G UEs are assigned IP addresses from a Chorus zone IP address pool
7
+ allocated from the subnetwork the Chorus AP is attached to. This pool should be outside of the address
8
+ pool used by the DHCP server on the subnetwork. The 5G UE will keep its assigned address when it moves
9
+ among Chorus APs in the zone.
10
+
11
+ Figure 23 Chorus Zone UE can reach another UE on different Chorus AP in Zone
12
+ When users keep the Chorus zone data plane NAT enabled, the attached 5G UEs will be assigned IP
13
+ address es caged within the Chorus AP they are attached to . In mobility handover, t he NAT caged IP
14
+ address cannot be carried to or from a Chorus AP. Services will not be able to initiate access to t hese caged
15
+ IP addresses.
16
+
17
+ Figure 24 Chorus Zone Chorus Zone with source NAT
pages/Chorus_R1.1_UserGuide_TOC.txt ADDED
@@ -0,0 +1,73 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ TABLE OF CONTENTS
2
+ Document: Chorus R1.1 User Guide
3
+ Total Pages: 70
4
+ Generated from: Chorus R1.1 User Guide.pdf
5
+ ==================================================
6
+
7
+ 1 Objective - Page 9
8
+ 2 Chorus AP - Page 10
9
+ 2.1 Brief Introduction - Page 10
10
+ 3 Prerequisites - Page 12
11
+ 3.1 Chorus Cloud Account - Page 12
12
+ 3.2 Chorus Device - Page 13
13
+ 4 Dashboard for Chorus - Page 14
14
+ 4.1 Insights & Analytics - Page 14
15
+ 4.1.1 Overview - Page 14
16
+ 4.1.2 Network Statistics - Page 15
17
+ 4.1.3 Device Statistics - Page 16
18
+ 4.1.4 Client Statistics - Page 19
19
+ 4.1.5 Alerts - Page 21
20
+ 4.2 Devices - Page 25
21
+ 4.2.1 Views for Devices - Page 25
22
+ 4.2.1.1 Types of View - Page 25
23
+ 4.2.1.2 Configure Device Location for Map View - Page 27
24
+ 4.2.1.3 Upload Indoor Site Map and Set Device Position - Page 27
25
+ 4.2.2 Manage Zone - Page 29
26
+ 4.2.2.1 Creating a New Zone - Page 29
27
+ 4.2.2.2 Edit a Zone - Page 30
28
+ 4.2.2.3 Manage Neighbor List - Page 31
29
+ 4.2.2.4 Delete a Zone - Page 32
30
+ 4.2.3 Manage Device - Page 32
31
+ 4.2.3.1 Add Device - Page 32
32
+ 4.2.3.2 Edit An existing Device - Page 34
33
+ 4.2.3.3 Manage License - Page 37
34
+ 4.2.3.4 Manage Neighbor List - Page 38
35
+ 4.2.3.5 Reboot a Device - Page 38
36
+ 4.2.3.6 Restart UPF - Page 39
37
+ 4.2.3.7 Upload Log - Page 39
38
+ 4.2.3.8 Delete Device - Page 40
39
+ 4.2.3.9 Turn On/Off Radio - Page 40
40
+ 4.2.3.10 Device Details - Page 41
41
+ 4.2.3.11 Device Events - Page 43
42
+ 4.3 Clients - Page 44
43
+ 4.3.1 Creating New Clients - Page 44
44
+ 4.3.2 Edit Clients - Page 46
45
+ 4.3.3 Assign / unassign clients - Page 47
46
+ 4.3.4 Block clients - Page 48
47
+ 4.3.5 Delete Clients - Page 49
48
+ 4.4 Policies - Page 50
49
+ 4.4.1 Set Bandwidth Limit - Page 51
50
+ 4.4.2 Enable Application Slicing - Page 51
51
+ 4.4.3 Enable IP Filtering - Page 52
52
+ 4.4.4 Enable Time Schedule - Page 53
53
+ 4.4.5 Applying a Configured Policy to a Client - Page 53
54
+ 4.4.6 Clone Policy - Page 54
55
+ 4.4.7 Set as default - Page 55
56
+ 4.4.8 View Attached Clients - Page 55
57
+ 4.4.9 Delete Policy - Page 56
58
+ 4.5 Organization - Page 56
59
+ 4.5.1 User Management - Page 56
60
+ 4.5.1.1 Inviting New User - Page 56
61
+ 4.5.1.2 Delete User - Page 57
62
+ 4.5.2 Private Key Management - Page 57
63
+ 4.5.3 Settings - Page 58
64
+ 4.5.3.1 Timezone And License - Page 58
65
+ 4.5.3.2 Alert Notifications - Page 59
66
+ 4.5.4 Service Configuration - Page 62
67
+ 4.5.5 DNN Configuration - Page 63
68
+ 4.5.6 Audit - Page 63
69
+ 4.6 Help Center - Page 64
70
+ Appendix 1 Glossary - Page 66
71
+ Appendix 2 DHCP Requirement - Page 68
72
+ Appendix 3 Concept of Zone - Page 68
73
+ Appendix 4 DHCP Server Configuration Example (isc-DHCP) - Page 70
pages/Chorus_R1.1_UserGuide_page_001.txt ADDED
@@ -0,0 +1,8 @@
 
 
 
 
 
 
 
 
 
1
+ Page 1
2
+ Document: Chorus R1.1 User Guide
3
+ ==================================================
4
+
5
+ Ataya Proprietary and Confidential 1 CHORUS USER GUIDE
6
+
7
+ Chorus Release 1.1
8
+ User Guide
pages/Chorus_R1.1_UserGuide_page_002.txt ADDED
@@ -0,0 +1,36 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ Page 2
2
+ Document: Chorus R1.1 User Guide
3
+ ==================================================
4
+
5
+ Ataya Proprietary and Confidential 2 CHORUS USER GUIDE
6
+ Table of Contents
7
+
8
+ 1 Objective ................................ ................................ ................................ ................................ .................... 9
9
+ 2 Chorus AP ................................ ................................ ................................ ................................ ................. 10
10
+ 2.1 Brief Introduction ................................ ................................ ................................ ............................. 10
11
+ 3 Prerequisites ................................ ................................ ................................ ................................ ............ 12
12
+ 3.1 Chorus Cloud Account ................................ ................................ ................................ ...................... 12
13
+ 3.2 Chorus Device ................................ ................................ ................................ ................................ .. 13
14
+ 4 Dashboard for Chorus ................................ ................................ ................................ .............................. 14
15
+ 4.1 Insights & Analytics ................................ ................................ ................................ .......................... 14
16
+ 4.1.1 Overview ................................ ................................ ................................ ................................ .. 14
17
+ 4.1.2 Network Statistics ................................ ................................ ................................ .................... 15
18
+ 4.1.3 Device Statistics ................................ ................................ ................................ ....................... 16
19
+ 4.1.4 Client Statistics ................................ ................................ ................................ ......................... 19
20
+ 4.1.5 Alerts ................................ ................................ ................................ ................................ ........ 21
21
+ 4.2 Devices ................................ ................................ ................................ ................................ ............. 25
22
+ 4.2.1 Views for Devices ................................ ................................ ................................ ..................... 25
23
+ 4.2.1.1 Types of View ................................ ................................ ................................ ....................... 25
24
+ 4.2.1.2 Configure Device Location for Map View ................................ ................................ ............ 27
25
+ 4.2.1.3 Upload Indoor Site Map and Set Device Position ................................ ................................ 27
26
+ 4.2.2 Manage Zone ................................ ................................ ................................ ........................... 29
27
+ 4.2.2.1 Creating a New Zone ................................ ................................ ................................ ............ 29
28
+ 4.2.2.2 Edit a Zone ................................ ................................ ................................ ............................ 30
29
+ 4.2.2.3 Manage Neighbor List ................................ ................................ ................................ .......... 31
30
+ 4.2.2.4 Delete a Zone ................................ ................................ ................................ ....................... 32
31
+ 4.2.3 Manage Device ................................ ................................ ................................ ......................... 32
32
+ 4.2.3.1 Add Device ................................ ................................ ................................ ........................... 32
33
+ 4.2.3.2 Edit An existing Device ................................ ................................ ................................ ......... 34
34
+ 4.2.3.3 Manage License ................................ ................................ ................................ ................... 37
35
+ 4.2.3.4 Manage Neighbor List ................................ ................................ ................................ .......... 38
36
+ 4.2.3.5 Reboot a Device ................................ ................................ ................................ ................... 38
pages/Chorus_R1.1_UserGuide_page_003.txt ADDED
@@ -0,0 +1,36 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ Page 3
2
+ Document: Chorus R1.1 User Guide
3
+ ==================================================
4
+
5
+ Ataya Proprietary and Confidential 3 CHORUS USER GUIDE
6
+ 4.2.3.6 Restart UPF ................................ ................................ ................................ ........................... 39
7
+ 4.2.3.7 Upload Log ................................ ................................ ................................ ........................... 39
8
+ 4.2.3.8 Delete Device ................................ ................................ ................................ ....................... 40
9
+ 4.2.3.9 Turn On/Off Radio ................................ ................................ ................................ ................ 40
10
+ 4.2.3.10 Device Details ................................ ................................ ................................ ................... 41
11
+ 4.2.3.11 Device Events ................................ ................................ ................................ ................... 43
12
+ 4.3 Clients ................................ ................................ ................................ ................................ ............... 44
13
+ 4.3.1 Creating New Clients ................................ ................................ ................................ ................ 44
14
+ 4.3.2 Edit Clients ................................ ................................ ................................ ............................... 46
15
+ 4.3.3 Assign / unassign clients ................................ ................................ ................................ .......... 47
16
+ 4.3.4 Block clients ................................ ................................ ................................ ............................. 48
17
+ 4.3.5 Delete Clients ................................ ................................ ................................ ........................... 49
18
+ 4.4 Policies ................................ ................................ ................................ ................................ ............. 50
19
+ 4.4.1 Set Bandwidth Limit ................................ ................................ ................................ ................. 51
20
+ 4.4.2 Enable Application Slicing ................................ ................................ ................................ ........ 51
21
+ 4.4.3 Enable IP Filtering ................................ ................................ ................................ .................... 52
22
+ 4.4.4 Enable Time Schedule ................................ ................................ ................................ .............. 53
23
+ 4.4.5 Applying a Configured Policy to a Client ................................ ................................ .................. 53
24
+ 4.4.6 Clone Policy ................................ ................................ ................................ .............................. 54
25
+ 4.4.7 Set as default ................................ ................................ ................................ ............................ 55
26
+ 4.4.8 View A ttached Clients ................................ ................................ ................................ .............. 55
27
+ 4.4.9 Delete Policy ................................ ................................ ................................ ............................. 56
28
+ 4.5 Organization ................................ ................................ ................................ ................................ ..... 56
29
+ 4.5.1 User Management ................................ ................................ ................................ ................... 56
30
+ 4.5.1.1 Inviting New User ................................ ................................ ................................ ................. 56
31
+ 4.5.1.2 Delete User ................................ ................................ ................................ .......................... 57
32
+ 4.5.2 Private Key Management ................................ ................................ ................................ ......... 57
33
+ 4.5.3 Settings ................................ ................................ ................................ ................................ ..... 58
34
+ 4.5.3.1 Timezone And License ................................ ................................ ................................ .......... 58
35
+ 4.5.3.2 Alert Notifications ................................ ................................ ................................ ................ 59
36
+ 4.5.4 Service Configuration ................................ ................................ ................................ ............... 62
pages/Chorus_R1.1_UserGuide_page_004.txt ADDED
@@ -0,0 +1,12 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ Page 4
2
+ Document: Chorus R1.1 User Guide
3
+ ==================================================
4
+
5
+ Ataya Proprietary and Confidential 4 CHORUS USER GUIDE
6
+ 4.5.5 DNN Configuration ................................ ................................ ................................ ................... 63
7
+ 4.5.6 Audit ................................ ................................ ................................ ................................ ......... 63
8
+ 4.6 Help Center ................................ ................................ ................................ ................................ ...... 64
9
+ Appendix 1 Glossary ................................ ................................ ................................ ................................ .... 66
10
+ Appendix 2 DHCP Requirement ................................ ................................ ................................ .................. 68
11
+ Appendix 3 Concept of Zone ................................ ................................ ................................ ....................... 68
12
+ Appendix 4 DHCP Server Configuration Example (isc -DHCP) ................................ ................................ ...... 70
pages/Chorus_R1.1_UserGuide_page_005.txt ADDED
@@ -0,0 +1,44 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ Page 5
2
+ Document: Chorus R1.1 User Guide
3
+ ==================================================
4
+
5
+ Ataya Proprietary and Confidential 5 CHORUS USER GUIDE
6
+ Table of Figures
7
+ Figure 1 Chorus Architecture ................................ ................................ ................................ ........................... 11
8
+ Figure 2 Chorus invitation mail ................................ ................................ ................................ ........................ 12
9
+ Figure 3 Chorus first login password setup ................................ ................................ ................................ ...... 13
10
+ Figure 4 Chorus main page ................................ ................................ ................................ .............................. 13
11
+ Figure 5 Overview ................................ ................................ ................................ ................................ ............ 14
12
+ Figure 6 Network Statistics ................................ ................................ ................................ .............................. 16
13
+ Figure 7 Chorus Device Statistics ................................ ................................ ................................ ..................... 16
14
+ Figure 8 Device KPIs dashboard ................................ ................................ ................................ ....................... 17
15
+ Figure 9 Select desired KPI information ................................ ................................ ................................ ........... 17
16
+ Figure 10 A Mean KPI example Channel Quality Indicator (CQI) ................................ ................................ .. 18
17
+ Figure 11 A Ratio KPI example -- UECNTX DRB Accessibility ................................ ................................ ........... 18
18
+ Figure 12 A Cumulative KPI example -- Total UL Data Volume Cumulative Measurements ............................ 18
19
+ Figure 13 Download CSV file for each KPI ................................ ................................ ................................ ........ 19
20
+ Figure 14 Client Statistics ................................ ................................ ................................ ................................ . 20
21
+ Figure 15 View Client Details ................................ ................................ ................................ ........................... 20
22
+ Figure 16 Client Details ................................ ................................ ................................ ................................ .... 21
23
+ Figure 17 De -register a client ................................ ................................ ................................ ........................... 21
24
+ Figure 18 Alerts Active Alerts ................................ ................................ ................................ ........................ 22
25
+ Figure 19 Alerts All Alerts ................................ ................................ ................................ .............................. 22
26
+ Figure 20 Alert Filter by gNB ID ................................ ................................ ................................ ........................ 23
27
+ Figure 21 Mouse Over the Details of An Alert to Read the Full Text ................................ ............................... 23
28
+ Figure 22 Show/Hide Columns Customization ................................ ................................ ................................ . 24
29
+ Figure 23 Device Table View ................................ ................................ ................................ ......................... 25
30
+ Figure 24 Device Map view - outdoor ................................ ................................ ................................ .............. 26
31
+ Figure 25 Device Map view indoor ................................ ................................ ................................ ............... 26
32
+ Figure 26 Outdoor/Indoor view switch ................................ ................................ ................................ ............ 26
33
+ Figure 27 Update Location Manually ................................ ................................ ................................ ............... 27
34
+ Figure 28 Input the Location Details ................................ ................................ ................................ ................ 27
35
+ Figure 29 choose to upload indoor site map ................................ ................................ ................................ ... 28
36
+ Figure 30 upload indoor site map ................................ ................................ ................................ .................... 28
37
+ Figure 31 more options for device ................................ ................................ ................................ ................... 29
38
+ Figure 32 Add a New Zone ................................ ................................ ................................ ............................... 29
39
+ Figure 33 Input Zone Detail ................................ ................................ ................................ .............................. 30
40
+ Figure 34 Edit an Existing Zone ................................ ................................ ................................ ........................ 31
41
+ Figure 35 Manage Neighbor List ................................ ................................ ................................ ...................... 31
42
+ Figure 36 Configure Neighbor List ................................ ................................ ................................ ................... 31
43
+ Figure 37 Delete an Existing Zone ................................ ................................ ................................ .................... 32
44
+ Figure 38 Add Chorus Device ................................ ................................ ................................ ........................... 32
pages/Chorus_R1.1_UserGuide_page_006.txt ADDED
@@ -0,0 +1,44 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ Page 6
2
+ Document: Chorus R1.1 User Guide
3
+ ==================================================
4
+
5
+ Ataya Proprietary and Confidential 6 CHORUS USER GUIDE
6
+ figure 39 Add Chorus Device ................................ ................................ ................................ ............................ 33
7
+ Figure 40 Device Serial Number and MAC information ................................ ................................ ................... 33
8
+ Figure 41 Upload Devices List in CSV file Format ................................ ................................ ............................. 34
9
+ Figure 42 Devices list shows successfully created Chorus device ................................ ................................ .... 34
10
+ Figure 43 Edit an Existing Device ................................ ................................ ................................ ..................... 35
11
+ Figure 44 Change Device name and select Zone ................................ ................................ ............................. 35
12
+ Figure 45 RF Parameters Configuration ................................ ................................ ................................ ........... 36
13
+ Figure 46 Static IP for N6 configuration ................................ ................................ ................................ ........... 37
14
+ Figure 47 Manage Devices License ................................ ................................ ................................ ................. 37
15
+ Figure 48 Assign or Delete a Devices License ................................ ................................ ................................ .. 38
16
+ Figure 49 Manage Neighbor List of a Device ................................ ................................ ................................ ... 38
17
+ Figure 50 Reboot a Device ................................ ................................ ................................ ............................... 39
18
+ Figure 51 Restart UPF ................................ ................................ ................................ ................................ ....... 39
19
+ Figure 52 Upload Log to Chorus ................................ ................................ ................................ ....................... 40
20
+ Figure 53 Delete a Device ................................ ................................ ................................ ................................ 40
21
+ Figure 54 Turn On/Off Radio ................................ ................................ ................................ ............................ 41
22
+ Figure 55 Details of a Device ................................ ................................ ................................ ............................ 41
23
+ Figure 56 Analytics for Traffic and Device uptime ................................ ................................ ........................... 42
24
+ Figure 57 Analytics for Clients Served ................................ ................................ ................................ .............. 42
25
+ Figure 58 Device Installation History ................................ ................................ ................................ ............... 42
26
+ Figure 59 Device Events ................................ ................................ ................................ ................................ ... 43
27
+ Figure 60 Upload 5G Client Credentials ................................ ................................ ................................ ........... 44
28
+ Figure 61 A single 5G client credential configuration ................................ ................................ ...................... 45
29
+ Figure 62 Configure the policies for the client ................................ ................................ ................................ . 46
30
+ Figure 63 Edit an Existing Client from Client List ................................ ................................ ............................. 47
31
+ Figure 64 Edit an Existing Client ................................ ................................ ................................ ....................... 47
32
+ Figure 65 Change assign / unassign status ................................ ................................ ................................ ....... 48
33
+ Figure 66 Block a client ................................ ................................ ................................ ................................ .... 48
34
+ Figure 67 Restore a Blocked Client ................................ ................................ ................................ ................... 48
35
+ Figure 68 Delete Client ................................ ................................ ................................ ................................ ..... 49
36
+ Figure 69 Policies ................................ ................................ ................................ ................................ ............. 50
37
+ Figure 70 A Policy creation example ................................ ................................ ................................ ................ 51
38
+ Figure 71 Configure bandwidth limit ................................ ................................ ................................ ............... 51
39
+ Figure 72 An example of application slicing configuration ................................ ................................ .............. 52
40
+ Figure 73 An example of an IP Filtering configuration ................................ ................................ ..................... 52
41
+ Figure 74 An example of client time schedule configuration ................................ ................................ .......... 53
42
+ Figure 75 Apply Policy to a Client ................................ ................................ ................................ ..................... 54
43
+ Figure 76 Choose a Policy to apply for a client ................................ ................................ ................................ 54
44
+ Figure 77 Clone a policy ................................ ................................ ................................ ................................ ... 55
pages/Chorus_R1.1_UserGuide_page_007.txt ADDED
@@ -0,0 +1,30 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ Page 7
2
+ Document: Chorus R1.1 User Guide
3
+ ==================================================
4
+
5
+ Ataya Proprietary and Confidential 7 CHORUS USER GUIDE
6
+ Figure 78 Set a Policy as Default ................................ ................................ ................................ ...................... 55
7
+ Figure 79 View Clients Assigned to a Policy ................................ ................................ ................................ ..... 56
8
+ Figure 80 Delete Policy ................................ ................................ ................................ ................................ ..... 56
9
+ Figure 81 Invite a New User ................................ ................................ ................................ ............................. 56
10
+ Figure 82 Limited Permission for a User with Role User ................................ ................................ .............. 57
11
+ Figure 83 Delete User ................................ ................................ ................................ ................................ ....... 57
12
+ Figure 84 Private Key Management ................................ ................................ ................................ ................. 58
13
+ Figure 85 Encrypt client signaling messages from 5GC ................................ ................................ ................... 58
14
+ Figure 86 License details ................................ ................................ ................................ ................................ .. 59
15
+ Figure 87 Webhooks Configuration to Publish Alerts ................................ ................................ ...................... 59
16
+ Figure 88 Configure to Send Alerts to a Specific Microsoft Teams group ................................ ........................ 60
17
+ Figure 89 Notifications can be sent to email addresses through the configured Email address .................... 60
18
+ Figure 90 Alert Notification with an Email entry configured ................................ ................................ ........... 61
19
+ Figure 91 Notifications can be sent via SMS to the configured Phone Number ................................ ............. 61
20
+ Figure 92 Alert Notification with SMS entry configured ................................ ................................ .................. 62
21
+ Figure 93 Service Configuration ................................ ................................ ................................ ....................... 63
22
+ Figure 94 Setup DNN in Chorus ................................ ................................ ................................ ....................... 63
23
+ Figure 95 Audit tab ................................ ................................ ................................ ................................ ........... 64
24
+ Figure 96 Audit details ................................ ................................ ................................ ................................ ..... 64
25
+ Figure 97 Help Center ................................ ................................ ................................ ................................ ...... 65
26
+ Figure 98 Help Center main page ................................ ................................ ................................ ..................... 65
27
+ Figure 99 Submit information ................................ ................................ ................................ .......................... 66
28
+ Figure 100 Chorus Zone UE can reach another UE on different Chorus AP in Zone ................................ ..... 69
29
+ Figure 101 Chorus Zone Chorus Zone with source NAT ................................ ................................ ................ 70
30
+ Figure 102 Example of isc -DHCP configuration ................................ ................................ ................................ 70
pages/Chorus_R1.1_UserGuide_page_008.txt ADDED
@@ -0,0 +1,8 @@
 
 
 
 
 
 
 
 
 
1
+ Page 8
2
+ Document: Chorus R1.1 User Guide
3
+ ==================================================
4
+
5
+ Ataya Proprietary and Confidential 8 CHORUS USER GUIDE
6
+ Revision History
7
+ Version Contents Date
8
+ 1.0 Initial Release April 10 , 2025
pages/Chorus_R1.1_UserGuide_page_009.txt ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
 
1
+ Page 9
2
+ Document: Chorus R1.1 User Guide
3
+ ==================================================
4
+
5
+ Ataya Proprietary and Confidential 9 CHORUS USER GUIDE
6
+ 1 Objective
7
+ This document provides a comprehensive overview of all the features of Ataya Chorus, with chapters
8
+ organized according to the Web GUI dashboard layout. If you have recently acquired a Chorus device and
9
+ need step -by-step instructions, please refer to the Chorus Quick Start Guide .
pages/Chorus_R1.1_UserGuide_page_010.txt ADDED
@@ -0,0 +1,33 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ Page 10
2
+ Document: Chorus R1.1 User Guide
3
+ ==================================================
4
+
5
+ Ataya Proprietary and Confidential 10 CHORUS USER GUIDE
6
+ 2 Chorus AP
7
+ 2.1 Brief Introduction
8
+ Private 5G solutions remain complex for small to medium -sized deployments. On -site installation of
9
+ hardware and software for the 5G Core and network integration into existing systems are challenging
10
+ tasks. Additionally, monitoring, troubleshooting, softwar e upgrades, and other maintenance activities add
11
+ to this complexity .
12
+ In many use cases, such as retail stores, gas stations, oil and gas operations, smart agriculture, and
13
+ emergency response systems, customers find the current 5G solutions overly burdensome. They are
14
+ looking for a simpler solution that reduces setup time and requires minimal on -site configuration. They
15
+ need a plug -and-play system where gNBs connect to the internet and provide instant 5G service.
16
+ It is essential to reduce operational complexity with a centralized cloud -managed dashboard for all remote
17
+ sites and to lower costs by eliminating the need for servers, switches, and other hardware.
18
+ Chorus AP is the perfect answer for this concern . It has been integrated with Chorus Agent , Chorus Data
19
+ Plane and the gNB. The key futures of Chorus AP are listed as follows :
20
+ Deployment simplicity:
21
+ Experience true zero -touch deployment just plug in the Chorus AP, and it works.
22
+ Data stays on -premises:
23
+ The Chorus data plane is contained within the Chorus AP.
24
+ Simplified device onboarding:
25
+ The multi -tenanted control plane is hosted in the cloud and automatically connects to the Chorus
26
+ AP on boot -up.
27
+ Device onboarding is managed through a cloud management dashboard.
28
+ The target use cases are listed as follows :
29
+ Enable quick point -to-point 5G connections in oil & gas, factory shop floors, vision -based use cases,
30
+ and more.
31
+ Enterprise customers are looking to augment Wi -Fi with 5G, such as in parking lots or airports for
32
+ cameras, or for private networks in venues and stadiums.
33
+ Ideal for small deployments of 1 to 5 nodes.
pages/Chorus_R1.1_UserGuide_page_011.txt ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
 
1
+ Page 11
2
+ Document: Chorus R1.1 User Guide
3
+ ==================================================
4
+
5
+ Ataya Proprietary and Confidential 11 CHORUS USER GUIDE
6
+
7
+ Figure 1 Chorus Architecture
pages/Chorus_R1.1_UserGuide_page_012.txt ADDED
@@ -0,0 +1,16 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ Page 12
2
+ Document: Chorus R1.1 User Guide
3
+ ==================================================
4
+
5
+ Ataya Proprietary and Confidential 12 CHORUS USER GUIDE
6
+ 3 Prerequisites
7
+ Chorus is designed for convenient deployment . There are only two prerequisites:
8
+ Chorus Cloud account.
9
+ Chorus Device
10
+
11
+ 3.1 Chorus Cloud Account
12
+ To activate your account, check the invitation mail from Ataya Chorus . Click the ACCEPT INVITATION button
13
+ and you will be redirected to the Chorus page. Then you will be required to set a password with complexity.
14
+ Examples are shown as follows :
15
+
16
+ Figure 2 Chorus invitation mail
pages/Chorus_R1.1_UserGuide_page_013.txt ADDED
@@ -0,0 +1,14 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ Page 13
2
+ Document: Chorus R1.1 User Guide
3
+ ==================================================
4
+
5
+ Ataya Proprietary and Confidential 13 CHORUS USER GUIDE
6
+
7
+ Figure 3 Chorus first login password setup
8
+ Then you should see the main page (https://dashboard -chorus.ataya.io/dashboard ) of Chorus with your
9
+ successfully created account. Examples are as follows :
10
+
11
+ Figure 4 Chorus main page
12
+ 3.2 Chorus Device
13
+ The Chorus Device refers to the hardware that had been integrated with Chorus Agent , Chorus Data Plane
14
+ and the gNB.
pages/Chorus_R1.1_UserGuide_page_014.txt ADDED
@@ -0,0 +1,27 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ Page 14
2
+ Document: Chorus R1.1 User Guide
3
+ ==================================================
4
+
5
+ Ataya Proprietary and Confidential 14 CHORUS USER GUIDE
6
+ 4 Dashboard for Chorus
7
+ This section will explain each feature on Chorus in order, following the layout of the dashboard.
8
+ 4.1 Insights & Analytics
9
+ The Insights & Analytics option on the top menu allows the operator to view summary level statistics.
10
+ Each of the sub -sections below describe the functionality of each of left -pane option under Insights and
11
+ Analytics
12
+
13
+ 4.1.1 Overview
14
+
15
+ Figure 5 Overview
16
+ The Overview main page is broken down into multiple subsections:
17
+ Alerts:
18
+ This shows the counts of critical and warning alerts during the last hour. A detailed list of all alerts
19
+ over longer time periods is available using the Alerts tab on the left sidebar.
20
+ Network/Cluster Summary:
21
+ This section shows the number of active 5G clients and number of active Chorus Devices.
22
+ Active Clients:
23
+ This section shows a list of active clients with information such as client name, acquired IP address,
24
+ last connection time and others. There are multiple filters, including DNN, gNB id and client ID that
25
+ can be used to focus on a subset of active client list . You can deregister a 5G client from 5G core
26
+ network by clicking on the target UE and then click on De-register . On the row of an active client,
27
+ you can click the 3 -dot action symbol and then click on Details, to see the full histo ry of the UE