Skip to content
Draft
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: 1 addition & 1 deletion artifacts/api-server/src/lib/feasibility.ts
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@ Build: ${build?.name ?? "unknown"}
Generate the feasibility report. Strict JSON only.`;

const response = await openrouter.chat.completions.create({
model: "deepseek/deepseek-v4-flash",
model: "x-ai/grok-4.3",
max_tokens: 1500,
messages: [
{ role: "system", content: SYSTEM_PROMPT },
Expand Down
2 changes: 1 addition & 1 deletion artifacts/api-server/src/lib/personaReply.ts
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ Voice rules (apply to ALL bots, then layer your personal flavor on top):
Now stay in character.`;

const response = await openrouter.chat.completions.create({
model: "deepseek/deepseek-v4-flash",
model: "x-ai/grok-4.3",
max_tokens: 400,
messages: [
{ role: "system", content: system },
Expand Down
76 changes: 76 additions & 0 deletions artifacts/marsfounder/src/components/PoweredByBanner.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
const WORDMARK_FONT = "'Inter', 'Arial', sans-serif";

export function PoweredByBanner() {
return (
<div className="flex flex-wrap items-center justify-center gap-4 sm:gap-6 opacity-50 hover:opacity-70 transition-opacity duration-300">
<span className="font-mono text-[10px] tracking-widest uppercase text-muted-foreground/70 whitespace-nowrap">
Powered by
</span>

{/* xAI wordmark */}
<svg
viewBox="0 0 64 24"
height="14"
aria-label="xAI"
fill="currentColor"
className="text-foreground/80"
>
<text
x="0"
y="19"
fontFamily={WORDMARK_FONT}
fontWeight="800"
fontSize="20"
letterSpacing="-0.5"
>
xAI
</text>
</svg>

<span className="w-px h-3 bg-border/50" aria-hidden="true" />

{/* Grok wordmark */}
<svg
viewBox="0 0 72 24"
height="14"
aria-label="Grok"
fill="currentColor"
className="text-foreground/80"
>
<text
x="0"
y="19"
fontFamily={WORDMARK_FONT}
fontWeight="700"
fontSize="20"
letterSpacing="-0.5"
>
Grok
</text>
</svg>

<span className="w-px h-3 bg-border/50" aria-hidden="true" />

{/* SpaceX wordmark */}
<svg
viewBox="0 0 104 24"
height="14"
aria-label="SpaceX"
fill="currentColor"
className="text-foreground/80"
>
<text
x="0"
y="19"
fontFamily={WORDMARK_FONT}
fontWeight="800"
fontSize="20"
fontStyle="italic"
letterSpacing="-0.5"
>
SpaceX
</text>
</svg>
</div>
);
}
4 changes: 3 additions & 1 deletion artifacts/marsfounder/src/components/layout.tsx
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import { Link, useLocation } from "wouter";
import { PoweredByBanner } from "@/components/PoweredByBanner";
import {
useGetMarsTime,
useGetLightDelay,
Expand Down Expand Up @@ -102,8 +103,9 @@ export function Layout({ children }: { children: React.ReactNode }) {
</div>
</div>

<div className="max-w-7xl mx-auto mt-12 pt-4 border-t border-border/50 flex justify-between items-center text-[10px] font-mono text-muted-foreground/50">
<div className="max-w-7xl mx-auto mt-12 pt-4 border-t border-border/50 flex flex-col sm:flex-row justify-between items-center gap-4 text-[10px] font-mono text-muted-foreground/50">
<span>© 2026 MARSFOUNDER INC.</span>
<PoweredByBanner />
<span>NOT AFFILIATED WITH NASA OR SPACEX.</span>
</div>
</footer>
Expand Down
4 changes: 2 additions & 2 deletions documentation/architecture.md
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ Browser → Vercel (SPA) → VPS Docker container (Express API) → Neon Postgre
- **Framework**: Express 5, TypeScript
- **Build**: esbuild → single CJS bundle at `dist/index.mjs`
- **Database access**: Drizzle ORM via `@workspace/db`
- **AI**: `@workspace/integrations-anthropic-ai` (OpenRouter via `openai` SDK, model `deepseek/deepseek-v4-flash`)
- **AI**: `@workspace/integrations-anthropic-ai` (OpenRouter via `openai` SDK, model `x-ai/grok-4.3`)
- **Rate limiting**:
- AI routes (`/api/personas/*`, `/api/missions/:id/feasibility`): 15 req/min
- Write routes (`POST /api/builds`, `POST /api/missions`): 30 req/min
Expand Down Expand Up @@ -82,7 +82,7 @@ File: `lib/integrations-anthropic-ai/src/client.ts`

Uses the `openai` SDK pointed at OpenRouter:
- `baseURL`: `https://openrouter.ai/api/v1`
- Model: `deepseek/deepseek-v4-flash`
- Model: `x-ai/grok-4.3`
- Headers: `HTTP-Referer`, `X-Title`
- Env var: `OPENROUTER_API_KEY`

Expand Down