콘텐츠로 이동

Skill 호스팅 환경

Agent.zio의 스킬(Skill) 환경은 사용자가 작성한 파이썬, 쉘, Node.js 등 다양한 스크립트를 즉시 실행하고 배포할 수 있는 초경량 서버리스(Serverless) 호스팅 환경을 제공합니다. 웹 서버(FastAPI, Flask 등)를 구축하면 시스템이 자동으로 포트를 할당하고 외부로 노출되는 안전한 URL을 제공합니다.


기능 설명
동적 포트 할당 (Zero-Config) 웹 서버 작성 시 고정 포트 대신 os.environ.get("PORT", 8000) 코드를 사용하세요. 시스템이 0.1초 만에 빈 포트를 찾아 자동으로 콜드 스타트를 진행합니다.
원스톱 미리보기 (IDE 내장) 에디터 우측 상단의 미리보기 아이콘을 누르면, 브라우저 새 창을 띄울 필요 없이 IDE 내부에서 즉시 구동 화면을 테스트할 수 있습니다.
자동 외부 배포 주소 완성된 웹 스킬은 즉시 외부 접속이 가능한 배포 주소를 갖게 됩니다. (예: https://<인스턴스 주소>:7010/skills/[스킬명]/[경로])
상태 유지 프로세스 일반 스크립트는 30초의 타임아웃을 갖지만, 웹 서버 프레임워크(FastAPI, Flask 등)로 판별되는 코드는 별도 프로세스로 영구 구동되며, 코드 변경(저장) 시 자동으로 재시작(Auto-Reload) 됩니다.

동적 포트를 적용한 간단한 웹 서버의 기본 뼈대입니다.

import os
import uvicorn
from fastapi import FastAPI
from fastapi.staticfiles import StaticFiles
from pathlib import Path
app = FastAPI(title="My Custom Skill")
@app.get("/api/hello")
def hello():
return {"message": "Hello from Serverless Skill!"}
# 웹 페이지 렌더링을 위한 정적 폴더 마운트 (폴더명: admin 권장)
admin_dir = Path(__file__).parent / "admin"
if admin_dir.exists():
app.mount("/", StaticFiles(directory=str(admin_dir), html=True), name="admin")
if __name__ == "__main__":
# 시스템이 주입하는 PORT 환경변수를 반드시 읽어와야 합니다.
port = int(os.environ.get("PORT", 8000))
uvicorn.run(app, host="0.0.0.0", port=port)

팁: 프론트엔드 정적 파일이 담긴 폴더의 이름은 가급적 admin 또는 static으로 명명하세요. 콘솔 창에서 HTML 파일을 자동으로 감지하여 바로가기 링크를 생성해 줍니다.