> ## Documentation Index
> Fetch the complete documentation index at: https://docs.nora.my/llms.txt
> Use this file to discover all available pages before exploring further.

# nora flows

> 터미널에서 Flow 관리. 나열, 편집, 배포, 롤백

`flows` 명령 그룹이 Flow 한살이의 주요 핸들. 일상 CLI 작업 대부분이 이걸 거침. `nora flows use <slug>`로 활성 Flow를 고정하면 이후 명령이 그 Flow를 기본으로 씀.

## 명령

| 명령                                    | 설명                                   |
| ------------------------------------- | ------------------------------------ |
| `flows list`                          | 활성 워크스페이스의 모든 Flow 나열.               |
| `flows get <slug>`                    | 전체 Flow 페이로드 가져오기.                   |
| `flows snapshot [slug]`               | 편집 가능한 블록 + 엣지를 JSON으로 출력.           |
| `flows apply <slug> <file>`           | JSON 파일에서 Flow 생성/upsert.            |
| `flows delete <slug>`                 | Flow 삭제.                             |
| `flows use <slug>`                    | 활성 Flow 고정.                          |
| `flows current`                       | 활성 Flow slug 출력.                     |
| `flows publish [slug]`                | Draft를 라이브 버전으로 얼림.                  |
| `flows rollback <slug> <seq>`         | 라이브 포인터를 옛 버전으로 옮김.                  |
| `flows versions list [slug]`          | 버전 나열.                               |
| `flows versions get <slug> <seq>`     | 한 버전 가져오기.                           |
| `flows versions restore <slug> <seq>` | 옛 버전을 Draft로 복사.                     |
| `flows settings get [slug]`           | [Flow 설정](/ko/cli/flow-settings) 참고. |
| `flows settings update [slug]`        | [Flow 설정](/ko/cli/flow-settings) 참고. |

## `flows list`

```bash theme={null}
nora flows list
```

활성 워크스페이스의 모든 Flow를 slug, 이름, 마지막 배포 버전, 마지막 수정 시각과 함께 표시.

기계용 출력은 `--json`을 붙임. Flow 당 한 줄.

## `flows get`

```bash theme={null}
nora flows get <slug>
```

전체 Flow 페이로드를 출력: 블록, 와이어, 설정, 배포 상태, 타임스탬프. 늘 JSON.

흔한 용도:

* 위험한 변경 전 Flow 백업: `nora flows get support > support-backup.json`.
* 특정 블록 검사: `nora flows get support | jq '.blocks[] | select(.id=="ag_1")'`.
* 두 워크스페이스 비교: `diff <(nora --workspace ws1 flows get x) <(nora --workspace ws2 flows get x)`.

## `flows snapshot`

```bash theme={null}
nora flows snapshot > my-flow.json
```

**편집 가능한 페이로드**(블록과 엣지. 설정이나 배포 상태는 빼고)만 덤프. 이럴 때 좋음:

* Nora 밖에서 Flow를 git으로 추적.
* `jq`나 `yq`로 한꺼번에 편집.
* 템플릿: Flow 하나를 스냅샷하고, JSON을 손보고, 새 Flow로 적용.

## `flows apply`

```bash theme={null}
nora flows apply <slug> my-flow.json
```

JSON 파일에서 Flow를 upsert. `<slug>`가 없으면 생성됨. 업데이트하면 그 JSON이 새 Draft가 됨. 배포는 따로 함.

`--name "..."` 옵션이 생성 시 표시 이름을 정함.

전형적인 config-as-code 워크플로우:

```bash theme={null}
# git의 정본
nora flows snapshot support > flows/support.json
git add flows/support.json && git commit -m "sync support flow"

# main 머지 때 CI에서
nora flows apply support flows/support.json
nora flows publish support --note "$(git log -1 --pretty=%s)"
```

## `flows delete`

```bash theme={null}
nora flows delete <slug>
```

Flow 삭제. 배포된 버전은 유예 기간 동안 ID로 접근되지만 slug는 바로 풀림.

`--yes`를 안 넘기면 확인이 필요. `--yes`는 스크립트용. 인터랙티브에서는 치기 전에 생각.

## `flows use`와 `flows current`

```bash theme={null}
nora flows use support-agent
nora flows current  # "support-agent" 출력
```

워크스페이스별 Flow 고정. Flow를 기본으로 쓰는 모든 명령(`agents create`, `tools list`, `flows publish` 등)이 고정된 slug를 씀.

워크스페이스를 전환하면? 고정이 따라옴. 워크스페이스마다 자기 고정 Flow를 기억.

고정을 안 바꾸고 한 명령만 덮어쓰기:

```bash theme={null}
nora --flow other-flow tools list
```

## 배포

```bash theme={null}
nora flows publish [slug] --note "release 2026-07-31 refund cleanup"
```

지금 Draft를 새 버전으로 스냅샷하고 라이브 포인터를 옮김. Owner와 Manager만 배포 가능.

옵션 플래그:

* `--note <text>` 릴리스 노트(꼭 권함. versions list와 감사 트레일에 뜸).
* `--author-label <text>` 버전 카드에 표시. 기본은 계정 이름.

배포 전 서버 점검: 사이클 없음, 모든 입력 배선, 빈 프롬프트 없음, Draft ≠ 현재 배포(아무것도 안 바꾸는 배포 없음).

흔한 CI 레시피:

```bash theme={null}
nora flows apply support flows/support.json
nora flows publish support --note "$(git log -1 --pretty=%B | head -n1)"
```

## 롤백

```bash theme={null}
nora flows versions list <slug>
nora flows rollback <slug> <seq>
```

라이브 포인터를 옛 버전으로 옮김. Draft는 안 건드림. 즉시임. 다시 배포가 아니라 포인터를 넘기는 것.

롤백은 안전. 아무것도 안 잃음. 언제든 새 버전으로 다시 앞으로 갈 수 있음.

## 버전에서 Draft 복원

```bash theme={null}
nora flows versions restore <slug> <seq>
```

옛 버전 페이로드를 Draft로 복사. 프로덕션은 안 건드림. 옛 버전을 그대로 출시하지 않고 *손보고* 싶을 때 씀.

흔한 예: 출혈을 멈추려 v14로 롤백. v16 변경을 오프라인에서 고치고 싶음. 스크래치 Flow에 v16을 Draft로 복원해 손보고, 다시 적용하고, 배포.

## 버전 메타데이터

```bash theme={null}
nora flows versions list <slug>          # 요약
nora flows versions get <slug> <seq>     # 전체 메타데이터(페이로드 제외)
```

버전 이력이 배포, 롤백, 복원을 다룸. "누가 언제 뭘 배포했나" 를 되짚기 좋음.

구조화 출력은 `--json`을 붙임.

## 워크스페이스를 넘나드는 작업

많은 명령이 호출마다 `--workspace`를 받아, 스크립트가 전환 없이 여러 워크스페이스에 동작:

```bash theme={null}
for ws in acme-dev acme-staging acme-prod; do
  nora --workspace $ws flows list --json | jq -r '.[].slug'
done
```

<Note>
  빈 캔버스나 똑같은 Flow를 다시 배포하는 건 서버가 거절. 앱의 **Publish** 버튼과 같은 가드레일.
</Note>
