OpenFang ๊ตฌ์ถ• ํŠœํ† ๋ฆฌ์–ผ

โ€ขAI Expert

๋‚œ์ด๋„: ์ž…๋ฌธ | ์†Œ์š” ์‹œ๊ฐ„: 15๋ถ„ | ๋ชฉํ‘œ: OpenFang ๋ฐฐํฌ ๋ฐ ๋ชจ๋ธ ์„ค์ • ๋งˆ์Šคํ„ฐ

์„œ๋ก 

๊ฐ€๋ณ๊ณ  ๊ฐ•๋ ฅํ•œ AI Agent ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์ฐพ๊ณ  ์žˆ๋‹ค๋ฉด OpenFang์„ ์ฃผ๋ชฉํ•ด ๋ณด์„ธ์š”. ์ด๋Š” Rust๋กœ ์ž‘์„ฑ๋œ ์˜คํ”ˆ ์†Œ์Šค Agent Operating System์œผ๋กœ, ์‹œ์Šคํ…œ ์ „์ฒด๋ฅผ ์ปดํŒŒ์ผํ•ด๋„ ํฌ๊ธฐ๊ฐ€ ์•ฝ 32MB์— ๋ถˆ๊ณผํ•˜์ง€๋งŒ Anthropic Claude, Google Gemini, OpenAI GPT, DeepSeek, Groq ๋“ฑ 20๊ฐœ ์ด์ƒ์˜ ์ฃผ์š” LLM ์ œ๊ณต์—…์ฒด๋ฅผ ๊ธฐ๋ณธ์ ์œผ๋กœ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

๊ธฐ์กด ํ”„๋ ˆ์ž„์›Œํฌ์™€ ๋‹ฌ๋ฆฌ OpenFang์€ ๋‹จ์ˆœํ•œ Chatbot ๋ž˜ํผ๊ฐ€ ์•„๋‹ˆ๋ผ, ์‚ฌ์šฉ์ž๋ฅผ ์œ„ํ•ด ์‹ค์ œ๋กœ ์ผํ•˜๋Š” ์ž์œจํ˜• Agent ์‹œ์Šคํ…œ์ž…๋‹ˆ๋‹ค. ๋ฏธ๋ฆฌ ์ •ํ•ด์ง„ ๊ณ„ํš์— ๋”ฐ๋ผ ์‹คํ–‰๋˜๋ฉฐ ์ง€์‹ ๊ทธ๋ž˜ํ”„ ๊ตฌ์ถ•, ๋ชฉํ‘œ ๋ชจ๋‹ˆํ„ฐ๋ง, ์ž ์žฌ ๊ณ ๊ฐ ์ƒ์„ฑ, ์†Œ์…œ ๋ฏธ๋””์–ด ๊ด€๋ฆฌ ๋“ฑ์„ ๋„์™€์ฃผ๊ณ  ๊ฒฐ๊ณผ๋ฅผ Dashboard์— ์ž๋™์œผ๋กœ ๋ณด๊ณ ํ•ฉ๋‹ˆ๋‹ค.

์˜ค๋Š˜ ํ•จ๊ป˜ ๊ตฌ์ถ•ํ•ด ๋ด…์‹œ๋‹ค.


๋Œ€์ƒ ๋…์ž

  • 1~5๋…„ ์ฐจ ๊ฒฝ๋ ฅ์˜ ๊ฐœ๋ฐœ์ž
  • AI Agent์— ๊ด€์‹ฌ์ด ์žˆ๋Š” ๊ธฐ์ˆ  ์ธ๋ ฅ
  • ๋กœ์ปฌ AI ๊ธฐ๋Šฅ์„ ๋น ๋ฅด๊ฒŒ ๋ฐฐํฌํ•˜๊ณ  ์‹ถ์€ ๊ธฐ์ˆ  ์• ํ˜ธ๊ฐ€

ํ•ต์‹ฌ ์˜์กด์„ฑ ๋ฐ ํ™˜๊ฒฝ

