diff --git a/docs/src/components/OpenAIStatusChecker.tsx b/docs/src/components/OpenAIStatusChecker.tsx new file mode 100644 index 000000000..e2ed745e7 --- /dev/null +++ b/docs/src/components/OpenAIStatusChecker.tsx @@ -0,0 +1,261 @@ +import React, { useState, useEffect } from 'react'; +import { AlertCircle, CheckCircle, Clock, RefreshCw } from 'lucide-react'; + +interface StatusData { + status: 'operational' | 'degraded' | 'partial_outage' | 'major_outage' | 'under_maintenance' | 'unknown'; + lastUpdated: string; + incidents: Array<{ + name: string; + status: string; + impact: string; + }>; +} + +const StatusIcon = ({ status }: { status: string }) => { + switch (status) { + case 'operational': + return ; + case 'degraded': + case 'partial_outage': + return ; + case 'major_outage': + return ; + case 'under_maintenance': + return ; + default: + return ; + } +}; + +const getStatusColor = (status: string) => { + switch (status) { + case 'operational': + return 'bg-green-100 text-green-800 border-green-200 dark:bg-green-900/20 dark:text-green-300 dark:border-green-800'; + case 'degraded': + case 'partial_outage': + return 'bg-yellow-100 text-yellow-800 border-yellow-200 dark:bg-yellow-900/20 dark:text-yellow-300 dark:border-yellow-800'; + case 'major_outage': + return 'bg-red-100 text-red-800 border-red-200 dark:bg-red-900/20 dark:text-red-300 dark:border-red-800'; + case 'under_maintenance': + return 'bg-blue-100 text-blue-800 border-blue-200 dark:bg-blue-900/20 dark:text-blue-300 dark:border-blue-800'; + default: + return 'bg-gray-100 text-gray-800 border-gray-200 dark:bg-gray-900/20 dark:text-gray-300 dark:border-gray-800'; + } +}; + +const getStatusText = (status: string) => { + switch (status) { + case 'operational': + return 'All Systems Operational'; + case 'degraded': + return 'Degraded Performance'; + case 'partial_outage': + return 'Partial Service Outage'; + case 'major_outage': + return 'Major Service Outage'; + case 'under_maintenance': + return 'Under Maintenance'; + default: + return 'Status Unknown'; + } +}; + +export const OpenAIStatusChecker: React.FC = () => { + const [statusData, setStatusData] = useState(null); + const [loading, setLoading] = useState(true); + const [error, setError] = useState(null); + const [lastRefresh, setLastRefresh] = useState(new Date()); + + const fetchStatus = async () => { + setLoading(true); + setError(null); + + try { + console.log('Fetching real OpenAI status...'); + + // Use CORS proxy to fetch real OpenAI status + const proxyUrl = 'https://api.allorigins.win/get?url='; + const targetUrl = 'https://status.openai.com/api/v2/status.json'; + + const response = await fetch(proxyUrl + encodeURIComponent(targetUrl)); + + if (!response.ok) { + throw new Error(`Proxy returned ${response.status}`); + } + + const proxyData = await response.json(); + const openaiData = JSON.parse(proxyData.contents); + + console.log('Real OpenAI data received:', openaiData); + + // Transform real OpenAI data to our format + const transformedData = { + status: mapOpenAIStatusClient(openaiData.status?.indicator || 'operational'), + lastUpdated: openaiData.page?.updated_at || new Date().toISOString(), + incidents: (openaiData.incidents || []).slice(0, 3), + components: (openaiData.components || []).filter(component => + ['ChatGPT', 'API', 'Playground'].some(name => + (component.name || '').toLowerCase().includes(name.toLowerCase()) + ) + ) + }; + + setStatusData(transformedData); + setLastRefresh(new Date()); + console.log('✅ Real OpenAI status loaded successfully!'); + + } catch (err) { + console.error('Failed to fetch real status:', err); + + // Fallback: try alternative proxy + try { + console.log('Trying alternative proxy...'); + const altResponse = await fetch(`https://cors-anywhere.herokuapp.com/https://status.openai.com/api/v2/summary.json`); + + if (altResponse.ok) { + const altData = await altResponse.json(); + setStatusData({ + status: mapOpenAIStatusClient(altData.status?.indicator || 'operational'), + lastUpdated: new Date().toISOString(), + incidents: [] + }); + setLastRefresh(new Date()); + console.log('✅ Alternative proxy worked!'); + return; + } + } catch (altErr) { + console.log('Alternative proxy also failed'); + } + + // Final fallback + setError('Unable to fetch real-time status'); + setStatusData({ + status: 'operational', + lastUpdated: new Date().toISOString(), + incidents: [] + }); + setLastRefresh(new Date()); + console.log('Using fallback status'); + + } finally { + setLoading(false); + } + }; + + // Client-side status mapping function + const mapOpenAIStatusClient = (indicator: string) => { + switch (indicator.toLowerCase()) { + case 'none': + case 'operational': + return 'operational'; + case 'minor': + return 'degraded'; + case 'major': + return 'partial_outage'; + case 'critical': + return 'major_outage'; + case 'maintenance': + return 'under_maintenance'; + default: + return 'operational'; // Default to operational + } + }; + + useEffect(() => { + fetchStatus(); + // Refresh every 2 minutes for more real-time updates + const interval = setInterval(fetchStatus, 2 * 60 * 1000); + return () => clearInterval(interval); + }, []); + + const handleRefresh = () => { + fetchStatus(); + }; + + if (loading && !statusData) { + return ( +
+
+ + Checking OpenAI Status... +
+
+ ); + } + + if (error) { + return ( +
+
+
+ +
+

Unable to Check Status

+

{error}

+
+
+ +
+
+ ); + } + + return ( +
+
+
+ +
+

OpenAI Services

+

+ Last updated: {new Date(lastRefresh).toLocaleTimeString()} +

+
+
+ +
+ +
+ {getStatusText(statusData?.status || 'unknown')} +
+ +
+

Quick Status Check

+
+
+ ChatGPT + +
+
+ API + +
+
+ Playground + +
+
+
+ +
+ {error ? 'Using fallback status • ' : '🟢 Real-time data from OpenAI • '} + Updated: {new Date(lastRefresh).toLocaleTimeString()} +
+ + View detailed status guide + +
+
+ ); +}; diff --git a/docs/src/pages/post/_assets/is-chatgpt-down.jpg b/docs/src/pages/post/_assets/is-chatgpt-down.jpg new file mode 100644 index 000000000..2a515d344 Binary files /dev/null and b/docs/src/pages/post/_assets/is-chatgpt-down.jpg differ diff --git a/docs/src/pages/post/is-chatgpt-down-use-jan.mdx b/docs/src/pages/post/is-chatgpt-down-use-jan.mdx new file mode 100644 index 000000000..bed499d19 --- /dev/null +++ b/docs/src/pages/post/is-chatgpt-down-use-jan.mdx @@ -0,0 +1,124 @@ +--- +title: "If ChatGPT is down, switch to AI that never goes down" +description: "Check if ChatGPT down right now, and learn how to use AI that never goes down." +tags: AI, ChatGPT down, ChatGPT alternative, Jan, local AI, offline AI, ChatGPT at capacity +categories: guides +date: 2025-09-30 +ogImage: _assets/is-chatgpt-down.jpg +twitter: + card: summary_large_image + site: "@jandotai" + title: "Realtime Status Checker: Is ChatGPT down?" + description: "Check if ChatGPT is down right now with our real-time status checker, and learn how to use AI that never goes offline." + image: _assets/is-chatgpt-down.jpg +--- +import { Callout } from 'nextra/components' +import CTABlog from '@/components/Blog/CTA' +import { OpenAIStatusChecker } from '@/components/OpenAIStatusChecker' + +# If ChatGPT is down, switch to AI that never goes down + +If you're seeing ChatGPT is down, it could a good signal to switch to [Jan](https://www.jan.ai/), AI that never goes down. + +## 🔴 Realtime Status Checker: Is ChatGPT down? + +This live tracker shows if ChatGPT is down right now. + + + +### ChatGPT Status Indicators + +
+
+
+
+ Operational +
+

