Omnigent: Databricks가 공개 및 제안하는, 여러 AI 에이전트를 묶는 메타 하네스 프로젝트

Omnigent 소개

요즘 AI 에이전트로 일하는 방식을 떠올려 보면, 한 가지 도구만 쓰는 사람은 드뭅니다. Claude Code로 코드를 작성하다가, Codex에 같은 문제를 한 번 더 물어보고, 검색은 다른 에이전트에 맡기는 식으로 4~5개의 에이전트를 동시에 띄워 두고 그 사이를 오가며 텍스트를 복사해 붙입니다. 에이전트를 만드는 입장에서도 사정은 비슷합니다. 매번 새로 나오는 하네스(harness), SDK, 모델을 조합해 더 나은 에이전트를 만들려고 하지만, 각 하네스가 LLM 능력을 저마다 다른 인터페이스로 감싸 두기 때문에 이들을 묶거나 서로 바꿔 끼우는 일이 생각보다 번거롭습니다.

Databricks가 공개한 Omnigent는 바로 이 지점을 겨냥한 도구입니다. Omnigent는 이미 쓰고 있는 에이전트들(Claude Code, Codex, Pi, 직접 만든 커스텀 에이전트) 위에 한 겹 더 올라타는 계층으로, 이들을 서로 호환되는 부품처럼 다룰 수 있게 해줍니다. 개별 하네스 하나로는 풀기 어려운 문제, 즉 여러 에이전트를 조합하고, 정책으로 통제하고, 팀원과 실시간으로 함께 다루는 문제를 이 상위 계층에서 해결하는 것이 목표입니다. Databricks는 이런 계층을 메타 하네스(meta-harness) 라고 부르며, 머지않아 사람들이 이 새로운 계층을 통해 에이전트와 일하게 될 것이라고 봅니다.

Omnigent는 2026년 6월 Apache License 2.0으로 오픈소스 공개되었고, 공개 직후 며칠 만에 GitHub 스타가 빠르게 늘고 있는 알파 단계 프로젝트입니다. Python 3.12+ 환경에서 동작하며, 터미널 한 줄 설치부터 Modal이나 Daytona 같은 클라우드 샌드박스 배포까지 폭넓게 지원합니다. 이 글에서는 메타 하네스라는 개념이 왜 필요한지, Omnigent가 어떤 구조로 그것을 구현했는지, 그리고 실제로 무엇을 할 수 있는지를 정리합니다.

왜 메타 하네스인가: 에이전트 작업이 한 단계 위로 올라간다

Databricks는 5,000명이 넘는 엔지니어링 조직에서 일찍부터 코딩 에이전트를 도입했고, 고객을 위해 수천 개의 에이전트를 만들어 왔습니다. 그 경험에서 얻은 결론은, 에이전트 엔지니어링의 최전선이 한 단계 위로 이동하고 있다는 것입니다. 가장 좋은 결과는 더 이상 "하나의 모델 + 하나의 하네스"에서 나오지 않습니다.

이를 보여주는 사례는 여럿입니다. Harvey는 오픈소스 워커 모델에 프런티어 모델을 자문역(advisor)으로 붙여 단일 프런티어 모델을 품질과 비용 양쪽에서 앞섰고, Anthropic은 리서치 제품을 리드 에이전트가 병렬 서브에이전트를 지휘하는 구조로 만들었습니다. Databricks 자신의 Genie도 계획, 검색, 코드 생성에 서로 다른 LLM을 씁니다. 엔지니어가 일하는 방식도 바뀌어서, 한 번에 하나의 에이전트에게 프롬프트를 주는 대신 여러 에이전트로 이루어진 팀 전체를 굴리는 루프(loop)를 설계합니다.

