Echolot
플로

실행과 트리거

플로를 직접, 일정에 따라, 웹훅으로, AI 에이전트용 도구로, 또는 명령줄에서 실행하고, 사용자 없이 플로를 시작하는 트리거를 허용합니다.

플로는 무언가가 시작시킬 때 실행됩니다. 실행 버튼을 누르는 사용자, 플로를 도구로 제공했을 때의 AI 에이전트, 일정, 웹훅, 터미널이나 CI의 echolot flow run입니다. 무엇이 시작하든 모든 요청은 요청 페이지에서 보낼 때와 같은 경로를 거칩니다.

직접 실행

  1. 플로 페이지에서 플로를 엽니다.
  2. 툴바에서 실행을 클릭하거나 ⌘R을 누릅니다.
  3. 플로에 입력이 있으면 플로 이름이 붙은 실행 시트가 입력을 요청합니다. 각 필드에는 입력의 이름, 유형, 필수 여부가 표시되고 기본값이 채워져 있습니다. 기본값을 쓰려면 필드를 비워 두고 실행을 클릭합니다.

플로가 먼저 저장되므로 실행에는 캔버스에 있는 내용이 사용됩니다. 윈도우의 활성 환경으로 실행됩니다. 플로에 오류가 있는 동안에는 실행을 사용할 수 없으며, 툴팁에 “먼저 플로의 문제를 해결하십시오”라고 표시됩니다.

보호된 환경이 활성 상태이면 버튼이 (해당 환경의 이름과 함께) Production에서 실행…으로 바뀌고, Echolot이 실행을 시작하기 전에 한 번 확인합니다. 실행 안의 요청은 다시 묻지 않습니다.

실행 보기

플로가 실행되는 동안 블록이 캔버스에 상태를 표시하고, 그 아래에 실행 로그가 열립니다.

캔버스에서의미
강조 색 테두리블록이 실행 중이거나 사용자를 기다리는 중입니다.
초록색 테두리블록이 끝났습니다.
빨간색 테두리블록이 실패했습니다.

실행 로그에는 다음이 순서대로 나열됩니다.

  • 끝난 블록과 그 소요 시간
  • 로그 블록의 줄과 평가 블록의 console.log
  • 검증 블록과 pm.test의 테스트 결과. 머리글에 테스트 통과/전체가 표시됩니다.
  • 오류(빨간색)
  • 실행이 끝난 방식: Finished in 1.2 s, Stopped in …, 또는 이유와 함께 Failed in …

줄을 클릭하면 해당 블록이 선택됩니다. 블록을 선택하면 인스펙터에서 마지막 실행과 포트별 입력, 출력 값을 볼 수 있습니다. 지우기는 로그와 캔버스의 상태를 비우고, 닫기 버튼은 로그를 숨기며, 툴바의 실행 로그는 다시 표시합니다.

중단(⌘.)은 실행 중에 실행을 대신합니다. 실행을 끝내고, 진행 중인 요청을 닫고, 화면에 떠 있는 질문을 치웁니다.

실행이 실패했고 Mac의 온디바이스 모델을 사용할 수 있으면 로그 머리글의 버튼이 로그를 바탕으로 실패 원인을 설명해 줍니다.

이전 실행

윈도우는 열려 있는 플로의 최근 실행 20개를 보관하며, 일정이나 웹훅이 시작한 실행도 포함됩니다. 이 실행들은 사이드바의 …의 실행 아래(각 실행이 어떻게 끝났는지, 언제 시작했는지, 얼마나 걸렸는지와 함께)와 툴바의 실행 메뉴에 나열됩니다. 하나를 클릭하면 블록 상태와 각 블록의 마지막 실행이 캔버스에 다시 표시됩니다. 실행 메뉴의 캔버스 지우기는 그것들을 캔버스에서 제거합니다.

실행 기록은 윈도우에 남습니다. 플로가 보낸 요청은 다른 전송과 마찬가지로 작업 공간의 기록에 있습니다.

트리거

시작 블록을 선택하면 인스펙터에서 플로의 트리거를 볼 수 있습니다. 실행 버튼과 echolot flow run은 항상 켜져 있습니다. 나머지는 체크해서 추가합니다.

  • 에이전트(MCP 도구)
  • 일정
  • 웹훅

시작 블록에는 켜져 있는 트리거마다 작은 아이콘이 표시되고, 사이드바에는 플로 이름 아래에 표시됩니다.

Order status on webhook의 시작 블록 인스펙터: 웹훅이 체크된 트리거 섹션, POST 메서드와 /order-status 경로, URL 복사와 토큰 복사가 있는 로컬 주소, 허용됨과 취소

트리거 허용

에이전트, 일정, 웹훅은 사용자가 캔버스 앞에 없을 때 플로를 시작하므로, 각각 이 플로에 대한 사용자의 허가도 필요합니다. 체크한 각 트리거 아래에서 허용을 클릭합니다. 그러면 트리거에 허용됨과 취소 버튼이 표시됩니다.

