Skip to content
Merged
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
323 changes: 323 additions & 0 deletions app/content/setup/prompt.md

Large diffs are not rendered by default.

6 changes: 5 additions & 1 deletion app/lib/page-content.ts
Original file line number Diff line number Diff line change
Expand Up @@ -350,6 +350,10 @@ export const SECTIONS: readonly SectionData[] = [
{
kind: 'rows',
rows: [
{
label: 'Agent setup',
text: 'One prompt that sets up any coding agent for Datum Cloud: `datumctl` and the plugins you choose, the Datum MCP and Docs MCP servers, the matching Datum skills, and sign-in. Nothing needs to be installed first. Paste "Fetch and execute the appropriate instructions to set me up for Datum Cloud from https://agents.datum.net/setup/prompt.md" into your agent. [/setup](/setup)',
},
{
label: 'llms.txt',
text: 'A concise, standardized index of Datum pages and resources that makes the site instantly readable to any AI model or intelligent agent. [https://www.datum.net/llms.txt](https://www.datum.net/llms.txt)',
Expand All @@ -364,7 +368,7 @@ export const SECTIONS: readonly SectionData[] = [
},
{
label: 'Datum MCP',
text: 'An official, self-hosted MCP server, tightly integrated with Cursor. The `datumctl ai` tools also run as an MCP server for Claude Desktop or any MCP client.',
text: 'The official Datum MCP server, `datum-mcp`: tools for organizations, projects, networking, DNS, compute and more, for Claude Code, Cursor, Codex or any MCP client. It runs locally over stdio and signs in through your browser on first use. [https://github.com/datum-cloud/datum-mcp](https://github.com/datum-cloud/datum-mcp)',
},
{
label: 'Skills',
Expand Down
61 changes: 61 additions & 0 deletions app/routes/setup.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
import { Footer } from '@/components/layout/Footer';
import { Header } from '@/components/layout/Header';
import { PageContainer } from '@/components/layout/PageContainer';
import { Markdown } from '@/components/ui/Markdown';
import prompt from '@/content/setup/prompt.md?raw';
import { buildMeta } from '@/lib/seo';
import type { MetaFunction } from 'react-router';

const SETUP_PROMPT =
'Fetch and execute the appropriate instructions to set me up for Datum Cloud from https://agents.datum.net/setup/prompt.md';

export const meta: MetaFunction = ({ matches }) => {
const parentMeta = matches.flatMap((match) => match.meta ?? []);
return [
...parentMeta,
...buildMeta({
title: 'Datum — Set up your agent',
description:
'One prompt that sets up a coding agent for Datum Cloud: datumctl and its plugins, the Datum MCP and Docs MCP servers, Datum skills, and sign-in.',
path: '/setup',
type: 'article',
}),
];
};

export default function AgentSetup() {
return (
<>
<Header />
<main id="main" className="bg-background text-foreground min-h-dvh">
<PageContainer className="py-16">
<div className="flex flex-wrap items-center gap-x-6 gap-y-2">
<a href="/" className="md-trigger">
<span aria-hidden="true" className="md-trigger__arrow">
←
</span>
<span>Back to agents.datum.net</span>
</a>
<a href="/setup/prompt.md" className="md-trigger">
<span>View as markdown</span>
</a>
</div>
<div className="mt-6 flex max-w-[var(--section-content-max)] flex-col gap-4">
<p className="text-foreground/70 text-[16px] leading-[24px]">
Paste this into Claude Code, Codex, Cursor, GitHub Copilot, OpenCode, Windsurf or any
other coding agent. It follows the instructions below to set itself up for Datum
Cloud.
</p>
<pre className="bg-muted border-border text-foreground rounded-md border p-4 font-mono text-[13px] leading-[1.6] break-words whitespace-pre-wrap">
<code>{SETUP_PROMPT}</code>
</pre>
</div>
<article className="mt-8 max-w-[var(--section-content-max)]">
<Markdown>{prompt}</Markdown>
</article>
</PageContainer>
</main>
<Footer />
</>
);
}
16 changes: 16 additions & 0 deletions app/routes/setup_.prompt[.md].tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
import prompt from '@/content/setup/prompt.md?raw';

/**
* Resource route — serves the agent setup instructions as plain markdown at
* `/setup/prompt.md`. This is the URL users paste into their coding agent
* (the cloud portal's "Onboard your agent" button copies a sentence pointing
* here). Same source file as the `/setup` HTML page, so the two cannot drift.
*/
export function loader() {
return new Response(prompt, {
headers: {
'Content-Type': 'text/markdown; charset=utf-8',
'Cache-Control': 'public, max-age=300, s-maxage=300',
},
});
}
Loading
Loading