이러한 패턴은 본질적으로 여러 하네스, 여러 모델, 여러 사람에 걸쳐 있습니다. 그러나 각 하네스는 자기 세션만 이해합니다. 에이전트를 조합하고, 통제하고, 다른 사람과 함께 작업하려면 하네스보다 위에 있는 계층이 필요합니다. Omnigent가 바로 그 계층이며, 세 가지를 제공합니다.

  • 조합(Composition): 코드를 다시 쓰지 않고 여러 모델, 하네스, 기법을 결합합니다. Claude Code, Codex, Pi, 직접 만든 에이전트 사이를 한 줄 수정으로 전환할 수 있습니다.

  • 제어(Control): 에이전트의 행동을 추적하는 상태 기반(stateful)·맥락 기반(contextual) 정책으로 비용 예산이나 권한 같은 가드레일을 강제합니다. 프롬프트가 아니라 메타 하네스 계층에서 통제합니다.

  • 협업(Collaboration): 실행 중인 에이전트 세션을 URL로 공유하고, 그 안의 파일을 함께 검토합니다. 팀원이 실시간으로 에이전트를 보고, 코멘트를 달고, 함께 방향을 잡을 수 있습니다.

Omnigent는 어떻게 동작하는가

Omnigent의 출발점이 된 핵심 통찰은, 각 하네스가 내부적으로 LLM을 어떻게 호출하든 사용자를 향한 인터페이스는 동일하다는 점입니다. 메시지와 파일이 들어가고, 텍스트 스트림과 도구 호출(tool call)이 나옵니다. Omnigent는 이 공통점을 이용해, 터미널 기반 코딩 에이전트(Claude Code, Codex, Pi 등)와 SDK 기반 에이전트(OpenAI Agents SDK, Claude Agent SDK 등)를 모두 감싸는 공통 API를 만들었습니다.

아래 다이어그램이 전체 구조를 잘 보여줍니다. 러너(Runner) 는 어떤 에이전트든 샌드박스(sandbox)가 적용된 세션으로 감싸 균일한 API를 제공하고, 서버(Server) 는 정책과 공유 기능을 더하며 모든 세션을 터미널, 앱, 웹 API로 노출합니다.

그림 왼쪽의 CLI 에이전트와 커스텀 에이전트가 러너를 거쳐 서버로 모이고, 서버는 히스토리(History), 정책(Policies), MCP, 스킬(Skills) 같은 공통 기능을 얹은 뒤 오른쪽의 터미널 UI, 웹 UI, 네이티브 앱, 모바일 UI, REST API라는 여러 표면으로 다시 펼쳐집니다. 여러 하네스가 아래에서 하나의 메타 하네스 계층으로 수렴했다가, 다양한 인터페이스로 발산하는 흐름입니다.

이 공통 인터페이스 위에서 현재 버전의 Omnigent가 제공하는 주요 기능은 다음과 같습니다.

어디서든 같은 세션: 하나의 에이전트, 여러 인터페이스

Claude Code 같은 에이전트를 Omnigent 서버에 연결해 두면, 같은 세션을 웹, 모바일, macOS 네이티브 앱, API 어디서든 이어서 쓸 수 있습니다. 터미널에서 시작한 작업을 브라우저에서 계속하고, 외출해서는 휴대폰으로 들여다보는 식입니다. 메시지, 서브에이전트, 터미널, 파일이 모두 동기화됩니다.

omnigent 명령을 실행하면 모델을 함께 고른 뒤 터미널 세션을 시작하고, 동시에 http://localhost:6767에 로컬 웹 UI를 띄워 같은 세션을 브라우저(또는 같은 네트워크의 휴대폰)에서 보여줍니다. macOS 데스크톱 앱은 이 웹 UI를 네이티브 창으로 감싸고 OS 알림과 독(dock) 배지를 더해줍니다.

클라우드 샌드박스에서 실행

노트북 없이도 에이전트를 돌릴 수 있습니다. 세션을 Modal이나 Daytona 같은 호스팅 샌드박스 제공자 위에서 실행해, 격리된 환경에서 안전하게 협업할 수 있습니다. CLI에서 직접 띄우거나, 서버가 세션마다 클라우드 샌드박스를 자동으로 프로비저닝하는 managed hosts 방식도 지원합니다.

맥락 기반 보안 정책