허가는 플로의 현재 상태에 대한 것입니다. 플로 자체, 플로가 보내는 요청과 그 위의 폴더, 작업 공간의 변수, 인증, 프록시, 인증서, 플로가 실행하는 다른 플로가 포함됩니다. 캔버스에서든 Git에서든 에이전트가 하든, 이 중 무엇이라도 바뀌면 다시 허용할 때까지 트리거가 멈춥니다. 그때는 “허용한 후 플로가 변경되었습니다.”라고 표시되고 다시 허용이 나타납니다. 플로는 스스로를 허용할 수 없습니다. 허가는 작업 공간이 아니라 사용자의 Mac에 있는 Echolot에 보관됩니다. 오류가 있는 플로는 트리거로 시작되지 않습니다.

환경 값의 변경(예: 새 토큰)은 허가를 취소하지 않습니다.

에이전트: MCP 도구로서의 플로

플로를 AI 에이전트에게 제공하면 Echolot의 MCP 서버의 도구 하나가 됩니다. 에이전트는 도구 하나를 호출하고, 플로가 요청들을 수행하며, 비밀 값은 Echolot 안에 머뭅니다.

  1. 시작 블록을 선택하고 에이전트(MCP 도구)를 체크합니다.
  2. 도구 이름은 다른 이름을 입력하지 않으면 flow_에 플로의 파일 이름을 밑줄로 이은 값(flow_place_test_order)입니다. 영문자, 숫자, _, -로 최대 64자입니다.
  3. 모델을 위해 도구가 하는 일을 작성합니다. 처음에는 플로의 설명이 들어 있습니다.
  4. 허용을 클릭합니다.
  5. 설정 › 에이전트를 켜고 클라이언트를 연결합니다. AI 에이전트를 참조하세요.

도구의 인수는 플로의 입력이고, 결과는 출력 블록이 받은 값입니다. Place a test order는 place_test_order로 제공됩니다. 플로 도구 모음이 켜져 있는 동안(기본값) 플로가 도구 목록에 나타납니다. 에이전트는 제공되고 허용된 플로만 시작할 수 있습니다.

에이전트가 플로를 시작하면 Echolot이 실행 전에 한 번, 플로가 하려는 일을 보여 주며 묻습니다. 어떤 요청을 어떤 주소로 보내는지, 어떤 변수와 비밀 값을 저장하는지, 어떤 파일을 쓰는지, 어떤 도구와 플로를 실행하는지, 어디에서 사람에게 묻는지입니다. 실행 중에는 승인한 내용이 다시 묻지 않고 실행됩니다. 보호된 환경, 새 호스트, 삭제는 여전히 묻고, 에이전트 자체의 규칙이 거부하는 것도 마찬가지입니다.

에이전트가 시작한 플로의 사람 블록은 에이전트의 클라이언트로 전달됩니다. 클라이언트가 메시지, 코드, 링크를 표시하거나 값을 묻습니다. 승인 블록은 항상 사용자의 몫입니다. 에이전트가 승인 블록에 답하려고 하면 Echolot이 먼저 사용자에게 묻습니다.

어시스턴트도 같은 방식으로 플로를 실행합니다.

일정

플로를 몇 분마다, 또는 달력에 맞춰 저절로 실행합니다.

  1. 시작 블록을 선택하고 일정을 체크합니다. 처음에는 60분마다로 설정됩니다.
  2. 간격을 선택하고 분 수를 입력하거나, 시각 지정(cron)을 선택하고 cron 줄(분, 시, 일, 월, 요일)을 입력합니다. 일정은 둘 중 하나이며 1분에 최대 한 번 실행됩니다.
  3. 허용을 클릭합니다.

허용하면 인스펙터에 날짜와 시간이 함께 다음 실행이 표시됩니다. 예약된 실행은 작업 공간의 윈도우가 열려 있는 동안, 실행 시점의 윈도우의 활성 환경으로, 입력의 기본값으로 시작됩니다. Mac이 잠자기 상태이거나 윈도우가 닫혀 있는 동안 놓친 실행은 Echolot이 다음에 확인할 때 한 번 실행되며, 아직 실행 중인 플로는 다시 시작되지 않습니다. 예약된 실행이 실패하면 알림이 표시됩니다. 앱 없이 일정을 실행하려면 echolot flow serve를 사용하세요.

cron 줄은 Mac의 시간대에서 다섯 개의 필드를 사용합니다. 분(0–59), 시(0–23), 일(1–31), 월(1–12 또는 jan–dec), 요일(0–7 또는 sun–sat, 0과 7은 일요일)입니다. 각 필드에는 *, 숫자, 범위(1-5), 목록(1,15), 간격(*/15, 8-18/2)을 쓸 수 있습니다. 일과 요일이 모두 지정되면 둘 중 하나만 맞아도 됩니다.

cron 줄실행 시점
0 6 * * *매일 6:00(Morning stock check).
0 7 * * 1-5평일 7:00.
*/15 8-18 * * *8:00부터 18:45까지 15분마다.
0 9 1 * *매월 1일 9:00.