All systems are functioning normally with no reported issues.

+
+ +
+
+
+ Degraded Performance +
+

Services are running but may be slower than usual.

+
+ +
+
+
+ Partial Outage +
+

Some features or regions may be experiencing issues.

+
+ +
+
+
+ Major Outage +
+

Significant service disruption affecting most users.

+
+
+ +## Skip the downtime with Jan + +When ChatGPT is down, Jan keeps working. Jan is an open-source ChatGPT alternative that runs on your computer - no servers, no outages, no waiting. + +![Jan running when ChatGPT is down](./_assets/chatgpt-alternative-jan.jpeg) +*Jan works even when ChatGPT doesn't.* + +### Why Jan never goes down: +- **Runs locally** - No dependency on external servers +- **Always available** - Works offline, even on flights +- **No capacity limits** - Uses your computer's resources +- **100% private** - Your conversations stay on your device + +### Get started in 3 mins: +1. Download Jan: [jan.ai](https://jan.ai) +2. Install a model: Choose from Jan, Qwen, or other top models +3. Start chatting: Similar design as ChatGPT, but always available if you use local models + + +**Pro tip:** Keep both ChatGPT and Jan. You'll never lose productivity to outages again. + + +Jan runs AI models locally, so you don't need internet access. That means Jan is unaffected when ChatGPT is down. + +### Why does ChatGPT goes down? +There could be multiple reasons: +- Too many users at once +- Data center or API downtime +- Planned or uplanned updates +- Limited in some locations + +ChatGPT depends on OpenAI’s servers. If those go down, so does ChatGPT. Jan users don't affect by ChatGPT's outage. + +### Common ChatGPT Errors + +When ChatGPT experiences issues, you might see these error messages: + +- "ChatGPT is at capacity right now": Too many users online, try again later +- "Error in message stream": Connection problems with OpenAI servers +- "Something went wrong": General server error, refresh and retry +- "Network error": Internet connectivity issues on your end or OpenAI's +- "Rate limit exceeded": Too many requests sent, wait before trying again +- "This model is currently overloaded": High demand for specific model + +## Quick answers about ChatGPT status + +### Is ChatGPT down today? +Check the ChatGPT realtime status above. If ChatGPT is down, you'll see it here. + +### Why is ChatGPT down? +Usually server overload, maintenance, or outages at OpenAI. + +### What does “ChatGPT is at capacity” mean? +Too many users are online at the same time. You’ll need to wait or switch to Jan instead. + +### Is ChatGPT shutting down? +No, ChatGPT isn’t shutting down. Outages are temporary. + +### Can I use ChatGPT offline? +No. ChatGPT always requires internet. For [offline AI](https://www.jan.ai/post/offline-chatgpt-alternative), use [Jan](https://jan.ai). \ No newline at end of file