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
2 changes: 2 additions & 0 deletions packages/go/.env.example
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
NEXT_PUBLIC_DEFAULT_WORKSPACE_ID=
NEXT_PUBLIC_DEFAULT_WORKSPACE_TOKEN=
15 changes: 15 additions & 0 deletions packages/go/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
# Override root .gitignore exclusions needed for this package
!lib/
!hooks/

node_modules/
.next/
.env.local
dist/
out/
*.dmg
*.AppImage
*.deb
*.exe
*.snap
package-lock.json
32 changes: 32 additions & 0 deletions packages/go/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
# OpenAgents Go

Electron desktop app for OpenAgents workspaces.

![Workspace](docs/screenshot-workspace.png)

![Workspace Selector](docs/screenshot-selector.png)

## Development

```bash
cd packages/go
npm install
npm run electron:dev
```

## Build & Install

```bash
npm version patch
npm run electron:build
```

Output in `dist/` — `.dmg` (macOS), `.exe` (Windows), `.AppImage` (Linux).

macOS: open the `.dmg`, drag "OpenAgents Go" to Applications.

## TODO

- [ ] Restore last active thread on relaunch
- [ ] Persist light/dark mode preference across sessions
- [ ] Default sidebar to collapsed state
53 changes: 53 additions & 0 deletions packages/go/app/layout.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
import type { Metadata, Viewport } from 'next';
import { Inter } from 'next/font/google';
import { ThemeProvider } from 'next-themes';
import { Toaster } from '@/components/ui/sonner';
import { AuthProvider } from '@/lib/auth-context';
import { OpenAgentsAuthProvider } from '@/lib/openagents-auth-context';
import { ElectronInit } from '@/components/layout/electron-init';
import '@/styles/globals.css';

const inter = Inter({ subsets: ['latin'] });

export const metadata: Metadata = {
title: 'OpenAgents Go',
description: 'OpenAgents desktop app',
icons: {
icon: [
{ url: '/favicon.ico', sizes: 'any' },
{ url: '/favicon-16x16.png', sizes: '16x16', type: 'image/png' },
{ url: '/favicon-32x32.png', sizes: '32x32', type: 'image/png' },
],
apple: '/apple-touch-icon.png',
},
manifest: '/site.webmanifest',
};

export const viewport: Viewport = {
width: 'device-width',
initialScale: 1,
maximumScale: 1,
viewportFit: 'cover',
};

export default function RootLayout({
children,
}: {
children: React.ReactNode;
}) {
return (
<html lang="en" suppressHydrationWarning>
<body className={`${inter.className} bg-zinc-100 dark:bg-zinc-900`}>
<ThemeProvider attribute="class" defaultTheme="light" enableSystem disableTransitionOnChange>
<ElectronInit />
<AuthProvider>
<OpenAgentsAuthProvider>
{children}
</OpenAgentsAuthProvider>
</AuthProvider>
<Toaster />
</ThemeProvider>
</body>
</html>
);
}
8 changes: 8 additions & 0 deletions packages/go/app/not-found.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
export default function NotFound() {
return (
<div className="flex flex-col items-center justify-center min-h-screen gap-4 p-8">
<h1 className="text-4xl font-bold">404</h1>
<p className="text-muted-foreground">Workspace not found.</p>
</div>
);
}
Loading
Loading