| 1 | import type { Route } from "./+types/security"; |
| 2 | import { Contents, PolicyText, TrustPage, outline } from "../components/legal-doc"; |
| 3 | import { CONTACT } from "../lib/legal"; |
| 4 | import { page } from "../lib/meta"; |
| 5 | import text from "../content/security.md?raw"; |
| 6 | |
| 7 | export function meta(args: Route.MetaArgs) { |
| 8 | return page(args, { |
| 9 | title: "Security · g1t", |
| 10 | description: |
| 11 | "How g1t protects your code, accounts and agents: per-run credentials, the audit log, guardrails, isolated sandboxes and push protection. And how to report a vulnerability.", |
| 12 | }); |
| 13 | } |
| 14 | |
| 15 | export default function Security() { |
| 16 | return ( |
| 17 | <TrustPage |
| 18 | eyebrow="Security" |
| 19 | title="How g1t keeps your code and accounts safe" |
| 20 | lede={ |
| 21 | <p> |
| 22 | What we actually do to protect what you build on g1t, and what we haven't built yet. Found a problem? Write |
| 23 | to{" "} |
| 24 | <a className="text-accent hover:underline" href={`mailto:${CONTACT.security}`}> |
| 25 | {CONTACT.security} |
| 26 | </a> |
| 27 | . |
| 28 | </p> |
| 29 | } |
| 30 | aside={<Contents items={outline(text)} />} |
| 31 | > |
| 32 | <PolicyText source={text} /> |
| 33 | </TrustPage> |
| 34 | ); |
| 35 | } |