Omnigent의 보안 정책은 코딩 에이전트의 단순한 "X는 허용 / Y는 거부" 수준을 넘어섭니다. 각 세션의 동적 상태를 추적해 더 똑똑한 결정을 내립니다. 예를 들어 "에이전트가 npm에서 새 패키지를 내려받은 다음에는 git push를 하기 전에 사람의 승인을 받아라", 또는 "자기가 만든 문서에만 쓸 수 있고 아무 문서나 건드리지는 못하게 하라" 같은 규칙을 정할 수 있습니다.

비용 정책도 이 동적 추적 위에서 동작합니다. Omnigent가 추적하는 것 중 하나가 세션별 LLM 비용인데, "에이전트가 100달러를 쓸 때마다 일시정지하고 계속할지 물어보라" 처럼 지출 한도를 걸 수 있습니다.

정책은 서버 전체(관리자), 에이전트별(개발자), 세션별(사용자)의 세 계층으로 쌓이며, 더 엄격한 세션 규칙이 먼저 검사됩니다. 웹 UI의 세션 정보 패널에서 켜고 끄거나, 채팅에서 "셸 명령을 실행하기 전에 나에게 먼저 물어보는 정책을 추가해줘" 라고 말하면 에이전트가 직접 설정해 줍니다. 서버 설정이나 에이전트 YAML에 기본값을 정의할 수도 있습니다.

policies:
  approve_shell:
    type: function
    handler: omnigent.policies.builtins.safety.ask_on_os_tools   # 셸/파일 쓰기 전에 확인
  cap_calls:
    type: function
    handler: omnigent.policies.builtins.safety.max_tool_calls_per_session
    factory_params:
      limit: 50                    # 한 세션이 호출할 수 있는 도구 수 제한
  budget:
    type: function
    handler: omnigent.policies.builtins.cost.cost_budget
    factory_params:
      max_cost_usd: 5.00           # 하드 지출 상한
      ask_thresholds_usd: [3.00]   # 도중에 소프트 경고

강력한 OS 샌드박스

Omnigent에는 Databricks 보안팀이 만든 유연한 OS 샌드박스(Omnibox)가 포함되어 있습니다. OS 접근을 세밀하게 잠그고, 네트워크 요청을 가로채 변형할 수 있습니다. 예를 들어 에이전트가 GitHub 보안 토큰을 절대 보지 못하게 하되, 승인된 요청에 한해 egress 프록시 단계에서만 토큰을 주입하는 식의 구성이 가능합니다. 이른바 "YOLO 모드"를 그나마 안전하게 돌릴 수 있게 해주는 장치입니다.

멀티 하네스 저작(authoring)

커스텀 에이전트는 짧은 YAML 파일 하나로 정의합니다. 프롬프트, 도구, 그리고 상위 에이전트가 위임할 수 있는 보조 서브에이전트가 들어갑니다. 손으로 쓸 필요도 없이, Omnigent 채팅에서 원하는 에이전트를 말로 설명하면 에이전트가 파일을 대신 작성해 줍니다. 같은 YAML에서 harness 한 줄만 바꾸면 Claude Code용 에이전트를 Codex나 Pi로 그대로 옮길 수 있고, 한 에이전트 안에서 서로 다른 하네스를 쓰는 서브에이전트들을 조합할 수도 있습니다.

name: my_agent
prompt: You are a helpful data analyst.

executor:
  harness: claude-sdk          # or: codex, codex-native, claude-native, openai-agents, pi

tools:
  # A local Python function (schema auto-generated from the signature)
  word_count:
    type: function
    callable: mypackage.mymodule.word_count

  # A sub-agent the supervisor can delegate to
  researcher:
    type: agent
    prompt: Search for relevant information and summarize it.
    tools:
      word_count: inherit

함께 일하기: 실시간 협업

Omnigent가 다른 코딩 에이전트와 가장 크게 다른 지점이 협업입니다. 세션과 작업 디렉토리 자체가 협업의 무대가 됩니다.