์‹œ์ž‘ํ•˜๊ธฐ ์ „์— ์‹œ์Šคํ…œ์ด ๋‹ค์Œ ์กฐ๊ฑด์„ ์ถฉ์กฑํ•˜๋Š”์ง€ ํ™•์ธํ•˜์„ธ์š”.

  • ์šด์˜์ฒด์ œ: Linux, macOS, Windows (WSL2 ๋˜๋Š” PowerShell)
  • Rust: 1.75+ (rustup ์‚ฌ์šฉ ๊ถŒ์žฅ)
  • ๋ฉ”๋ชจ๋ฆฌ: ์ตœ์†Œ 4GB RAM
  • ๋””์Šคํฌ: ์ตœ์†Œ 500MB ์—ฌ์œ  ๊ณต๊ฐ„

Rust ์„ค์น˜ (๋ฏธ์„ค์น˜ ์‹œ)

# Linux/macOS
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

# Windows (PowerShell ์‚ฌ์šฉ)
irm https://sh.rustup.rs | iex

์„ค์น˜ ์™„๋ฃŒ ํ›„ rustc --version์„ ์‹คํ–‰ํ•˜์—ฌ ๋ฒ„์ „์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.


ํ”„๋กœ์ ํŠธ ๊ตฌ์กฐ

openfang/
โ”œโ”€โ”€ agents/                 # Agent ํ…œํ”Œ๋ฆฟ ๋””๋ ‰ํ† ๋ฆฌ
โ”‚   โ”œโ”€โ”€ hello-world/
โ”‚   โ”œโ”€โ”€ coder/
โ”‚   โ”œโ”€โ”€ researcher/
โ”‚   โ””โ”€โ”€ ...
โ”œโ”€โ”€ crates/                # Rust crates (14๊ฐœ)
โ”‚   โ”œโ”€โ”€ openfang-cli/      # CLI ์ปค๋งจ๋“œ๋ผ์ธ
โ”‚   โ”œโ”€โ”€ openfang-runtime/  # ๋Ÿฐํƒ€์ž„ ์ฝ”์–ด
โ”‚   โ”œโ”€โ”€ openfang-api/      # REST API
โ”‚   โ””โ”€โ”€ ...
โ”œโ”€โ”€ docs/                  # ๊ณต์‹ ๋ฌธ์„œ
โ”œโ”€โ”€ sdk/                   # ๋‹ค๊ตญ์–ด SDK
โ”‚   โ”œโ”€โ”€ python/
โ”‚   โ””โ”€โ”€ javascript/
โ””โ”€โ”€ config.toml.example    # ์„ค์ • ์˜ˆ์‹œ

๋น ๋ฅธ ์„ค์น˜

๋ฐฉ๋ฒ• 1: ๊ณต์‹ ์›ํด๋ฆญ ์„ค์น˜ (๊ถŒ์žฅ)

Linux/macOS:

curl -fsSL https://openfang.sh/install | sh

Windows PowerShell:

irm https://openfang.sh/install.ps1 | iex

์„ค์น˜๊ฐ€ ์™„๋ฃŒ๋˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ฉ”์‹œ์ง€๊ฐ€ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค:

โœ… OpenFang installed successfully!
Run 'openfang init' to get started.

๋ฐฉ๋ฒ• 2: ์ˆ˜๋™ ์ปดํŒŒ์ผ

์†Œ์Šค ์ฝ”๋“œ์—์„œ ์ง์ ‘ ๋นŒ๋“œํ•˜๊ฑฐ๋‚˜ ์›ํด๋ฆญ ์„ค์น˜๋ฅผ ์ง€์›ํ•˜์ง€ ์•Š๋Š” ํ™˜๊ฒฝ์˜ ๊ฒฝ์šฐ:

# ์ €์žฅ์†Œ ๋ณต์ œ
git clone https://github.com/RightNow-AI/openfang.git
cd openfang

# release ๋ฒ„์ „ ์ปดํŒŒ์ผ
cargo build --release

# ๋˜๋Š” CLI๋งŒ ์ปดํŒŒ์ผ
cargo build --release -p openfang-cli

์ปดํŒŒ์ผ์ด ์™„๋ฃŒ๋˜๋ฉด ๋ฐ”์ด๋„ˆ๋ฆฌ ํŒŒ์ผ์€ target/release/openfang(๋˜๋Š” target/release/openfang.exe)์— ์œ„์น˜ํ•ฉ๋‹ˆ๋‹ค.


์ดˆ๊ธฐ ์„ค์ •

์„ค์ • ํŒŒ์ผ ์ƒ์„ฑ

์ดˆ๊ธฐํ™” ๋ช…๋ น์„ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค:

openfang init

