Fóir: 에이전트가 구축의 기반으로 삼는 백엔드
Fóir는 GraphQL API, 팀을 위한 콘솔, 로그인과 역할, 고객 간 데이터 격리까지 애플리케이션의 백엔드 전체를 하나의 설정 파일로 제공합니다. 코딩 에이전트가 설정을 작성하고 MCP 서버를 통해 프로젝트를 운영할 수 있으므로, 에이전트가 만든 앱은 실제 고객을 맞을 준비가 됩니다.
이 페이지는 foir.io의 간소한 버전으로, 에이전트와 보기보다 읽기를 원하는 분을 위한 것입니다.
프로젝트 만들기: https://platform.foir.io/signup
에이전트로 시작하기
MCP 서버에 연결하고 그곳에서 계약을 읽으세요. MCP 서버는 역할이 허용하는 도구를 나열하고 문서를 검색합니다.
foir mcp- MCP 설정: https://docs.foir.dev/ai/mcp
- 에이전트용 문서 색인: https://docs.foir.dev/llms.txt
- 전체 문서를 한 파일로: https://docs.foir.dev/llms-full.txt
팀이 선택하는 이유
- 하나의 설정 파일로, 원래라면 여러 서비스를 조합해 꾸려야 하는 백엔드를 얻습니다. 데이터베이스 규칙, 로그인, 콘텐츠 편집기, 미디어 전송, 알림, 청구입니다.
- 고객 격리는 데이터베이스에서 강제 적용됩니다. 액세스 규칙이 행 수준 보안으로 컴파일되므로, 누군가 검사를 빠뜨려도 행이 유출될 수 없습니다.
- API는 모델에서 생성되므로, 잘못 작성할 수 있는 수작업 엔드포인트가 없습니다.
- 콘텐츠는 요청마다 결정됩니다. 새 언어나 오디언스는 필드 하나를 설정하는 것으로 끝나며, 아무것도 다시 빌드되지 않습니다.
- 완전 관리형입니다. 호스팅하거나 패치하거나 확장할 것이 없습니다.
- 통제권은 여러분에게 있습니다. 코드는 여러분의 호스팅에서 실행되고, 결제 대금은 여러분의 Stripe 계정으로 바로 들어가며, 모든 레코드는 여러분이 소유한 Postgres 데이터베이스로 내보낼 수 있습니다.
- 에이전트도 안전하게 작업할 수 있습니다. 쓰기는 초안으로 저장되고, 토큰에는 승인한 권한만 담기며, 실제 반영되는 내용은 사람이 최종 승인합니다.
- 인가 엔진(Demesne)은 오픈 소스입니다: https://foir.io/demesne
대상
- 여러 고객에게 판매하는 제품. 각 고객은 공유 모델 위에서 자체 데이터, 구성원, 로그인을 갖는 조직이 됩니다.
- 실제 로그인, 역할, 데이터 격리에 대응할 수 있는, 코딩 에이전트로 만든 앱.
- 하나의 플랫폼에서 여러 클라이언트 프로젝트를 운영하는 에이전시.
- 초안, 예약된 캠페인, 개인화가 필요한 콘텐츠 중심 사이트나 앱.
제공되는 것
| Capability | 기능 |
|---|---|
| 생성되는 API | 모델로부터 만들어지는 GraphQL API입니다. |
| 콘솔 | 모든 모델을 위한 편집기로, 버전, 실시간 공동 편집, 오디언스 시점의 미리 보기를 갖추고 있습니다. |
| Ask Fóir | 콘솔 안의 어시스턴트입니다. 데이터에 관한 질문에 답하고, 역할의 범위 안에서 변경을 초안으로 만듭니다. |
| 로그인 | 하나의 호스팅 로그인으로 패스키, 2단계 인증, 그리고 Google, Apple, Shopify 또는 모든 OIDC 공급자를 지원합니다. |
| 사용자와 역할 | 하나의 사용자 집합을 풀로 관리하며, 멤버십과 역할은 하나의 권한 목록으로 구성합니다. |
| 조직 | 앱을 SaaS로 만듭니다. 각 고객에게 행 수준 보안으로 강제 적용되는 경계가 주어집니다. |
| 키 | 게시 가능 키, 서버 키, 관리자 키를 제공합니다. 키의 스키마에는 해당 키에 부여된 항목만 포함됩니다. |
| 레코드 | 레코드를 소유한 사용자 전용으로 만들 수 있습니다. 업데이트는 멱등성 키를 받으므로 재시도해도 안전합니다. |
| 게시 | 쓰기는 초안으로 저장됩니다. 게시에는 다시 빌드할 필요가 없습니다. 롤아웃은 캠페인을 한 번에 반영하며 롤백할 수 있습니다. |
| 개인화 | 변형은 서버에서 위치, 세그먼트, 직접 정의한 차원을 기준으로 선택됩니다. 변형은 레코드 전체 또는 필드 하나를 대체할 수 있습니다. |
| 오퍼레이션 | 직접 작성한 코드를 서명되고 스코프가 지정된 토큰으로 API를 통해 호출합니다. 모든 실행이 기록됩니다. |
| 시크릿 | 보관소입니다. 함수와 에이전트는 참조만 보유하며 키 자체는 갖지 않습니다. |
| 훅 | 레코드와 오퍼레이션 이벤트가 오퍼레이션을 실행하며, 각 전송은 다시 보낼 수 있습니다. |
| 페이월 | 모든 오퍼레이션에 사용자 또는 조직별 할당량을 둘 수 있으며, Stripe나 앱 스토어에서 구매한 구독으로 할당량이 늘어납니다. |
| 알림과 이메일 | 개인별 설정을 지원하는 푸시 알림과 인박스 알림입니다. 이메일 템플릿은 발송 시점에 레코드 내용으로 채워집니다. |
| 미디어, 검색, 위치 | 이미지는 화면 크기에 맞춰 WebP와 AVIF로 제공됩니다. 의미로 검색할 수 있습니다. 거리 쿼리도 사용할 수 있습니다. |
| 작업 | 게시 중인 페이지에 남긴 노트는 작업이 됩니다. 에이전트가 초안을 작성하고 사람이 승인합니다. |
| 에이전트 | 장시간 실행되는 에이전트가 MCP를 통해 콘텐츠를 최신 상태로 유지하며, 변경할 수 있는 범위는 키로 제한됩니다. |
| 앱 | 콘솔 안에 두는 앱 자체의 관리 페이지와, 다른 시스템의 레코드와 동기화를 유지하는 통합입니다. |
| 내보내기 | 모든 레코드를 소유한 Postgres 데이터베이스로 내보낼 수 있습니다. |
생성되는 API
- 기능
- 모델로부터 만들어지는 GraphQL API입니다.
콘솔
- 기능
- 모든 모델을 위한 편집기로, 버전, 실시간 공동 편집, 오디언스 시점의 미리 보기를 갖추고 있습니다.
Ask Fóir
- 기능
- 콘솔 안의 어시스턴트입니다. 데이터에 관한 질문에 답하고, 역할의 범위 안에서 변경을 초안으로 만듭니다.
로그인
- 기능
- 하나의 호스팅 로그인으로 패스키, 2단계 인증, 그리고 Google, Apple, Shopify 또는 모든 OIDC 공급자를 지원합니다.
사용자와 역할
- 기능
- 하나의 사용자 집합을 풀로 관리하며, 멤버십과 역할은 하나의 권한 목록으로 구성합니다.
조직
- 기능
- 앱을 SaaS로 만듭니다. 각 고객에게 행 수준 보안으로 강제 적용되는 경계가 주어집니다.
키
- 기능
- 게시 가능 키, 서버 키, 관리자 키를 제공합니다. 키의 스키마에는 해당 키에 부여된 항목만 포함됩니다.
레코드
- 기능
- 레코드를 소유한 사용자 전용으로 만들 수 있습니다. 업데이트는 멱등성 키를 받으므로 재시도해도 안전합니다.
게시
- 기능
- 쓰기는 초안으로 저장됩니다. 게시에는 다시 빌드할 필요가 없습니다. 롤아웃은 캠페인을 한 번에 반영하며 롤백할 수 있습니다.
개인화
- 기능
- 변형은 서버에서 위치, 세그먼트, 직접 정의한 차원을 기준으로 선택됩니다. 변형은 레코드 전체 또는 필드 하나를 대체할 수 있습니다.
오퍼레이션
- 기능
- 직접 작성한 코드를 서명되고 스코프가 지정된 토큰으로 API를 통해 호출합니다. 모든 실행이 기록됩니다.
시크릿
- 기능
- 보관소입니다. 함수와 에이전트는 참조만 보유하며 키 자체는 갖지 않습니다.
훅
- 기능
- 레코드와 오퍼레이션 이벤트가 오퍼레이션을 실행하며, 각 전송은 다시 보낼 수 있습니다.
페이월
- 기능
- 모든 오퍼레이션에 사용자 또는 조직별 할당량을 둘 수 있으며, Stripe나 앱 스토어에서 구매한 구독으로 할당량이 늘어납니다.
알림과 이메일
- 기능
- 개인별 설정을 지원하는 푸시 알림과 인박스 알림입니다. 이메일 템플릿은 발송 시점에 레코드 내용으로 채워집니다.
미디어, 검색, 위치
- 기능
- 이미지는 화면 크기에 맞춰 WebP와 AVIF로 제공됩니다. 의미로 검색할 수 있습니다. 거리 쿼리도 사용할 수 있습니다.
작업
- 기능
- 게시 중인 페이지에 남긴 노트는 작업이 됩니다. 에이전트가 초안을 작성하고 사람이 승인합니다.
에이전트
- 기능
- 장시간 실행되는 에이전트가 MCP를 통해 콘텐츠를 최신 상태로 유지하며, 변경할 수 있는 범위는 키로 제한됩니다.
앱
- 기능
- 콘솔 안에 두는 앱 자체의 관리 페이지와, 다른 시스템의 레코드와 동기화를 유지하는 통합입니다.
내보내기
- 기능
- 모든 레코드를 소유한 Postgres 데이터베이스로 내보낼 수 있습니다.
각 경우는 문서에 별도 페이지가 있습니다: https://docs.foir.dev
프로젝트를 시작하는 방법
- 사람이 https://platform.foir.io/signup에서 계정을 만듭니다. 이 단계에는 브라우저가 필요합니다.
foir workspaces create --name acme --select- 모델을 담은
foir.config.ts를 작성하고, 이어서 실행합니다:foir push. - 에이전트가 로그인한 사람으로서 프로젝트에서 작업할 수 있도록
foir mcp를 실행합니다.
알아 두면 좋은 점
- 위치, 로그인 상태, 세그먼트는 서버에서 판단하므로, 요청을 수정해 개인화를 위조할 수 없습니다.
- 결정된 변형이 포함된 응답은 비공개로 표시되므로, 공유 캐시가 한 방문자의 버전을 다른 방문자에게 제공하지 않습니다.
- Fóir와 Supabase, Firebase, Sanity, Payload 등의 비교: https://foir.io/compare
- 요금: https://foir.io/pricing