웹 UI에서 Share 를 누르고 링크를 보내면, 팀원이 내 에이전트가 일하는 모습을 실시간으로 지켜보며 직접 대화할 수 있습니다. 한 걸음 더 나아가 공동 운전(co-drive) 도 가능합니다. 팀원이 실행 중인 세션에 함께 접속하면, 그 사람의 메시지가 내 컴퓨터에서 실행됩니다. 페어 프로그래밍을 하거나, 조사 도중에 도메인 전문가에게 키보드를 넘길 때 유용합니다.

omnigent attach <session_id>     # 실행 중인 세션에 공동 접속
omnigent run --fork <session_id> # 대화를 내 쪽으로 복제해 독립적으로 이어가기

대화를 포크(fork) 해서 분기 시점부터 내 컴퓨터에서 독립적으로 이어갈 수도 있습니다. 멀티 유저 계정은 환경 변수 OMNIGENT_AUTH_ENABLED=1 하나로 켜지며, Docker 배포에서는 기본으로 활성화됩니다. 초대는 이메일 서버 없이 일회용 초대 링크로 이루어지고, Google, GitHub, Okta, Microsoft 로그인을 OIDC로 연동할 수도 있습니다.

모델과 자격 증명: 무엇이든 끼워 쓰기

Omnigent는 모델 선택을 강제하지 않습니다. omnigent setup 으로 자격 증명을 추가하고 기본값을 정하는데, 네 가지 종류를 모두 동등하게 다룹니다.

종류 설명
:key: API 키 Anthropic, OpenAI 등 1차 제공자의 정식 키
:admission_tickets: 구독 Claude Pro/Max 또는 ChatGPT 플랜 (공식 claude / codex CLI 경유)
:globe_with_meridians: 게이트웨이 OpenAI/Anthropic 호환 base_url + 키 (OpenRouter, LiteLLM, Ollama, vLLM, Azure)
:brick: Databricks Databricks 워크스페이스 프로필 (databricks extra 필요)

기본값은 에이전트별로 따로 잡히므로 Claude 기본값과 Codex 기본값이 공존할 수 있고, 세션 도중에 /model 명령으로 모델을 바꿀 수도 있습니다. 첫 실행 시에는 환경에 이미 있는 ANTHROPIC_API_KEY / OPENAI_API_KEY나 로그인된 claude / codex CLI를 자동으로 인식해 기본값으로 제안합니다.

함께 들어오는 예제 에이전트: 폴리와 데비

저장소에는 두 개의 예제 에이전트가 들어 있어, 메타 하네스가 실제로 무엇을 가능하게 하는지 바로 체감할 수 있습니다.

:octopus: 폴리(Polly)코드를 직접 쓰지 않는 멀티 에이전트 코딩 오케스트레이터(orchestrator)입니다. 테크 리드처럼 계획을 세우고, 작업을 병렬 git worktree 위의 코딩 서브에이전트(Claude Code, Codex, Pi)에게 나눠 맡긴 뒤, 각 변경분(diff)을 작성한 쪽과 다른 벤더의 리뷰어 에게 보내 검토받게 합니다. 최종 병합은 사람이 합니다.

omnigent run examples/polly/
omnigent run examples/polly/ --harness pi   # 오케스트레이터만 다른 하네스로 (서브에이전트는 각자 유지)

:orange_circle::blue_circle: 데비(Debby) 는 머리가 둘 달린 브레인스토밍 파트너입니다. 하나는 Claude, 하나는 GPT인데, 질문 하나가 두 머리 모두에게 전달되어 두 답변을 나란히 펼쳐 보여줍니다. /debate 를 입력하면 두 머리가 몇 라운드 동안 서로의 답을 비판하며 의견을 좁혀 갑니다. (Claude와 OpenAI 자격 증명이 모두 필요합니다.)

이 두 예제는 "서로 다른 벤더의 모델을 한 작업 안에서 역할별로 섞어 쓴다"는 메타 하네스의 핵심 아이디어를 가장 직관적으로 보여주는 데모입니다.

설치와 배포

설치는 한 줄로 끝납니다.

curl -fsSL https://raw.githubusercontent.com/omnigent-ai/omnigent/main/scripts/install_oss.sh | sh

