ktx-ai-data-context-layer

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

ktx AI Data Context Layer

ktx AI 数据上下文层

Skill by ara.so — MCP Skills collection.
ktx is a self-improving context layer that teaches AI agents how to query your data warehouse accurately. It combines approved metric definitions, joinable columns, wiki content, and business knowledge into a single searchable surface that agents can access via MCP (Model Context Protocol) or CLI.
ara.so开发的Skill — MCP Skills合集。
ktx是一个可自我优化的上下文层,它能教会AI Agent如何准确查询你的数据仓库。它将经过审批的指标定义、可关联列、Wiki内容和业务知识整合到一个可搜索的统一界面中,Agent可通过MCP(Model Context Protocol)或CLI访问该界面。

What ktx Does

ktx 的功能

  • Learns from company knowledge: Ingests wiki content (Notion, Markdown), organizes it, removes duplicates, flags contradictions
  • Maps the data stack: Samples tables, captures metadata and usage patterns, detects joinable columns
  • Builds a semantic layer: Combines raw tables and high-level metrics through a join graph that resolves fan and chasm traps
  • Serves agents at execution: Exposes CLI and MCP tools with full-text and semantic search across wiki and semantic-layer entities
  • 从企业知识库学习:导入Wiki内容(Notion、Markdown),进行整理、去重并标记矛盾内容
  • 映射数据栈:采样数据表,捕获元数据和使用模式,识别可关联列
  • 构建语义层:通过关联图整合原始数据表和高层指标,解决扇形陷阱和鸿沟陷阱
  • 为Agent提供执行时服务:提供CLI和MCP工具,支持对Wiki和语义层实体进行全文检索和语义搜索

Installation

安装

Install globally via npm:
bash
npm install -g @kaelio/ktx
Or use in a specific project:
bash
npm install @kaelio/ktx
Verify installation:
bash
ktx --version
通过npm全局安装:
bash
npm install -g @kaelio/ktx
或在特定项目中使用:
bash
npm install @kaelio/ktx
验证安装:
bash
ktx --version

Initial Setup

初始设置

Run the interactive setup wizard:
bash
ktx setup
This will:
  1. Create or resume a local ktx project
  2. Configure LLM and embedding providers
  3. Set up database connections
  4. Configure context sources (dbt, Looker, Metabase, Notion)
  5. Build initial context
  6. Install agent integration
Check project status:
bash
ktx status
Example output:
text
ktx project: /home/user/analytics
Project ready: yes
LLM ready: yes (claude-sonnet-4-6)
Embeddings ready: yes (text-embedding-3-small)
Databases configured: yes (warehouse)
Context sources configured: yes (dbt_main)
ktx context built: yes
Agent integration ready: yes (codex:project)
运行交互式设置向导:
bash
ktx setup
该向导会完成以下操作:
  1. 创建或恢复本地ktx项目
  2. 配置LLM和嵌入模型提供商
  3. 设置数据库连接
  4. 配置上下文源(dbt、Looker、Metabase、Notion)
  5. 构建初始上下文
  6. 安装Agent集成
检查项目状态:
bash
ktx status
示例输出:
text
ktx project: /home/user/analytics
Project ready: yes
LLM ready: yes (claude-sonnet-4-6)
Embeddings ready: yes (text-embedding-3-small)
Databases configured: yes (warehouse)
Context sources configured: yes (dbt_main)
ktx context built: yes
Agent integration ready: yes (codex:project)

Project Structure

项目结构

text
my-project/
├── ktx.yaml                         # Project configuration
├── semantic-layer/<connection-id>/  # YAML semantic sources
├── wiki/global/                     # Shared business context
├── wiki/user/<user-id>/             # User-scoped notes
├── raw-sources/<connection-id>/     # Ingest artifacts and reports
└── .ktx/                            # Local state and secrets (git-ignored)
Commit
ktx.yaml
,
semantic-layer/
, and
wiki/
. Keep
.ktx/
local.
text
my-project/
├── ktx.yaml                         # 项目配置文件
├── semantic-layer/<connection-id>/  # YAML语义源文件
├── wiki/global/                     # 共享业务上下文
├── wiki/user/<user-id>/             # 用户专属笔记
├── raw-sources/<connection-id>/     # 导入工件和报告
└── .ktx/                            # 本地状态和密钥(Git忽略)
提交
ktx.yaml
semantic-layer/
wiki/
目录。将
.ktx/
目录保留在本地。

Configuration

配置

ktx.yaml Structure

ktx.yaml 结构

yaml
version: 1
project_name: analytics
yaml
version: 1
project_name: analytics

LLM configuration

LLM配置

llm: provider: anthropic model: claude-sonnet-4-6 api_key_env: ANTHROPIC_API_KEY
llm: provider: anthropic model: claude-sonnet-4-6 api_key_env: ANTHROPIC_API_KEY

Embedding configuration

嵌入模型配置

embeddings: provider: openai model: text-embedding-3-small api_key_env: OPENAI_API_KEY
embeddings: provider: openai model: text-embedding-3-small api_key_env: OPENAI_API_KEY

Database connections

数据库连接

connections: warehouse: type: postgres host: localhost port: 5432 database: analytics schema: public user_env: POSTGRES_USER password_env: POSTGRES_PASSWORD
connections: warehouse: type: postgres host: localhost port: 5432 database: analytics schema: public user_env: POSTGRES_USER password_env: POSTGRES_PASSWORD

Context sources

上下文源

context_sources:
  • id: dbt_main type: dbt path: ./dbt_project
  • id: notion_wiki type: notion api_key_env: NOTION_API_KEY database_ids:
    • abc123def456
undefined
context_sources:
  • id: dbt_main type: dbt path: ./dbt_project
  • id: notion_wiki type: notion api_key_env: NOTION_API_KEY database_ids:
    • abc123def456
undefined

LLM Provider Options

LLM 提供商选项

bash
undefined
bash
undefined

Anthropic API

Anthropic API

ktx config set llm.provider anthropic ktx config set llm.api_key_env ANTHROPIC_API_KEY
ktx config set llm.provider anthropic ktx config set llm.api_key_env ANTHROPIC_API_KEY

Google Vertex AI

Google Vertex AI

ktx config set llm.provider vertex ktx config set llm.project_id my-gcp-project
ktx config set llm.provider vertex ktx config set llm.project_id my-gcp-project

AI Gateway

AI网关

ktx config set llm.provider ai-gateway ktx config set llm.gateway_url https://gateway.example.com
undefined
ktx config set llm.provider ai-gateway ktx config set llm.gateway_url https://gateway.example.com
undefined

Database Connections

数据库连接

Add a database connection:
bash
ktx connection add warehouse \
  --type postgres \
  --host localhost \
  --port 5432 \
  --database analytics \
  --user-env POSTGRES_USER \
  --password-env POSTGRES_PASSWORD
Supported databases: PostgreSQL, Snowflake, BigQuery, ClickHouse, MySQL, SQL Server, SQLite
Test a connection:
bash
ktx connection test warehouse
添加数据库连接:
bash
ktx connection add warehouse \
  --type postgres \
  --host localhost \
  --port 5432 \
  --database analytics \
  --user-env POSTGRES_USER \
  --password-env POSTGRES_PASSWORD
支持的数据库:PostgreSQL、Snowflake、BigQuery、ClickHouse、MySQL、SQL Server、SQLite
测试连接:
bash
ktx connection test warehouse

Building Context

构建上下文

Ingest All Sources

导入所有源

Run ingestion for all configured connections and context sources:
bash
ktx ingest
为所有已配置的连接和上下文源运行导入:
bash
ktx ingest

Ingest Specific Connection

导入特定连接

bash
ktx ingest --connection warehouse
bash
ktx ingest --connection warehouse

Ingest with Options

带选项的导入

bash
undefined
bash
undefined

Sample more tables (default 100)

采样更多数据表(默认100张)

ktx ingest --sample-size 500
ktx ingest --sample-size 500

Skip expensive operations

跳过耗时操作

ktx ingest --skip-column-profiling
ktx ingest --skip-column-profiling

Force re-ingest even if unchanged

强制重新导入,即使内容未更改

ktx ingest --force
undefined
ktx ingest --force
undefined

What Ingestion Does

导入操作说明

  1. Database scanning: Samples tables, profiles columns, detects data types, patterns, and constraints
  2. Join detection: Identifies foreign key relationships and candidate join columns via value overlap
  3. Metadata extraction: Pulls table comments, column descriptions, and usage stats
  4. Context source parsing: Reads dbt models, LookML views, Metabase questions, Notion pages
  5. Deduplication & validation: Removes duplicate content, flags contradictions
  6. Embedding generation: Creates vector embeddings for semantic search
  1. 数据库扫描:采样数据表,分析列属性,检测数据类型、模式和约束
  2. 关联检测:通过值重叠识别外键关系和候选关联列
  3. 元数据提取:提取表注释、列描述和使用统计信息
  4. 上下文源解析:读取dbt模型、LookML视图、Metabase问题、Notion页面
  5. 去重与验证:移除重复内容,标记矛盾信息
  6. 嵌入向量生成:创建向量嵌入以支持语义搜索

CLI Commands

CLI 命令

Search Commands

搜索命令

Search semantic layer (metrics, dimensions, entities):
bash
ktx sl "revenue"
ktx sl "monthly active users"
Search wiki content:
bash
ktx wiki "refund policy"
ktx wiki "how to calculate churn"
搜索语义层(指标、维度、实体):
bash
ktx sl "revenue"
ktx sl "monthly active users"
搜索Wiki内容:
bash
ktx wiki "refund policy"
ktx wiki "how to calculate churn"

Context Management

上下文管理

View semantic sources:
bash
ktx semantic list
Show specific source details:
bash
ktx semantic show users
Edit a semantic source:
bash
ktx semantic edit users
查看语义源:
bash
ktx semantic list
查看特定源详情:
bash
ktx semantic show users
编辑语义源:
bash
ktx semantic edit users

Wiki Management

Wiki 管理

Create a wiki page:
bash
ktx wiki create --title "Metric Definitions" --content-file metrics.md
List wiki pages:
bash
ktx wiki list
Edit a wiki page:
bash
ktx wiki edit "Metric Definitions"
创建Wiki页面:
bash
ktx wiki create --title "Metric Definitions" --content-file metrics.md
列出Wiki页面:
bash
ktx wiki list
编辑Wiki页面:
bash
ktx wiki edit "Metric Definitions"

MCP Server

MCP 服务器

Start the MCP server for agent clients:
bash
ktx mcp start
Start with specific project directory:
bash
ktx mcp start --project-dir /path/to/analytics
启动供Agent客户端连接的MCP服务器:
bash
ktx mcp start
指定项目目录启动:
bash
ktx mcp start --project-dir /path/to/analytics

MCP Integration

MCP 集成

Agent Configuration

Agent 配置

For Claude Code, Codex, Cursor, or OpenCode:
  1. Install ktx skill:
bash
npx skills add Kaelio/ktx --skill ktx
  1. Start MCP server (if not auto-started):
bash
ktx mcp start --project-dir /path/to/project
  1. Ask your agent to use ktx tools:
text
Use ktx to search for revenue metrics and show me the SQL definition
适用于Claude CodeCodexCursorOpenCode
  1. 安装ktx skill:
bash
npx skills add Kaelio/ktx --skill ktx
  1. 启动MCP服务器(若未自动启动):
bash
ktx mcp start --project-dir /path/to/project
  1. 让你的Agent使用ktx工具:
text
Use ktx to search for revenue metrics and show me the SQL definition

MCP Tools Available

可用的MCP工具

  • search_semantic_layer
    : Search metrics, dimensions, entities
  • search_wiki
    : Search wiki pages and business context
  • get_table_schema
    : Get column details and sample data
  • get_metric_definition
    : Get canonical SQL for a metric
  • detect_joins
    : Find joinable paths between tables
  • validate_query
    : Check a SQL query against schema and metrics
  • search_semantic_layer
    :搜索指标、维度、实体
  • search_wiki
    :搜索Wiki页面和业务上下文
  • get_table_schema
    :获取列详情和样本数据
  • get_metric_definition
    :获取指标的标准SQL定义
  • detect_joins
    :查找数据表之间的可关联路径
  • validate_query
    :根据 schema 和指标验证SQL查询

Code Examples

代码示例

TypeScript: Using ktx CLI Programmatically

TypeScript:以编程方式使用ktx CLI

typescript
import { spawn } from 'child_process';

async function searchSemanticLayer(query: string): Promise<string> {
  return new Promise((resolve, reject) => {
    const ktx = spawn('ktx', ['sl', query]);
    let output = '';
    
    ktx.stdout.on('data', (data) => {
      output += data.toString();
    });
    
    ktx.on('close', (code) => {
      if (code === 0) {
        resolve(output);
      } else {
        reject(new Error(`ktx exited with code ${code}`));
      }
    });
  });
}

// Usage
const revenueMetrics = await searchSemanticLayer('revenue');
console.log(revenueMetrics);
typescript
import { spawn } from 'child_process';

async function searchSemanticLayer(query: string): Promise<string> {
  return new Promise((resolve, reject) => {
    const ktx = spawn('ktx', ['sl', query]);
    let output = '';
    
    ktx.stdout.on('data', (data) => {
      output += data.toString();
    });
    
    ktx.on('close', (code) => {
      if (code === 0) {
        resolve(output);
      } else {
        reject(new Error(`ktx exited with code ${code}`));
      }
    });
  });
}

// 使用示例
const revenueMetrics = await searchSemanticLayer('revenue');
console.log(revenueMetrics);

TypeScript: MCP Client Integration

TypeScript:MCP客户端集成

typescript
import { Client } from '@modelcontextprotocol/sdk/client/index.js';
import { StdioClientTransport } from '@modelcontextprotocol/sdk/client/stdio.js';

async function initKtxMcpClient() {
  const transport = new StdioClientTransport({
    command: 'ktx',
    args: ['mcp', 'start', '--project-dir', process.cwd()]
  });
  
  const client = new Client({
    name: 'my-data-agent',
    version: '1.0.0'
  }, {
    capabilities: {}
  });
  
  await client.connect(transport);
  return client;
}

async function searchMetrics(client: Client, query: string) {
  const result = await client.callTool({
    name: 'search_semantic_layer',
    arguments: {
      query,
      limit: 10
    }
  });
  
  return result;
}

// Usage
const client = await initKtxMcpClient();
const metrics = await searchMetrics(client, 'monthly revenue');
console.log(metrics);
typescript
import { Client } from '@modelcontextprotocol/sdk/client/index.js';
import { StdioClientTransport } from '@modelcontextprotocol/sdk/client/stdio.js';

async function initKtxMcpClient() {
  const transport = new StdioClientTransport({
    command: 'ktx',
    args: ['mcp', 'start', '--project-dir', process.cwd()]
  });
  
  const client = new Client({
    name: 'my-data-agent',
    version: '1.0.0'
  }, {
    capabilities: {}
  });
  
  await client.connect(transport);
  return client;
}

async function searchMetrics(client: Client, query: string) {
  const result = await client.callTool({
    name: 'search_semantic_layer',
    arguments: {
      query,
      limit: 10
    }
  });
  
  return result;
}

// 使用示例
const client = await initKtxMcpClient();
const metrics = await searchMetrics(client, 'monthly revenue');
console.log(metrics);

Python: Querying Semantic Layer

Python:查询语义层

python
import subprocess
import json

def search_semantic_layer(query: str) -> dict:
    """Search ktx semantic layer via CLI."""
    result = subprocess.run(
        ['ktx', 'sl', query, '--json'],
        capture_output=True,
        text=True,
        check=True
    )
    return json.loads(result.stdout)

def get_metric_sql(metric_name: str) -> str:
    """Get canonical SQL for a metric."""
    result = subprocess.run(
        ['ktx', 'semantic', 'show', metric_name, '--sql-only'],
        capture_output=True,
        text=True,
        check=True
    )
    return result.stdout.strip()
python
import subprocess
import json

def search_semantic_layer(query: str) -> dict:
    """通过CLI搜索ktx语义层。"""
    result = subprocess.run(
        ['ktx', 'sl', query, '--json'],
        capture_output=True,
        text=True,
        check=True
    )
    return json.loads(result.stdout)

def get_metric_sql(metric_name: str) -> str:
    """获取指标的标准SQL定义。"""
    result = subprocess.run(
        ['ktx', 'semantic', 'show', metric_name, '--sql-only'],
        capture_output=True,
        text=True,
        check=True
    )
    return result.stdout.strip()

// 使用示例
metrics = search_semantic_layer('revenue')
for metric in metrics.get('results', []):
    print(f"{metric['name']}: {metric['description']}")
    
sql = get_metric_sql('monthly_revenue')
print(f"SQL:\n{sql}")

Usage

语义层YAML示例

metrics = search_semantic_layer('revenue') for metric in metrics.get('results', []): print(f"{metric['name']}: {metric['description']}")
sql = get_metric_sql('monthly_revenue') print(f"SQL:\n{sql}")
undefined
semantic-layer/warehouse/revenue.yaml
中创建指标定义:
yaml
type: metric
name: monthly_revenue
description: Total revenue aggregated by month
sql: |
  SELECT
    DATE_TRUNC('month', order_date) as month,
    SUM(amount) as revenue
  FROM orders
  WHERE status = 'completed'
  GROUP BY 1
dimensions:
  - month
  - customer_segment
  - region
measures:
  - revenue
  - order_count
grain: month
filters:
  - status = 'completed'
  - amount > 0
source_tables:
  - orders
  - customers

Semantic Layer YAML Example

常见使用模式

新项目设置

Create a metric definition in
semantic-layer/warehouse/revenue.yaml
:
yaml
type: metric
name: monthly_revenue
description: Total revenue aggregated by month
sql: |
  SELECT
    DATE_TRUNC('month', order_date) as month,
    SUM(amount) as revenue
  FROM orders
  WHERE status = 'completed'
  GROUP BY 1
dimensions:
  - month
  - customer_segment
  - region
measures:
  - revenue
  - order_count
grain: month
filters:
  - status = 'completed'
  - amount > 0
source_tables:
  - orders
  - customers
bash
undefined

Common Patterns

进入项目目录

Setting Up for a New Project

bash
undefined
cd /path/to/analytics-project

Navigate to project

初始化ktx

cd /path/to/analytics-project
ktx setup

Initialize ktx

配置数据库

ktx setup
ktx connection add warehouse
--type postgres
--host $DB_HOST
--database analytics
--user-env POSTGRES_USER
--password-env POSTGRES_PASSWORD

Configure database

添加dbt上下文源

ktx connection add warehouse
--type postgres
--host $DB_HOST
--database analytics
--user-env POSTGRES_USER
--password-env POSTGRES_PASSWORD
ktx context-source add dbt_models
--type dbt
--path ./dbt_project

Add dbt context source

构建上下文

ktx context-source add dbt_models
--type dbt
--path ./dbt_project
ktx ingest

Build context

验证状态

ktx ingest
ktx status
undefined

Verify

日常上下文更新

ktx status
undefined
bash
undefined

Daily Context Updates

重新导入以获取Schema变更

bash
undefined
ktx ingest --connection warehouse

Re-ingest to pick up schema changes

添加关于指标变更的新Wiki页面

ktx ingest --connection warehouse
ktx wiki create --title "Q1 Metric Updates" --content-file q1-updates.md

Add a new wiki page about metric changes

搜索验证新内容

ktx wiki create --title "Q1 Metric Updates" --content-file q1-updates.md
ktx wiki "Q1 metric"
undefined

Search to verify new content

Agent工作流

ktx wiki "Q1 metric"
undefined
  1. Agent搜索语义层:
text
Search ktx for customer retention metrics
  1. ktx返回含标准SQL的指标
  2. Agent使用SQL定义构建查询
  3. Agent根据ktx schema验证查询
  4. Agent执行查询(只读)

Agent Workflow

语义层调试

  1. Agent searches semantic layer:
text
Search ktx for customer retention metrics
  1. ktx returns metrics with canonical SQL
  2. Agent uses SQL definition to build query
  3. Agent validates query against ktx schema
  4. Agent executes query (read-only)
bash
undefined

Debugging Semantic Layer

列出所有语义源

bash
undefined
ktx semantic list

List all semantic sources

查看详细指标定义

ktx semantic list
ktx semantic show monthly_revenue

Show detailed metric definition

验证指标SQL

ktx semantic show monthly_revenue
ktx semantic validate monthly_revenue

Validate metric SQL

检查关联路径

ktx semantic validate monthly_revenue
ktx semantic joins orders customers
undefined

Check join paths

故障排除

提示"ktx mcp start --project-dir ..."

ktx semantic joins orders customers
undefined
如果
ktx status
显示该消息,请在打开Agent前运行以下命令:
bash
ktx mcp start --project-dir /path/to/project
这确保MCP服务器已准备好接收Agent连接。

Troubleshooting

导入失败

"ktx mcp start --project-dir ..." Message

If
ktx status
prints this message, run the command before opening your agent:
bash
ktx mcp start --project-dir /path/to/project
This ensures the MCP server is ready for agent connections.
检查连接:
bash
ktx connection test warehouse
启用详细日志运行:
bash
ktx ingest --verbose
跳过有问题的表:
bash
ktx ingest --exclude-tables table1,table2

Ingestion Fails

LLM提供商错误

Check connection:
bash
ktx connection test warehouse
Run with verbose logging:
bash
ktx ingest --verbose
Skip problematic tables:
bash
ktx ingest --exclude-tables table1,table2
验证API密钥已设置:
bash
echo $ANTHROPIC_API_KEY
尝试使用其他提供商:
bash
ktx config set llm.provider vertex
ktx ingest

LLM Provider Errors

语义搜索无结果

Verify API key is set:
bash
echo $ANTHROPIC_API_KEY
Test with a different provider:
bash
ktx config set llm.provider vertex
ktx ingest
重建嵌入向量:
bash
ktx ingest --force --rebuild-embeddings
检查嵌入模型配置:
bash
ktx config get embeddings.provider
ktx config get embeddings.model

Semantic Search Returns No Results

关联检测缺失关系

Rebuild embeddings:
bash
ktx ingest --force --rebuild-embeddings
Check embedding configuration:
bash
ktx config get embeddings.provider
ktx config get embeddings.model
增大采样量:
bash
ktx ingest --sample-size 1000
在语义层YAML中手动定义关联:
yaml
type: entity
name: orders
primary_key: order_id
relationships:
  - entity: customers
    join_column: customer_id
    relationship_type: many_to_one

Join Detection Missing Relationships

标记矛盾内容

Increase sample size:
bash
ktx ingest --sample-size 1000
Manually define joins in semantic layer YAML:
yaml
type: entity
name: orders
primary_key: order_id
relationships:
  - entity: customers
    join_column: customer_id
    relationship_type: many_to_one
查看标记的矛盾项:
bash
ktx wiki search --contradictions-only
通过编辑Wiki页面解决:
bash
ktx wiki edit "Conflicting Metric Definition"

Contradictions Flagged

Agent无法找到ktx工具

Review flagged items:
bash
ktx wiki search --contradictions-only
Resolve by editing wiki pages:
bash
ktx wiki edit "Conflicting Metric Definition"
确保MCP服务器正在运行:
bash
ps aux | grep 'ktx mcp'
启动MCP服务器后重启Agent客户端。
检查项目目录是否正确:
bash
ktx status --project-dir /path/to/project

Agent Can't Find ktx Tools

环境变量

Ensure MCP server is running:
bash
ps aux | grep 'ktx mcp'
Restart agent client after starting MCP server.
Check project directory is correct:
bash
ktx status --project-dir /path/to/project
ktx使用环境变量存储密钥和配置:
  • ANTHROPIC_API_KEY
    : Anthropic API密钥
  • OPENAI_API_KEY
    : OpenAI API密钥(用于嵌入模型)
  • POSTGRES_USER
    ,
    POSTGRES_PASSWORD
    : 数据库凭证
  • SNOWFLAKE_ACCOUNT
    ,
    SNOWFLAKE_USER
    ,
    SNOWFLAKE_PASSWORD
    : Snowflake凭证
  • NOTION_API_KEY
    : Notion集成令牌
  • KTX_PROJECT_DIR
    : 覆盖项目目录解析
切勿硬编码密钥。始终在
ktx.yaml
中引用环境变量:
yaml
connections:
  warehouse:
    user_env: POSTGRES_USER
    password_env: POSTGRES_PASSWORD

Environment Variables

资源

ktx uses environment variables for secrets and configuration:
  • ANTHROPIC_API_KEY
    : Anthropic API key
  • OPENAI_API_KEY
    : OpenAI API key (for embeddings)
  • POSTGRES_USER
    ,
    POSTGRES_PASSWORD
    : Database credentials
  • SNOWFLAKE_ACCOUNT
    ,
    SNOWFLAKE_USER
    ,
    SNOWFLAKE_PASSWORD
    : Snowflake credentials
  • NOTION_API_KEY
    : Notion integration token
  • KTX_PROJECT_DIR
    : Override project directory resolution
Never hardcode secrets. Always reference environment variables in
ktx.yaml
:
yaml
connections:
  warehouse:
    user_env: POSTGRES_USER
    password_env: POSTGRES_PASSWORD

Resources