์‚ฌ์šฉ์ž ํ™ˆ ๋””๋ ‰ํ† ๋ฆฌ์— ์„ค์ • ํด๋”๊ฐ€ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค:

~/.openfang/
โ””โ”€โ”€ config.toml    # ๋ฉ”์ธ ์„ค์ • ํŒŒ์ผ

์„ค์ • ํŒŒ์ผ ๊ตฌ์กฐ

~/.openfang/config.toml์„ ์—ด๋ฉด ๊ธฐ์ดˆ ์„ค์ •์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค:

# API ์„œ๋น„์Šค ์„ค์ •
host = "127.0.0.1"
port = 4200

# API ํ‚ค (์„ ํƒ ์‚ฌํ•ญ, ์šด์˜ ํ™˜๊ฒฝ์—์„œ๋Š” ์„ค์ •์„ ๊ถŒ์žฅ)
api_key = ""

# ๊ธฐ๋ณธ ๋ชจ๋ธ ์„ค์ •
[default_model]
provider = "groq"
model = "llama-3.3-70b-versatile"

# Agent ๊ธฐ๋ณธ ์„ค์ •
[agents.defaults]

[!TIP]
์„ค์ • ํŒŒ์ผ์˜ ๋ชจ๋“  ํ•„๋“œ๋Š” ์„ ํƒ ์‚ฌํ•ญ์ด๋ฉฐ, ๋ˆ„๋ฝ๋œ ํ•„๋“œ๋Š” ๊ธฐ๋ณธ๊ฐ’์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

API Key ์„ค์ •

OpenFang์€ ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ ํ†ตํ•œ API Key ์„ค์ •์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ๋จผ์ € ์ฒดํ—˜ํ•ด ๋ณด๋ ค๋ฉด Groq(๋ฌด๋ฃŒ ํ•œ๋„)์ด๋‚˜ Defapi(๋ฐ˜๊ฐ’)๋ฅผ ์ถ”์ฒœํ•ฉ๋‹ˆ๋‹ค:

# ๋ฐฉ๋ฒ• 1: Groq (๋ฌด๋ฃŒ, ์†๋„ ์ œํ•œ ์žˆ์Œ)
export GROQ_API_KEY="gsk_๋‹น์‹ ์˜Groqํ‚ค"

# ๋ฐฉ๋ฒ• 2: Defapi (๋ฐ˜๊ฐ’, ๊ถŒ์žฅ)
export DEFAPI_API_KEY="๋‹น์‹ ์˜Defapiํ‚ค"

[!WARNING]
API Key๋ฅผ ์„ค์ • ํŒŒ์ผ์— ์ง์ ‘ ์ž‘์„ฑํ•˜์ง€ ๋ง๊ณ , ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ ์ฐธ์กฐํ•˜๋„๋ก ํ•˜์„ธ์š”.


์„œ๋น„์Šค ์‹œ์ž‘

OpenFang ์‹คํ–‰

openfang start

๋‹ค์Œ๊ณผ ์œ ์‚ฌํ•œ ์ถœ๋ ฅ์ด ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค:

๐Ÿš€ Starting OpenFang daemon...
๐Ÿ“ก Server listening on http://127.0.0.1:4200
๐ŸŒ Dashboard: http://127.0.0.1:4200
โœ… OpenFang is ready!

์„œ๋น„์Šค ํ™•์ธ

# ์ƒํƒœ ํ™•์ธ
curl http://127.0.0.1:4200/api/health

# ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋ชจ๋ธ ํ™•์ธ
curl http://127.0.0.1:4200/api/models

# ์ œ๊ณต์—…์ฒด ์ƒํƒœ ํ™•์ธ
curl http://127.0.0.1:4200/api/providers

Dashboard ์ ‘์†

๋ธŒ๋ผ์šฐ์ €์—์„œ http://127.0.0.1:4200์— ์ ‘์†ํ•˜๋ฉด OpenFang์˜ Web Dashboard๋ฅผ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


์ฒซ ๋ฒˆ์งธ Agent

๋‚ด์žฅ ํ…œํ”Œ๋ฆฟ ์‚ฌ์šฉ

OpenFang์€ agents/ ๋””๋ ‰ํ† ๋ฆฌ์— ์—ฌ๋Ÿฌ ๋‚ด์žฅ Agent ํ…œํ”Œ๋ฆฟ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค:

# ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ํ…œํ”Œ๋ฆฟ ๋ชฉ๋ก ํ™•์ธ
openfang template list

์ฃผ์š” ํ…œํ”Œ๋ฆฟ:

  • hello-world: ๊ฐ€์žฅ ๋‹จ์ˆœํ•œ ๋Œ€ํ™”ํ˜• Agent
  • coder: ์ฝ”๋“œ ์ž‘์„ฑ ๋„์šฐ๋ฏธ
  • researcher: ์—ฐ๊ตฌ ๋ณด์กฐ
  • assistant: ๋ฒ”์šฉ ๋น„์„œ

Agent ์ƒ์„ฑ

# hello-world ํ…œํ”Œ๋ฆฟ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ƒ์„ฑ
openfang agent create hello-world my-first-agent

๋ฉ”์‹œ์ง€ ํ…Œ์ŠคํŠธ

# CLI๋ฅผ ํ†ตํ•ด ๋ฉ”์‹œ์ง€ ์ „์†ก
openfang agent message my-first-agent "Hello, say hi in 3 words"

๋˜๋Š” REST API๋ฅผ ํ†ตํ•ด:

curl -X POST http://127.0.0.1:4200/api/agents/{agent-id}/message \
  -H "Content-Type: application/json" \
  -d '{"message": "Hello, say hi in 3 words"}'

์ •์ƒ์ ์ธ ์‘๋‹ต์ด ๋Œ์•„์˜จ๋‹ค๋ฉด Agent๊ฐ€ ์ž˜ ์ž‘๋™ํ•˜๊ณ  ์žˆ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค!


๋ชจ๋ธ ์„ค์ • ์‹ค์ „

Groq ์„ค์ • (๋ฌด๋ฃŒ ํ•œ๋„)

Groq์€ ๋ฌด๋ฃŒ ํ‹ฐ์–ด๋ฅผ ์ œ๊ณตํ•˜๋ฉฐ ์†๋„๊ฐ€ ๋งค์šฐ ๋นจ๋ผ ๊ฐœ๋ฐœ ๋ฐ ํ…Œ์ŠคํŠธ์— ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค:

# ~/.openfang/config.toml
[default_model]
provider = "groq"
model = "llama-3.3-70b-versatile"

ํ™˜๊ฒฝ ๋ณ€์ˆ˜:

export GROQ_API_KEY="gsk_๋‹น์‹ ์˜ํ‚ค"

[!TIP]
Groq ๋ฌด๋ฃŒ ํ‹ฐ์–ด๋Š” ์†๋„ ์ œํ•œ(Rate Limit)์ด ์žˆ์œผ๋‹ˆ ๊ฐœ๋ฐœ ํ…Œ์ŠคํŠธ์šฉ์œผ๋กœ ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค. ์šด์˜ ํ™˜๊ฒฝ์—์„œ๋Š” ๋‹ค๋ฅธ ์ œ๊ณต์—…์ฒด ์‚ฌ์šฉ์„ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค.

Defapi ์„ค์ • (๋ฐ˜๊ฐ’ ์ถ”์ฒœ)

๊ณ ์„ฑ๋Šฅ ๋ชจ๋ธ์„ ์ €๋ ดํ•œ ๊ฐ€๊ฒฉ์— ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด Defapi๊ฐ€ ํ›Œ๋ฅญํ•œ ์„ ํƒ์ž…๋‹ˆ๋‹ค. ๊ฐ€๊ฒฉ์ด ๊ณต์‹๊ฐ€์˜ 50% ์ˆ˜์ค€์ž…๋‹ˆ๋‹ค:

  • Gemini 2.5 Pro: ๊ณต์‹ $1.25/M โ†’ Defapi ๋‹จ $0.625/M
  • Claude Sonnet 4: ๊ณต์‹ $3.00/M โ†’ Defapi ๋‹จ $1.50/M
# ~/.openfang/config.toml

# ์ปค์Šคํ…€ ์ œ๊ณต์—…์ฒด ์ถ”๊ฐ€
[[providers]]
name = "defapi"
base_url = "https://api.defapi.org/v1"
api_key_env = "DEFAPI_API_KEY"

# ๊ธฐ๋ณธ ๋ชจ๋ธ ์„ค์ •
[default_model]
provider = "defapi"
model = "claude-sonnet-4-20250514"

ํ™˜๊ฒฝ ๋ณ€์ˆ˜:

export DEFAPI_API_KEY="๋‹น์‹ ์˜Defapiํ‚ค"

[!TIP]
Defapi๋Š” v1/chat/completions, v1/messages, v1beta/models/* ๋“ฑ ๋‹ค์–‘ํ•œ ํ”„๋กœํ† ์ฝœ์„ ์ง€์›ํ•˜๋ฉฐ OpenFang๊ณผ ์™„๋ฒฝํžˆ ํ˜ธํ™˜๋ฉ๋‹ˆ๋‹ค.

Anthropic Claude ์„ค์ •

[default_model]
provider = "anthropic"
model = "claude-sonnet-4-20250514"
export ANTHROPIC_API_KEY="sk-ant-๋‹น์‹ ์˜ํ‚ค"

Google Gemini ์„ค์ •

[default_model]
provider = "gemini"
model = "gemini-2.5-flash"
# GEMINI_API_KEY ๋˜๋Š” GOOGLE_API_KEY ๋ชจ๋‘ ๊ฐ€๋Šฅ
export GEMINI_API_KEY="AIza๋‹น์‹ ์˜ํ‚ค"

OpenAI ์„ค์ •

[default_model]
provider = "openai"
model = "gpt-4o-mini"
export OPENAI_API_KEY="sk-๋‹น์‹ ์˜ํ‚ค"

์ž์ฃผ ๋ฌป๋Š” ์งˆ๋ฌธ(FAQ) ๋ฐ ๋ฌธ์ œ ํ•ด๊ฒฐ

Q1: API Key๊ฐ€ ์ ์šฉ๋˜์ง€ ์•Š๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค

ํ™•์ธ ๋‹จ๊ณ„:

  1. ํ™˜๊ฒฝ ๋ณ€์ˆ˜๊ฐ€ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ๋‚ด๋ณด๋‚ด์กŒ๋Š”์ง€ ํ™•์ธ: echo $GROQ_API_KEY
  2. OpenFang ์„œ๋น„์Šค ์žฌ์‹œ์ž‘: openfang restart
  3. ์ œ๊ณต์—…์ฒด ์ƒํƒœ ํ™•์ธ: curl http://127.0.0.1:4200/api/providers

Q2: ๋ชจ๋ธ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค๊ณ  ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค

๊ฐ€๋Šฅํ•œ ์›์ธ:

  • API Key ๋ฏธ์„ค์ • ๋˜๋Š” ํ˜•์‹ ์˜ค๋ฅ˜
  • ํ•ด๋‹น ๋ชจ๋ธ์ด ์ œ๊ณต์—…์ฒด ์ง€์› ๋ชฉ๋ก์— ์—†์Œ
  • ๋„คํŠธ์›Œํฌ ์—ฐ๊ฒฐ ๋ฌธ์ œ

ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•:

# ์ƒ์„ธ ๋ชจ๋ธ ๋ชฉ๋ก ํ™•์ธ
curl http://127.0.0.1:4200/api/models | jq

# ํŠน์ • ์ œ๊ณต์—…์ฒด ์—ฐ๊ฒฐ ํ…Œ์ŠคํŠธ
curl -X POST http://127.0.0.1:4200/api/providers/groq/test

Q3: 4200 ํฌํŠธ๊ฐ€ ์ด๋ฏธ ์‚ฌ์šฉ ์ค‘์ž…๋‹ˆ๋‹ค

# ์ ์œ  ์ค‘์ธ ํ”„๋กœ์„ธ์Šค ํ™•์ธ
lsof -i :4200   # Linux/macOS
netstat -ano | findstr :4200  # Windows

# ์„ค์ • ํŒŒ์ผ์„ ์ˆ˜์ •ํ•˜์—ฌ ๋‹ค๋ฅธ ํฌํŠธ ์‚ฌ์šฉ
# ~/.openfang/config.toml
port = 4201

Q4: ์ปดํŒŒ์ผ ์˜ค๋ฅ˜ ๋ฐœ์ƒ

Rust ๋ฒ„์ „์ด ์ตœ์‹ ์ธ์ง€ ํ™•์ธํ•˜์„ธ์š”:

rustup update
rustc --version  # 1.75 ์ด์ƒ์ด์–ด์•ผ ํ•จ

์˜์กด์„ฑ ๋ฌธ์ œ์ธ ๊ฒฝ์šฐ ๋‹ค์Œ์„ ์‹œ๋„ํ•˜์„ธ์š”:

cargo clean
cargo build --release

Q5: Windows์—์„œ ๋ช…๋ น์–ด๋ฅผ ์ฐพ์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค

OpenFang ๋ฐ”์ด๋„ˆ๋ฆฌ ํŒŒ์ผ์ด PATH์— ํฌํ•จ๋˜์–ด ์žˆ๋Š”์ง€ ํ™•์ธํ•˜์„ธ์š”:

# ๋ฐ”์ด๋„ˆ๋ฆฌ ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ PATH์— ์ถ”๊ฐ€ (์˜๊ตฌ์ )
$env:PATH += ";$env:USERPROFILE\.openfang\bin"

# ๋˜๋Š” ์ „์ฒด ๊ฒฝ๋กœ๋ฅผ ์ง์ ‘ ์‚ฌ์šฉ
~\.openfang\bin\openfang.exe start

Q6: ๋กœ๊ทธ ํ™•์ธ ๋ฐฉ๋ฒ•

# ์‹ค์‹œ๊ฐ„ ๋กœ๊ทธ ํ™•์ธ
openfang logs

# ๋˜๋Š” ๋กœ๊ทธ ํŒŒ์ผ ์ง์ ‘ ํ™•์ธ
cat ~/.openfang/logs/openfang.log

์‹ฌํ™” ๋ฐฉํ–ฅ

Hands: 7๊ฐ€์ง€ ๋‚ด์žฅ ๋Šฅ๋ ฅ ํŒฉ

OpenFang์˜ ๊ฐ€์žฅ ํฐ ํŠน์ง•์€ 7๊ฐ€์ง€ ๊ฐ•๋ ฅํ•œ Hands๊ฐ€ ๋‚ด์žฅ๋˜์–ด ์žˆ๋‹ค๋Š” ์ ์ž…๋‹ˆ๋‹ค:

Hand๊ธฐ๋Šฅ
ClipYouTube ๋™์˜์ƒ ๋‹ค์šด๋กœ๋“œ, ํŽธ์ง‘, ๋”๋น™, ์†Œ์…œ ๋ฏธ๋””์–ด ์ž๋™ ๊ฒŒ์‹œ
Lead์ผ์ผ ๋ฆฌ๋“œ ์ƒ์„ฑ, ๊ณ ๊ฐ ๋ฐœ๊ตด, ์ ์ˆ˜ ์‚ฐ์ •, ์ค‘๋ณต ์ œ๊ฑฐ
CollectorOSINT ์ •๋ณด ์ˆ˜์ง‘, ๋ณ€๊ฒฝ ๊ฐ์ง€, ์ง€์‹ ๊ทธ๋ž˜ํ”„ ๊ตฌ์ถ•
Predictor์˜ˆ์ธก ์—”์ง„, ์‹ ๋ขฐ ๊ตฌ๊ฐ„, ์ •ํ™•๋„ ์ถ”์ 
Researcher์‹ฌ์ธต ์—ฐ๊ตฌ, ๋‹ค์ค‘ ์†Œ์Šค ๊ต์ฐจ ๊ฒ€์ฆ, APA ํ˜•์‹ ๋ณด๊ณ ์„œ
Twitter์ž๋™ ํŠธ์œ—, ๋Œ€๋Œ“๊ธ€ ์ƒํ˜ธ์ž‘์šฉ, ๊ฒŒ์‹œ ์ผ์ • ๊ด€๋ฆฌ
Browser์›น ์ž๋™ํ™”, ์–‘์‹ ์ž‘์„ฑ, ๋‹ค๋‹จ๊ณ„ ์›Œํฌํ”Œ๋กœ์šฐ
# Researcher Hand ํ™œ์„ฑํ™”
openfang hand activate researcher

# ์ƒํƒœ ํ™•์ธ
openfang hand status researcher

# ์ผ์‹œ ์ค‘์ง€
openfang hand pause researcher

์ปค์Šคํ…€ Agent ๊ฐœ๋ฐœ

์ปค์Šคํ…€ Agent๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค:

# my-agent.toml
name = "my-agent"
version = "0.1.0"
description = "My custom agent"
author = "you"

[model]
provider = "groq"
model = "llama-3.3-70b-versatile"

[capabilities]
tools = ["file_read", "web_fetch", "bash"]
memory_read = ["*"]
memory_write = ["self.*"]
# ์ปค์Šคํ…€ Agent ๋ฐฐํฌ
openfang agent deploy my-agent.toml

MCP ํ†ตํ•ฉ

OpenFang์€ MCP (Model Context Protocol)๋ฅผ ์ง€์›ํ•˜์—ฌ ๋‹ค์–‘ํ•œ ์™ธ๋ถ€ ์„œ๋น„์Šค์™€ ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

[[mcp_servers]]
name = "filesystem"
command = "npx"
args = ["-y", "@modelcontextprotocol/server-filesystem", "/path/to/dir"]

์š”์•ฝ

์˜ค๋Š˜ ์šฐ๋ฆฌ๋Š” OpenFang์˜ ์ „์ฒด ๊ตฌ์ถ• ๊ณผ์ •์„ ํ•จ๊ป˜ ์™„๋ฃŒํ–ˆ์Šต๋‹ˆ๋‹ค:

  • โœ… OpenFang ์„ค์น˜ (๊ณต์‹ ์Šคํฌ๋ฆฝํŠธ ๋˜๋Š” ์ˆ˜๋™ ์ปดํŒŒ์ผ)
  • โœ… ์ดˆ๊ธฐ ์„ค์ • (config.toml + ํ™˜๊ฒฝ ๋ณ€์ˆ˜)
  • โœ… ์„œ๋น„์Šค ์‹œ์ž‘ ๋ฐ ๊ฒ€์ฆ
  • โœ… ์ฒซ ๋ฒˆ์งธ Agent ์ƒ์„ฑ ๋ฐ ํ…Œ์ŠคํŠธ
  • โœ… ๋‹ค์–‘ํ•œ LLM ์ œ๊ณต์—…์ฒด ์„ค์ • (Groq, Defapi, Claude, Gemini)
  • โœ… ์ผ๋ฐ˜์ ์ธ ๋ฌธ์ œ ํ•ด๊ฒฐ

์ด์ œ ์™„์ „ํ•œ AI Agent ์‹คํ–‰ ํ”Œ๋žซํผ์„ ๊ฐ–๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค! ๋‹ค์Œ ๋‹จ๊ณ„๋กœ ์ด๊ฒƒ๋“ค์„ ์‹œ๋„ํ•ด ๋ณด์„ธ์š”:

  1. Hands ์ค‘ ํ•˜๋‚˜๋ฅผ ํ™œ์„ฑํ™”ํ•˜์—ฌ ์ž๋™ํ™” ์—…๋ฌด ๋Šฅ๋ ฅ์„ ์ฒดํ—˜ํ•ด ๋ณด์„ธ์š”.
  2. ์ปค์Šคํ…€ Agent๋ฅผ ์ƒ์„ฑํ•˜์—ฌ ์ž์‹ ๋งŒ์˜ ๋„๊ตฌ์™€ ๋Šฅ๋ ฅ์„ ์ •์˜ํ•ด ๋ณด์„ธ์š”.
  3. MCP ํ†ตํ•ฉ์„ ํƒ๊ตฌํ•˜์—ฌ ๋” ๋งŽ์€ ์™ธ๋ถ€ ์„œ๋น„์Šค๋ฅผ ์—ฐ๊ฒฐํ•ด ๋ณด์„ธ์š”.

์ฆ๊ฑฐ์šด ๊ฐœ๋ฐœ ๋˜์‹œ๊ธธ ๋ฐ”๋ž๋‹ˆ๋‹ค!

[!TIP]
์šด์˜ ํ™˜๊ฒฝ์—์„œ๋Š” Defapi(๋ฐ˜๊ฐ’)๋ฅผ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ ์—ฌ๋Ÿฌ Provider๋ฅผ ์„ค์ •ํ•˜์—ฌ ์žฅ์•  ์กฐ์น˜(Failover)๋ฅผ ๊ตฌํ˜„ํ•จ์œผ๋กœ์จ ์„œ๋น„์Šค ์•ˆ์ •์„ฑ์„ ํ™•๋ณดํ•˜๋Š” ๊ฒƒ์„ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค.


ํ™•์žฅ ์ฝ๊ธฐ

OpenFang ๊ตฌ์ถ• ํŠœํ† ๋ฆฌ์–ผ