Skip to content

Commit 6a8a6ad

Browse files
committed
Update docs: GPT-5.4, Next.js frontend, managed identity, security architecture
README.md: - Update badge and references from GPT-4 to GPT-5.4 - Update frontend references from Streamlit to Next.js - Add Security Architecture section (VNet, PEs, RBAC, managed identity) - Update infrastructure table with VNet, Key Vault, Private Endpoints - Update project structure to show modular Bicep layout (infra/modules/) - Update prerequisites to remove API key requirement - Update tech stack table with Next.js, Key Vault, Private Endpoints api_documentation.md: - Update auth section to reflect managed identity (no API keys) - Update OpenAI settings endpoints for managed identity auth - Update frontend reference from Streamlit to Next.js CONTRIBUTING.md: - Update project title placeholder to ARGUS - Fix repository URL placeholders to Azure-Samples/ARGUS
1 parent 3a7a450 commit 6a8a6ad

3 files changed

Lines changed: 95 additions & 32 deletions

File tree

CONTRIBUTING.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# Contributing to [project-title]
1+
# Contributing to ARGUS
22

33
This project welcomes contributions and suggestions. Most contributions require you to agree to a
44
Contributor License Agreement (CLA) declaring that you have the right to, and actually do, grant us
@@ -51,12 +51,12 @@ chances of your issue being dealt with quickly:
5151
* **Suggest a Fix** - if you can't fix the bug yourself, perhaps you can point to what might be
5252
causing the problem (line of code or commit)
5353

54-
You can file new issues by providing the above information at the corresponding repository's issues link: https://github.com/[organization-name]/[repository-name]/issues/new].
54+
You can file new issues by providing the above information at the corresponding repository's issues link: https://github.com/Azure-Samples/ARGUS/issues/new.
5555

5656
### <a name="submit-pr"></a> Submitting a Pull Request (PR)
5757
Before you submit your Pull Request (PR) consider the following guidelines:
5858