수동 설치를 선호한다면 uv나 pip, 혹은 Homebrew를 쓸 수 있습니다.

uv tool install omnigent          # 또는: pip install "omnigent"
brew install omnigent-ai/tap/omnigent

안정적인 URL을 가진 서버에 올리면 어디서든, 특히 휴대폰에서도 세션에 접근할 수 있습니다. docker compose up 한 번으로 보유한 호스트(VPS, 홈 서버)에서 서버를 띄울 수 있고, Render는 원클릭 배포를, Fly.io, Railway, Hugging Face Spaces, Modal도 모두 지원합니다.

새로운 추상화 계층, 그리고 앞으로

Databricks는 우리 산업의 가장 큰 변화들이 대체로 새로운 추상화 계층으로 옮겨갈 때 일어났다고 봅니다. 예전에는 엔지니어가 개별 프로세스와 서버를 직접 관리했지만, 지금은 KubernetesTerraform 같은 클라우드 시스템으로 함대 전체를 관리합니다. 에이전트도 지금 같은 지점에 와 있다는 것입니다. 각 하네스는 자기만의 컨텍스트, 통제, 실행 방식을 가진 사일로(silo)이고, 도구를 바꾸는 순간 그 어느 것도 따라오지 않습니다. 메타 하네스는 작업을 어떤 하네스보다 위로 끌어올려, 세션과 정책과 스킬이 어떤 에이전트나 모델을 쓰든 나와 함께 남도록 합니다.

향후 로드맵에는 메타 하네스 계층에서의 자동 최적화(GEPA), MemExRLM처럼 에이전트 내부에서 코드 기반으로 자기 상태를 들여다보는 기능, 에이전트가 여러 세션을 넘나들 수 있게 하는 Omnigent Server MCP(MCP), 그리고 더 많은 하네스 통합이 올라 있습니다.

요약하면, Omnigent는 "어떤 모델, 어떤 하네스를 쓰느냐"라는 선택을 매번 다시 하지 않아도 되도록, 그 위에 일관된 작업 계층을 두려는 시도입니다. 모델과 하네스는 분야가 발전하면서 계속 바뀌겠지만, 우리가 일하는 계층까지 그때마다 바뀔 필요는 없다는 것이 이 프로젝트의 출발점입니다. 여러 에이전트를 동시에 쓰는 워크플로우가 익숙해진 개발자라면, 복사·붙여넣기로 메우던 틈을 메타 하네스가 어떻게 메우는지 직접 시험해 볼 만합니다.

라이선스

Omnigent는 Apache License 2.0으로 배포되고 있어, 연구 목적은 물론 상업적 용도로도 자유롭게 사용 및 수정이 가능합니다.

:scroll: Omnigent 소개 블로그

https://www.databricks.com/blog/introducing-omnigent-meta-harness-combine-control-and-share-your-agents

:github: Omnigent GitHub 저장소

:house: Omnigent 홈페이지

커뮤니티 참여

Omnigent는 알파 단계이며 오픈된 형태로 개발되고 있습니다. 직접 써보고 Discord에서 피드백을 남길 수 있습니다.

더 읽어보기




이 글은 GPT 모델로 정리한 글을 바탕으로 한 것으로, 원문의 내용 또는 의도와 다르게 정리된 내용이 있을 수 있습니다. 관심있는 내용이시라면 원문도 함께 참고해주세요! 읽으시면서 어색하거나 잘못된 내용을 발견하시면 덧글로 알려주시기를 부탁드립니다. :hugs:

:pytorch:파이토치 한국 사용자 모임:south_korea:이 정리한 이 글이 유용하셨나요? 회원으로 가입하시면 주요 글들을 이메일:love_letter:로 보내드립니다!
텔레그램(Telegram)이나 Slack/Discord/Teams/Dooray/GoogleChat 등으로도 새 글 알림을 받으실 수 있습니다. :smiley:

:wrapped_gift: 아래:down_right_arrow:쪽에 좋아요:+1:를 눌러주시면 새로운 소식들을 정리하고 공유하는데 힘이 됩니다~ :star_struck: