> ## 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 connectors

> 다시 쓰는 외부 시스템 자격증명 관리. API 키, 로테이션, 호출

커넥터가 외부 시스템의 이름 붙은, 암호화된 자격증명. 워크스페이스 수준에서 한 번 설정. 자격증명이 필요한 파운더리 파이프라인·Tool·Trigger에서 ID로 참조.

## 명령

| 명령                                   | 설명                 |
| ------------------------------------ | ------------------ |
| `connectors list`                    | 워크스페이스의 모든 커넥터 나열. |
| `connectors get <id>`                | 커넥터 설정 출력(시크릿 가림). |
| `connectors create`                  | 새 api-key 커넥터 생성.  |
| `connectors update <id>`             | 이름 변경 또는 키 로테이션.   |
| `connectors delete <id>`             | 커넥터 제거.            |
| `connectors invoke <id> <operation>` | 커넥터로 작업 호출.        |

## `connectors list` / `get`

```bash theme={null}
nora connectors list
nora connectors get c_tavily
```

`list`는 커넥터당 한 줄. `get`은 시크릿을 가린 설정을 출력.

## `connectors create`

```bash theme={null}
nora connectors create \
  --provider tavily \
  --name "Tavily search" \
  --api-key ?
# --api-key ? 가 물어봄 (입력 가림)
```

플래그:

* `--provider <p>`(필수) 외부 시스템. 지원: `tavily`, `brave`(늘어나는 중).
* `--name <n>`(필수) 표시 이름.
* `--api-key <key>`(필수) API 키. 가림 프롬프트에 `?`, stdin 읽기에 `-`, 또는 리터럴로 넘김(셸 히스토리 경고).

새 커넥터의 ID를 출력.

리터럴보다 `?`나 stdin을 권함. 리터럴 API 키는 셸 히스토리에 남음.

## `connectors update`

```bash theme={null}
# 이름 변경
nora connectors update c_tavily --set-name "Tavily (production)"

# API 키 로테이션
nora connectors update c_tavily --rotate-api-key ?
```

플래그:

* `--set-name <n>` 새 표시 이름.
* `--rotate-api-key <key>` 저장된 키 교체. create와 같은 입력 모드(`?`, `-`, 리터럴).

넘긴 플래그만 바뀜.

## `connectors delete`

```bash theme={null}
nora connectors delete c_tavily
```

파이프라인·Tool·Trigger가 커넥터를 쓰면 실패. 먼저 그것들을 고침.

## `connectors invoke`

```bash theme={null}
nora connectors invoke c_tavily search \
  --arg query="인과 그래프가 뭐야" \
  --arg limit=5
```

커넥터가 지원하는 작업을 호출. provider마다 작업이 다름. 커넥터 문서(또는 목록은 `connectors get`) 참고.

플래그:

* `<id>` 커넥터.
* `<operation>` 작업 이름(예: `search`, `list_channels`).
* `--arg KEY=VALUE` 플래그당 인자 하나, 또는:
* `--json <json>` 전체 인자를 JSON으로.

흔한 용도:

* 로테이션한 키가 되는지 스모크 테스트: `nora connectors invoke c_tavily search --arg query=test`.
* Flow 배선 없이 임시로 데이터 당겨오기.

## 레시피

### 스크립트에서 자격증명 로테이션

```bash theme={null}
# 파일에서 새 키 안전하게 읽기
cat new-key.txt | nora connectors update c_tavily --rotate-api-key -
```

이전 키가 60분 동안 유효해 다운타임 없이 로테이션 가능.

### 모든 커넥터가 여전히 되는지 확인

```bash theme={null}
for c in $(nora connectors list --json | jq -r '.[].id'); do
  echo "$c 테스트..."
  nora connectors invoke $c ping 2>&1 | grep -q "ok" && echo "  OK" || echo "  FAIL"
done
```

(작업은 provider마다 다름. `ping`은 예시니, provider가 지원하는 걸 확인.)

### 커넥터를 다른 워크스페이스로 옮기기

```bash theme={null}
# 소스에서 읽기
key=$(cat ~/.nora-keys/tavily)

# 목적지에 생성
nora --workspace destination connectors create \
  --provider tavily \
  --name "Tavily" \
  --api-key "$key"
```

## 커넥터와 시크릿

* **커넥터**는 특정 시스템(Tavily, Brave, …)용 타입 있는 연동. 커넥터가 API 모양을 앎.
* **시크릿**은 불투명한 문자열 값(Tool 헤더, Trigger auth, DB URL에 씀). 타입 모양이 없음.

일반 HTTP 연동에는 `secrets://` 헤더를 쓴 Tool. 잘 알려진 provider(검색, 임베딩 등)에는 커넥터.

둘 다 워크스페이스 스코프고 저장 시 암호화됨.

## 커넥터 참조

커넥터 키가 필요한 Tool에서:

```bash theme={null}
nora tools headers add t_search \
  --name Authorization \
  --value "secrets://connector:c_tavily/api_key"
```

도구가 호출 시점에 키를 보간. 편집 시점엔 절대 아님.

## 접근

워크스페이스 멤버가 커넥터를 나열하고 이름을 볼 수 있음. Manager와 Owner만 생성·로테이션·삭제 가능. 실제 키 값은 CLI나 앱으로 어떤 사용자에게도 절대 안 돌아감.

## 삭제 감사

모든 삭제가 기록됨([감사 트레일](/ko/reliable/versions/audit) 참고). 커넥터가 실수로 삭제됐으면, 참조가 깨진 Tool/파이프라인이 가장 빨리 알아채는 방법. 다음 실행에 "connector not found" 로 에러가 남.