59-
* Search the repository (https://github.com/[organization-name]/[repository-name]/pulls) for an open or closed PR
59+
* Search the repository (https://github.com/Azure-Samples/ARGUS/pulls) for an open or closed PR
6060
that relates to your submission. You don't want to duplicate effort.
6161

6262
* Make your changes in a new git fork:

README.md

Lines changed: 81 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,9 @@
33
<div align="center">
44

55
[![Azure](https://img.shields.io/badge/Azure-0078D4?style=for-the-badge&logo=microsoft-azure&logoColor=white)](https://azure.microsoft.com)
6-
[![OpenAI](https://img.shields.io/badge/GPT--4-412991?style=for-the-badge&logo=openai&logoColor=white)](https://openai.com)
6+
[![OpenAI](https://img.shields.io/badge/GPT--5.4-412991?style=for-the-badge&logo=openai&logoColor=white)](https://openai.com)
77
[![FastAPI](https://img.shields.io/badge/FastAPI-009688?style=for-the-badge&logo=fastapi&logoColor=white)](https://fastapi.tiangolo.com)
8+
[![Next.js](https://img.shields.io/badge/Next.js-000000?style=for-the-badge&logo=next.js&logoColor=white)](https://nextjs.org)
89
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg?style=for-the-badge)](https://opensource.org/licenses/MIT)
910

1011
*Named after Argus Panoptes, the mythological giant with a hundred eyes—ARGUS never misses a detail in your documents.*
@@ -13,7 +14,7 @@
1314

1415
## 🚀 Transform Document Processing with AI Intelligence
1516

16-
**ARGUS** revolutionizes how organizations extract, understand, and act on document data. By combining the precision of **Azure Document Intelligence** with the contextual reasoning of **GPT-4 Vision**, ARGUS doesn't just read documents—it *understands* them.
17+
**ARGUS** revolutionizes how organizations extract, understand, and act on document data. By combining the precision of **Azure Document Intelligence** with the contextual reasoning of **GPT-5.4**, ARGUS doesn't just read documents—it *understands* them.
1718

1819
### 💡 Why ARGUS?
1920

@@ -41,10 +42,11 @@ Traditional OCR solutions extract text but miss the context. AI-only approaches
4142
- **Zero-Shot Learning**: Works on new document types without training
4243

4344
### **Enterprise-Ready Performance**
44-
- **Cloud-Native Architecture**: Built on Azure Container Apps
45+
- **Cloud-Native Architecture**: Built on Azure Container Apps with VNet integration
4546
- **Scalable Processing**: Handle document floods with confidence
4647
- **Real-Time Processing**: API-driven workflows for immediate results
4748
- **Event-Driven Automation**: Automatic processing on document upload
49+
- **Zero-Credential Security**: Managed identity authentication with no API keys
4850

4951
</td>
5052
<td width="50%">
@@ -85,7 +87,7 @@ graph TB
8587
D --> E{🔍 OCR Provider}
8688
E -->|Azure| E1[Azure Document Intelligence]
8789
E -->|Mistral| E2[Mistral Document AI]
88-
D --> F[🤖 GPT-4 Vision]
90+
D --> F[🤖 GPT-5.4]
8991
E1 --> G[⚙️ Hybrid Processing Pipeline]
9092
E2 --> G
9193
F --> G
@@ -101,7 +103,7 @@ graph TB
101103
G --> K[🗄️ Azure Cosmos DB]
102104
J --> K
103105
I --> K
104-
K --> L[📱 Streamlit Frontend]
106+
K --> L[📱 Next.js Frontend]
105107
end
106108
107109
style A fill:#e3f2fd,stroke:#1976d2,stroke-width:2px
@@ -127,17 +129,47 @@ graph TB
127129
| Component | Technology | Purpose |
128130
|-----------|------------|---------|
129131
| **🚀 Backend API** | Azure Container Apps + FastAPI | High-performance document processing engine |
130-
| **📱 Frontend UI** | Streamlit (Optional) | Interactive document management interface |
132+
| **📱 Frontend UI** | Next.js (React) | Modern document management interface |
131133
| **📁 Document Storage** | Azure Blob Storage | Secure, scalable document repository |
132134
| **🗄️ Metadata Database** | Azure Cosmos DB | Results, configurations, and analytics |
133135
| **🔍 OCR Engine** | Azure Document Intelligence or Mistral Document AI | Structured text and layout extraction |
134-
| **🧠 AI Reasoning** | Azure OpenAI (GPT-4 Vision) | Contextual understanding and extraction |
136+
| **🧠 AI Reasoning** | Azure OpenAI (GPT-5.4) | Contextual understanding and extraction |
135137
| **🏗️ Container Registry** | Azure Container Registry | Private, secure container images |
136138
| **🔒 Security** | Managed Identity + RBAC | Zero-credential architecture |
139+
| **🌐 Network** | VNet + Private Endpoints | Network isolation for all Azure services |
140+
| **🔑 Secrets** | Azure Key Vault | Centralized secrets management |
137141
| **📊 Monitoring** | Application Insights | Performance and health monitoring |
138142

139143
---
140144

145+
## 🔒 Security Architecture
146+
147+
ARGUS implements a defense-in-depth security model:
148+
149+
### Network Isolation
150+
- **VNet Integration**: All Container Apps run within a dedicated Virtual Network (`10.0.0.0/16`)
151+
- **Private Endpoints**: Storage, Cosmos DB, OpenAI, Document Intelligence, and Key Vault are accessible only through private endpoints
152+
- **Private DNS Zones**: Automatic DNS resolution for private endpoints via Azure Private DNS
153+
- **No Public Access**: All backend services have `publicNetworkAccess: Disabled`
154+
155+
### Identity & Authentication
156+
- **Managed Identity**: User-assigned managed identity for all service-to-service authentication
157+
- **No API Keys**: Local authentication is disabled on all Azure services (`disableLocalAuth: true`)
158+
- **No Shared Keys**: Storage account shared key access is disabled (`allowSharedKeyAccess: false`)
159+
- **RBAC-Only Access**: All permissions are granted through Azure RBAC role assignments
160+
161+
### RBAC Roles (Principle of Least Privilege)
162+
| Role | Scope | Purpose |
163+
|------|-------|---------|
164+
| Storage Blob Data Contributor | Storage Account | Read/write blob data |
165+
| Cosmos DB Built-in Data Contributor | Cosmos DB Account | Read/write database items |
166+
| Cognitive Services User | Document Intelligence | OCR operations |
167+
| Cognitive Services OpenAI User | Azure OpenAI | Model inference |
168+
| Key Vault Secrets User | Key Vault | Read secrets |
169+
| AcrPull | Container Registry | Pull container images |
170+
171+
---
172+
141173
## ⚡ Quick Start: Deploy in Minutes
142174

143175
### 📋 Prerequisites
@@ -161,10 +193,10 @@ graph TB
161193
curl -sL https://aka.ms/InstallAzureCLIDeb | sudo bash
162194
```
163195

164-
4. **Azure OpenAI Resource**
165-
- Create an Azure OpenAI resource in a [supported region](https://docs.microsoft.com/azure/cognitive-services/openai/overview#regional-availability)
166-
- Deploy a vision-capable model: `gpt-4o`, `gpt-4-turbo`, or `gpt-4` (with vision)
167-
- Collect: endpoint URL, API key, and deployment name
196+
4. **Azure Subscription**
197+
- An active Azure subscription with permissions to create resources
198+
- The deployment automatically provisions all required Azure services (OpenAI, Storage, Cosmos DB, etc.)
199+
- Authentication uses managed identity — no API keys required
168200

169201
</details>
170202

@@ -372,7 +404,7 @@ ARGUS uses **datasets** to define how different types of documents should be pro
372404
<details>
373405
<summary><b>🔧 Create Custom Datasets</b></summary>
374406

375-
Datasets are managed through the Streamlit frontend interface (deployed automatically with azd):
407+
Datasets are managed through the web frontend interface (deployed automatically with azd):
376408

377409
1. **Access the frontend** (URL provided after azd deployment)
378410
2. **Navigate to the Process Files tab**
@@ -456,6 +488,8 @@ az containerapp update \
456488

457489
The Streamlit frontend is **automatically deployed** with `azd up` and provides a user-friendly interface for document management.
458490

491+
> **Note**: ARGUS ships with two frontends: a modern **Next.js** interface (default, deployed as `ca-frontend`) and a legacy **Streamlit** interface. The Next.js frontend is recommended for production use.
492+
459493
<div align="center">
460494
<img src="docs/ArchitectureOverview.png" alt="ARGUS Frontend Interface" width="800"/>
461495
</div>
@@ -488,11 +522,24 @@ ARGUS/
488522
├── 📂 .vscode/ # VS Code settings & extensions
489523
490524
├── 📂 infra/ # 🏗️ Azure Infrastructure as Code
491-
│ ├── ⚙️ main.bicep # Primary Bicep template for Azure resources
525+
│ ├── ⚙️ main.bicep # Orchestrator Bicep template (calls modules)
492526
│ ├── ⚙️ main.parameters.json # Infrastructure parameters & configuration
493527
│ ├── ⚙️ main-containerapp.bicep # Container App specific infrastructure
494528
│ ├── ⚙️ main-containerapp.parameters.json # Container App parameters
495-
│ └── 📋 abbreviations.json # Azure resource naming abbreviations
529+
│ ├── 📋 abbreviations.json # Azure resource naming abbreviations
530+
│ └── 📂 modules/ # Modular Bicep components
531+
│ ├── ⚙️ network.bicep # VNet, subnets, private DNS zones
532+
│ ├── ⚙️ identity.bicep # User-assigned managed identity
533+
│ ├── ⚙️ storage.bicep # Storage account + private endpoint
534+
│ ├── ⚙️ cosmos.bicep # Cosmos DB + private endpoint
535+
│ ├── ⚙️ ai-services.bicep # Azure OpenAI + model deployment + PE
536+
│ ├── ⚙️ document-intelligence.bicep # Doc Intelligence + private endpoint
537+
│ ├── ⚙️ key-vault.bicep # Key Vault + private endpoint
538+
│ ├── ⚙️ container-registry.bicep # ACR for container images
539+
│ ├── ⚙️ container-apps.bicep # CAE + backend/frontend container apps
540+
│ ├── ⚙️ role-assignments.bicep # RBAC role assignments
541+
│ ├── ⚙️ monitoring.bicep # Application Insights + Log Analytics
542+
│ └── ⚙️ event-processing.bicep # Event Grid subscriptions
496543
497544
├── 📂 src/ # 🚀 Core Application Source Code
498545
│ ├── 📂 containerapp/ # FastAPI Backend Service
@@ -530,7 +577,22 @@ ARGUS/
530577
│ ├── 📊 json_evaluator.py # JSON structure validation
531578
│ └── 📂 tests/ # Unit tests for evaluators
532579
533-
├── 📂 frontend/ # 🖥️ Streamlit Web Interface
580+
├── 📂 frontend-next/ # 🖥️ Next.js Web Interface
581+
│ ├── 📱 src/app/ # App Router pages and API routes
582+
│ │ ├── 📄 page.tsx # Home page with document processing
583+
│ │ ├── 📂 explore/ # Document browsing & analysis
584+
│ │ ├── 📂 settings/ # Configuration management
585+
│ │ ├── 📂 instructions/ # Help & documentation
586+
│ │ ├── 📂 api-docs/ # API reference documentation
587+
│ │ ├── 📂 mcp/ # MCP integration info
588+
│ │ └── 📂 api/ # Backend proxy API routes
589+
│ ├── 📂 src/components/ # Reusable React components
590+
│ ├── 📂 src/lib/ # API client & utilities
591+
│ ├── 🐳 Dockerfile # Frontend container definition
592+
│ ├── 📦 package.json # Node.js dependencies
593+
│ └── ⚙️ next.config.js # Next.js configuration
594+
595+
├── 📂 frontend/ # 🖥️ Legacy Streamlit Interface
534596
│ ├── 📱 app.py # Main Streamlit application entry point
535597
│ ├── 🔄 backend_client.py # API client for backend communication
536598
│ ├── 📤 process_files.py # File upload & processing interface
@@ -594,10 +656,11 @@ open http://localhost:8000/docs
594656
|----------|-------------|
595657
| **🚀 API Framework** | FastAPI, Uvicorn, Pydantic |
596658
| **🧠 AI/ML** | LangChain, OpenAI SDK, Azure AI SDK |
597-
| **☁️ Azure Services** | Azure SDK (Blob, Cosmos, Document Intelligence) |
659+
| **☁️ Azure Services** | Azure SDK (Blob, Cosmos, Document Intelligence, Key Vault) |
660+
| **📱 Frontend** | Next.js 15, React, Tailwind CSS, shadcn/ui |
598661
| **📄 Document Processing** | PyMuPDF, Pillow, PyPDF2 |
599662
| **📊 Data & Analytics** | Pandas, NumPy, Matplotlib |
600-
| **🔒 Security** | Azure Identity, managed identities |
663+
| **🔒 Security** | Azure Identity, managed identities, Private Endpoints |
601664

602665
---
603666

@@ -700,7 +763,7 @@ priority: "high"
700763
{
701764
"openai_settings": {
702765
"endpoint": "https://your-openai.openai.azure.com/",
703-
"model": "gpt-4o",
766+
"model": "gpt-5.4",
704767
"temperature": 0.1,
705768
"max_tokens": 4000
706769
},

api_documentation.md

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,13 @@ ARGUS (Automated Retrieval and GPT Understanding System) is a document intellige
88

99
- **Production**: Container App endpoint (configured via Azure deployment)
1010
- **Local Development**: `http://localhost:8000`
11-
- **Frontend**: Streamlit app on `http://localhost:8501`
11+
- **Frontend**: Next.js app (deployed as a Container App)
1212

1313
## Authentication
1414

15-
- **Azure Services**: Uses Azure Default Credentials
16-
- **API Keys**: OpenAI API key configured via environment variables
15+
- **Azure Services**: Managed identity authentication via `DefaultAzureCredential` — no API keys
16+
- **Service-to-Service**: User-assigned managed identity with RBAC role assignments
17+
- **Local Auth**: Disabled on all Azure services (`disableLocalAuth: true`)
1718
- **CORS**: Enabled for frontend integration
1819

1920
---
@@ -470,29 +471,28 @@ Get diagnostic information about Logic App Manager setup.
470471
### GET `/api/openai-settings`
471472
**Get OpenAI Settings**
472473

473-
Retrieve current OpenAI configuration from environment variables (read-only).
474+
Retrieve current OpenAI configuration from environment variables (read-only). Authentication uses managed identity — no API keys are stored or transmitted.
474475

475476
**Response:**
476477
```json
477478
{
478479
"openai_endpoint": "https://myopenai.openai.azure.com/",
479-
"openai_key": "***HIDDEN***",
480-
"deployment_name": "gpt-4",
481-
"note": "Configuration is read from environment variables only. Update via deployment/infrastructure."
480+
"deployment_name": "gpt-5.4",
481+
"authentication": "managed_identity",
482+
"note": "Configuration is read from environment variables only. Authentication uses Azure Managed Identity (DefaultAzureCredential). Update deployment settings via infrastructure (Bicep/azd)."
482483
}
483484
```
484485

485486
### PUT `/api/openai-settings`
486487
**Update OpenAI Settings**
487488

488-
Update OpenAI configuration by modifying environment variables.
489+
Update OpenAI endpoint and deployment name by modifying environment variables. API key is not required — authentication uses managed identity.
489490

490491
**Request Body:**
491492
```json
492493
{
493494
"openai_endpoint": "https://myopenai.openai.azure.com/",
494-
"openai_key": "your-api-key",
495-
"deployment_name": "gpt-4"
495+
"deployment_name": "gpt-5.4"
496496
}
497497
```
498498

@@ -502,7 +502,7 @@ Update OpenAI configuration by modifying environment variables.
502502
"message": "Environment variables updated successfully",
503503
"config": {
504504
"openai_endpoint": "https://myopenai.openai.azure.com/",
505-
"deployment_name": "gpt-4"
505+
"deployment_name": "gpt-5.4"
506506
}
507507
}
508508
```

0 commit comments

Comments
 (0)