Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions components/IndustriesGrid.js
Original file line number Diff line number Diff line change
Expand Up @@ -700,13 +700,13 @@ export default function IndustriesGrid({
rel="nofollow"
className="opacity-70 hover:opacity-100 transition-opacity duration-200"
>
<img width="240" src="https://media.theresanaiforthat.com/featured-on-taaft.png?width=600"></img>
<img width="240" height="52" src="https://media.theresanaiforthat.com/featured-on-taaft.png?width=600" alt="Featured on There's An AI For That"></img>
</a>
</div>
<div className="mt-12">
<h1 className="text-center text-xl font-medium text-white/95 mb-3 tracking-tight">
<h2 className="text-center text-xl font-medium text-white/95 mb-3 tracking-tight">
Transform Your Industry with OpenAdapt
</h1>
</h2>
<p className={styles.p}>
From demonstration to automation in minutes. Just do the task once and OpenAdapt learns from watching.
No prompt engineering. No scripting. No brittle selectors.
Expand Down
9 changes: 9 additions & 0 deletions netlify.toml
Original file line number Diff line number Diff line change
Expand Up @@ -14,3 +14,12 @@

[[plugins]]
package = "netlify-plugin-cypress"

[[headers]]
for = "/*"
[headers.values]
X-Frame-Options = "SAMEORIGIN"
X-Content-Type-Options = "nosniff"
Referrer-Policy = "strict-origin-when-cross-origin"
Permissions-Policy = "camera=(), microphone=(), geolocation=()"
Strict-Transport-Security = "max-age=31536000; includeSubDomains"
23 changes: 14 additions & 9 deletions pages/_app.js
Original file line number Diff line number Diff line change
Expand Up @@ -13,16 +13,13 @@ const raleway = Raleway({
export default function MyApp({ Component, pageProps }) {
return (
<>
{/* New pages must add their own <Head> with unique title, description, canonical, and og:* tags */}
<Head>
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>OpenAdapt.AI</title>
<title>OpenAdapt.AI — AI-Powered Desktop Automation Platform</title>
<meta
name="description"
content="AI for Humans. No programming required."
/>
<meta
name="description"
content="OpenAdapt.AI - AI for Humans. Open source infrastructure for using Large Language Models (LLMs), Large Multimodal Models (LMMs) / Visual Language Models (VLMs), and Large Action Models (LAMs) to automate your desktop application workflows. Record, replay, and share. No programming required."
content="Open-source platform for GUI automation with AI. Record human demonstrations, train models, and deploy agents that operate any desktop software. Works with Claude, GPT-4V, Gemini. MIT licensed."
/>
<link
rel="apple-touch-icon"
Expand Down Expand Up @@ -50,14 +47,22 @@ export default function MyApp({ Component, pageProps }) {
<meta name="msapplication-TileColor" content="#2b5797" />
<meta name="theme-color" content="#ffffff" />

{/* Social media preview images */}
<meta property="og:title" content="OpenAdapt.AI - Revolutionizing Task Automation" />
<meta property="og:description" content="Discover OpenAdapt.AI, the leading AI-driven automation tool designed to streamline your workflow efficiently." />
{/* Open Graph */}
<meta property="og:type" content="website" />
<meta property="og:site_name" content="OpenAdapt.AI" />
<meta property="og:title" content="OpenAdapt.AI — Teach AI to Use Any Software" />
<meta property="og:description" content="Open-source AI-powered desktop automation. Record demonstrations, train models, deploy agents. Works with Claude, GPT-4V, Gemini. MIT licensed." />
<meta property="og:image" content="https://openadapt.ai/og.png" />
<meta property="og:image:type" content="image/png" />
<meta property="og:image:width" content="1024" />
<meta property="og:image:height" content="1024" />
<meta property="og:url" content="https://openadapt.ai" />

{/* Twitter Card */}
<meta name="twitter:card" content="summary_large_image" />
<meta name="twitter:site" content="@OpenAdaptAI" />
<meta name="twitter:title" content="OpenAdapt.AI — Teach AI to Use Any Software" />
<meta name="twitter:description" content="Open-source AI-powered desktop automation. Record demonstrations, train models, deploy agents. MIT licensed." />
<meta name="twitter:image" content="https://openadapt.ai/og.png" />

{/* Google tag (gtag.js) */}
Expand Down
13 changes: 13 additions & 0 deletions pages/_document.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
import { Html, Head, Main, NextScript } from 'next/document'

export default function Document() {
return (
<Html lang="en">
<Head />
<body>
<Main />
<NextScript />
</body>
</Html>
)
}
12 changes: 12 additions & 0 deletions pages/book.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import Link from 'next/link'
import Head from 'next/head'
import { useRouter } from 'next/router'

import BookingEmbed from '@components/BookingEmbed'
Expand All @@ -11,6 +12,17 @@ export default function BookPage() {

return (
<div className="min-h-screen bg-[#06061f] text-white">
<Head>
<title>Book a Call | OpenAdapt.AI</title>
<meta
name="description"
content="Book a 15-minute automation fit call with the OpenAdapt team. Share your highest-friction workflow and we'll map what can be automated."
/>
<link rel="canonical" href="https://openadapt.ai/book" />
<meta property="og:title" content="Book a Call | OpenAdapt.AI" />
<meta property="og:description" content="Book a 15-minute automation fit call with OpenAdapt. We'll map what can be automated." />
<meta property="og:url" content="https://openadapt.ai/book" />
</Head>
<div className="mx-auto max-w-4xl px-4 py-10">
<h1 className="text-3xl font-semibold tracking-tight md:text-4xl">
Book a 15-minute automation fit call
Expand Down
12 changes: 12 additions & 0 deletions pages/contact.js
Original file line number Diff line number Diff line change
@@ -1,9 +1,21 @@
import Head from 'next/head'
import ContactBookingSection from '@components/ContactBookingSection'
import Footer from '@components/Footer'

export default function ContactPage() {
return (
<div className="min-h-screen bg-[#06061f] text-white">
<Head>
<title>Contact | OpenAdapt.AI</title>
<meta
name="description"
content="Contact the OpenAdapt team. Tell us your workflow, tools, and volume. We'll propose a pilot scope and ROI target for AI-powered automation."
/>
<link rel="canonical" href="https://openadapt.ai/contact" />
<meta property="og:title" content="Contact | OpenAdapt.AI" />
<meta property="og:description" content="Contact OpenAdapt. Share your workflow and we'll propose a pilot scope for AI-powered automation." />
<meta property="og:url" content="https://openadapt.ai/contact" />
</Head>
<ContactBookingSection showHomeLink />
<Footer />
</div>
Expand Down
106 changes: 106 additions & 0 deletions pages/index.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import { useRef, useState } from 'react'
import Head from 'next/head'

import BenchmarkSection from '@components/BenchmarkSection'
import ContactBookingSection from '@components/ContactBookingSection'
Expand All @@ -10,6 +11,90 @@ import IndustriesGrid from '@components/IndustriesGrid'
import MastHead from '@components/MastHead'
// import SocialSection from '@components/SocialSection' // Temporarily disabled - feeds not working

const organizationSchema = {
'@context': 'https://schema.org',
'@type': 'Organization',
name: 'OpenAdapt.AI',
alternateName: ['OpenAdapt', 'MLDSAI Inc.'],
url: 'https://openadapt.ai',
logo: {
'@type': 'ImageObject',
url: 'https://openadapt.ai/android-chrome-512x512.png',
width: 512,
height: 512,
},
description:
'Open-source platform for GUI automation with AI. Record human demonstrations, train models, and deploy agents that can operate any software.',
foundingDate: '2023',
sameAs: [
'https://github.com/OpenAdaptAI/OpenAdapt',
'https://x.com/OpenAdaptAI',
'https://www.linkedin.com/company/openadapt-ai',
'https://discord.gg/yF527cQbDG',
'https://pypi.org/project/openadapt/',
],
knowsAbout: [
'GUI Automation',
'Robotic Process Automation',
'AI Agents',
'Desktop Automation',
'Machine Learning',
'Large Language Models',
],
slogan: 'Teach AI to use any software',
}

const softwareSchema = {
'@context': 'https://schema.org',
'@type': 'SoftwareApplication',
name: 'OpenAdapt',
alternateName: 'OpenAdapt.AI',
applicationCategory: 'DeveloperApplication',
operatingSystem: 'Windows, macOS, Linux',
description:
'Open-source AI-powered desktop automation platform. Record human demonstrations of GUI workflows, train models, and deploy AI agents that replicate those workflows autonomously. Compatible with Claude, GPT-4V, and Gemini.',
url: 'https://openadapt.ai',
downloadUrl: 'https://pypi.org/project/openadapt/',
author: {
'@type': 'Organization',
name: 'OpenAdapt.AI',
url: 'https://openadapt.ai',
},
license: 'https://opensource.org/licenses/MIT',
codeRepository: 'https://github.com/OpenAdaptAI/OpenAdapt',
programmingLanguage: 'Python',
offers: {
'@type': 'Offer',
price: '0',
priceCurrency: 'USD',
},
featureList: [
'Record human demonstrations of desktop workflows',
'Train AI models on recorded task data',
'Deploy autonomous AI agents for GUI automation',
'PII/PHI data scrubbing for privacy compliance',
'Model agnostic — works with Claude, GPT-4V, Gemini',
'Benchmark evaluation with Windows Agent Arena',
],
isAccessibleForFree: true,
}

const websiteSchema = {
'@context': 'https://schema.org',
'@type': 'WebSite',
name: 'OpenAdapt.AI',
alternateName: 'OpenAdapt',
url: 'https://openadapt.ai',
description:
'Open-source AI-powered GUI automation platform. Teach AI to use any software.',
publisher: {
'@type': 'Organization',
name: 'OpenAdapt.AI',
url: 'https://openadapt.ai',
},
inLanguage: 'en',
}

export default function Home() {
const [feedbackData, setFeedbackData] = useState({
email: '',
Expand All @@ -20,6 +105,27 @@ export default function Home() {

return (
<div>
<Head>
<link rel="canonical" href="https://openadapt.ai" />
<script
type="application/ld+json"
dangerouslySetInnerHTML={{
__html: JSON.stringify(organizationSchema),
}}
/>
<script
type="application/ld+json"
dangerouslySetInnerHTML={{
__html: JSON.stringify(softwareSchema),
}}
/>
<script
type="application/ld+json"
dangerouslySetInnerHTML={{
__html: JSON.stringify(websiteSchema),
}}
/>
</Head>
<MastHead />
<div style={{
background: 'rgba(0, 0, 30, 1)',
Expand Down
12 changes: 12 additions & 0 deletions pages/privacy-policy.js
Original file line number Diff line number Diff line change
@@ -1,9 +1,21 @@
import React from 'react'
import Head from 'next/head'
import styles from '@styles/LegalPages.module.css'

const PrivacyPolicy = () => {
return (
<div className={styles.container}>
<Head>
<title>Privacy Policy | OpenAdapt.AI</title>
<meta
name="description"
content="OpenAdapt.AI privacy policy. Learn how we collect, use, and safeguard your data. All recordings are scrubbed of PII/PHI before upload."
/>
<link rel="canonical" href="https://openadapt.ai/privacy-policy" />
<meta property="og:title" content="Privacy Policy | OpenAdapt.AI" />
<meta property="og:description" content="OpenAdapt.AI privacy policy. Learn how we collect, use, and safeguard your data." />
<meta property="og:url" content="https://openadapt.ai/privacy-policy" />
</Head>
<h1 className={styles.heading}>Privacy Policy</h1>
<p className={styles.paragraph}>
At OpenAdapt.AI, we are committed to protecting your privacy and
Expand Down
12 changes: 12 additions & 0 deletions pages/terms-of-service.js
Original file line number Diff line number Diff line change
@@ -1,9 +1,21 @@
import React from 'react'
import Head from 'next/head'
import styles from '@styles/LegalPages.module.css'

const TermsOfService = () => {
return (
<div className={styles.container}>
<Head>
<title>Terms of Service | OpenAdapt.AI</title>
<meta
name="description"
content="OpenAdapt.AI terms of service. Alpha software disclaimer, warranty, liability, intellectual property, and governing law (Ontario, Canada)."
/>
<link rel="canonical" href="https://openadapt.ai/terms-of-service" />
<meta property="og:title" content="Terms of Service | OpenAdapt.AI" />
<meta property="og:description" content="OpenAdapt.AI terms of service covering software usage, warranty, and liability." />
<meta property="og:url" content="https://openadapt.ai/terms-of-service" />
</Head>
<h1 className={styles.heading}>Terms of Service</h1>
<p className={styles.paragraph}>
By using OpenAdapt, you agree to the following terms and
Expand Down
28 changes: 28 additions & 0 deletions public/llms.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
# OpenAdapt.AI

> Open-source AI-powered desktop automation platform. Record human demonstrations, train vision-language models, deploy AI agents that operate any desktop or web software. No programming required. MIT licensed.

## Documentation
- [Getting Started](https://docs.openadapt.ai): Installation, quick start, and CLI reference
- [GitHub Repository](https://github.com/OpenAdaptAI/OpenAdapt): Source code, README, and contribution guide

## Core Concepts
- [How It Works](https://openadapt.ai): Demonstration-conditioned AI agents learn from screen recordings of human workflows
- [Privacy & Security](https://openadapt.ai/privacy-policy): Built-in PII/PHI scrubbing, local-first data processing
- [Privacy Module](https://github.com/OpenAdaptAI/openadapt-privacy): Open-source PII/PHI scrubbing

## Use Cases
- [Industry Applications](https://openadapt.ai): HR, Law, Insurance, Healthcare, Finance, Logistics, Pharmacy, Customer Support, Sales Development

## Source Code
- [GitHub](https://github.com/OpenAdaptAI/OpenAdapt): MIT licensed, open source
- [PyPI Package](https://pypi.org/project/openadapt/): Install via pip or uv
- [Evaluations](https://github.com/OpenAdaptAI/openadapt-evals): Benchmark tooling with Windows Agent Arena integration

## Blog
- [Updates & Guides](https://blog.openadapt.ai): Technical posts and automation recipes

## Community
- [Discord](https://discord.gg/yF527cQbDG): Community support and discussion
- [LinkedIn](https://www.linkedin.com/company/openadapt-ai): Company updates
- [X/Twitter](https://x.com/OpenAdaptAI): Project news
34 changes: 34 additions & 0 deletions public/robots.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
# OpenAdapt.AI - robots.txt
# AI crawlers welcome

User-agent: *
Allow: /
Disallow: /_next/static/
Disallow: /api/

# AI Crawlers - Explicitly Allowed
User-agent: GPTBot
Allow: /

User-agent: OAI-SearchBot
Allow: /

User-agent: ChatGPT-User
Allow: /

User-agent: ClaudeBot
Allow: /

User-agent: PerplexityBot
Allow: /

User-agent: Google-Extended
Allow: /

User-agent: Amazonbot
Allow: /

User-agent: Applebot-Extended
Allow: /

Sitemap: https://openadapt.ai/sitemap.xml
Loading