사람 블록은 예약된 실행 중에는 누구에게도 물을 수 없으므로 그 경우 실패합니다.

웹훅

무언가가 로컬 주소로 요청을 보내면 플로를 시작합니다.

  1. 시작 블록을 선택하고 웹훅을 체크합니다.
  2. 메서드(GET, POST, PUT, PATCH, DELETE, 기본값 POST)와 /로 시작하는 경로를 선택합니다. 경로는 처음에 /와 플로의 파일 이름입니다.
  3. 허용을 클릭합니다.

허용하면 인스펙터에 POST http://127.0.0.1:52817/order-status 같은 주소가 URL 복사, 토큰 복사와 함께 표시됩니다. Echolot은 윈도우가 열려 있는 동안 이 Mac에서만(127.0.0.1) 수신합니다. 포트는 작업 공간마다 한 번 정해지고 유지됩니다.

호출하는 쪽은 작업 공간의 토큰을 보내야 합니다. 이 토큰은 Echolot이 처음에 만들어 키체인에 보관합니다. 다음 중 어느 방법이든 됩니다.

  • 헤더 Authorization: Bearer <token>
  • 헤더 X-Echolot-Token: <token>
  • 쿼리 매개변수 ?token=<token>
curl -X POST http://127.0.0.1:52817/order-status \
  -H "Authorization: Bearer <token>"

Order status on webhook은 로그인하고, 주문을 가져와서, 그 주문으로 응답합니다. 쿼리와 JSON 본문의 키는 같은 이름의 플로 입력을 채우며, 다른 키는 무시됩니다. 이름이 body인 입력은 본문 전체를 받습니다. 그래서 입력 order가 있는 플로는 ?order=ord_7Hk2Lw 또는 {"order": "ord_7Hk2Lw"}를 받습니다. 실행에는 윈도우의 활성 환경이 사용됩니다.

응답시점
출력을 JSON으로 담은 200실행이 통과했습니다. 본문은 출력 블록이 받은 값이며, 없으면 null입니다.
401토큰이 없거나 잘못되었습니다.
404해당 메서드와 경로에 응답하는 허용된 플로가 없습니다. 오류에 응답하는 플로가 나열됩니다.
413본문이 8 MB보다 큽니다. 플로는 실행되지 않습니다.
500실행이 실패했습니다. 본문에 error와 실행의 ID가 있습니다.
503실행이 중단되었습니다.

웹훅 실행은 2분 뒤에 멈춥니다. 사람 블록은 거기서 누구에게도 물을 수 없으므로 실패합니다.

백그라운드 실행

앱에서 일정과 웹훅이 시작한 실행은 플로가 열려 있는 동안 …의 실행 아래에 나타나며, 실패하면 플로 이름과 오류가 담긴 macOS 알림이 표시됩니다. 이 실행은 사용자가 직접 시작한 실행처럼 사용자의 권한으로 실행되지만, 허용한 플로에 대해서만 실행됩니다.

명령줄에서 실행

echolot 명령은 앱 없이 같은 플로를 실행합니다. CI에서는 이렇게 플로가 릴리스 게이트가 됩니다.

# 플로와 그 입력, 문제를 나열합니다
echolot flow list -w Alpenglow.echolot

# 하나를 실행합니다. 실행이나 테스트가 실패하면 오류로 종료됩니다
echolot flow run morning-stock-check -w Alpenglow.echolot --env staging --no-input

# 입력을 name=value로 전달합니다(페이지 가져와 내보내기 템플릿으로 만든 플로)
echolot flow run export-products -w Alpenglow.echolot --input pages=5

# Ctrl-C를 누를 때까지 일정을 실행하고 웹훅에 응답합니다
echolot flow serve -w Alpenglow.echolot --port 4100
  • flow run은 블록이 끝날 때마다 출력한 다음 결과를 출력합니다. --json은 대신 실행 기록을 출력합니다. 사람 블록은 터미널에서 묻고, --no-input을 쓰면 실행을 실패시키는데 CI에는 이쪽이 필요합니다. 알림 블록은 텍스트를 출력합니다.
  • flow serve는 예약된 플로를 시간이 되면 실행하고 4100번 포트에서 웹훅에 응답합니다(--port 0은 사용 가능한 포트를 고릅니다). --share는 컨테이너를 위해 모든 네트워크 인터페이스에서 수신합니다. 토큰은 --token, 없으면 ECHOLOT_WEBHOOK_TOKEN, 그것도 없으면 새로 만들어 출력하는 값을 사용합니다.
  • 명령줄에서는 사용자가 직접 실행을 시작하므로 플로에 허용이 필요하지 않습니다. flow serve는 일정이나 웹훅이 있고 오류가 없는 모든 플로를 실행합니다.

모든 옵션은 echolot flow에 있습니다.

직접 다운로드 버전 전용

명령줄 도구는 직접 다운로드 버전에 들어 있습니다(Echolot › 명령줄 도구 설치…). App Store 에디션에서는 릴리스 페이지의 zip에서 따로 설치하세요.

버전 비교하기

이 페이지에서