Skip to main content
GuideServerConfigure and deploy Tabsdata servers on your machine.TutorialsConfigure data integration workflows within a running Tabsdata server.Advanced TutorialsBuild end-to-end workflows between two specific systems.API ReferenceCLI ReferenceRelease Notes
Version: 2.1.0

Deploy Tabsdata on k-minus

k-minus is Tabsdata's default deployment provider. It runs Kubernetes-style pods as native processes in a Python environment instead of Docker containers.

Use Quickstart to deploy with the default configuration. Use the individual lifecycle commands when you want to edit the configuration before creating and starting the Server.

Quickstart a Server​

tdkserver quickstart bundles initializing, creating, and starting a Tabsdata server into a single command, using a default configuration for compute and storage.

Start the Tabsdata server​

tdkserver quickstart initializes and deploys a Tabsdata Instance. The command should take around 30 seconds to fully execute.

tdkserver quickstart --anthropic-key $ANTHROPIC_KEY
note

If you plan to use the MySQL or PostgreSQL CDC connectors, they need database drivers that Tabsdata cannot redistribute. Pass a requirements file with --reqs-td, as described in Installing Third-Party Database Drivers. Adding them later means re-running the installation.

Check Tabsdata server status​

View all your Tabsdata Instances

tdkserver list
Output
Instances
┌──────────┬──────────────────────────────────────────────────┬──────────┬─────────┬─────────┬─────────┬─────────────────┬───────────────┬───────────────────────┐
│ Name     │ Folder                                           │ Provider │ Version │ State   │ Status  │ API Server Port │ Database Port │ API Server URL        │
├──────────┼──────────────────────────────────────────────────┼──────────┼─────────┼─────────┼─────────┼─────────────────┼───────────────┼───────────────────────┤
│ tabsdata │ ~/.tabsdata/instances/tabsdata │ kminus   │ 2.0.2   │ created │ Running │ 2457            │ 2460          │ http://localhost:2457 │
└──────────┴──────────────────────────────────────────────────┴──────────┴─────────┴─────────┴─────────┴─────────────────┴───────────────┴───────────────────────┘

View the status of the Tabsdata Instance you just deployed.

tdkserver status
Output
Deployments                              
┌───────────────┬─────────┬───────┬─────┐
│ Name          │ Status  │ Ready │ Age │
├───────────────┼─────────┼───────┼─────┤
│ srv-aiagent   │ Running │ 1/1   │ 15s │
│ srv-apiserver │ Running │ 1/1   │ 15s │
│ srv-database  │ Running │ 1/1   │ 24s │
└───────────────┴─────────┴───────┴─────┘
Pods                                                      
┌────────────────────────────────┬─────────┬───────┬─────┐
│ Name                           │ Status  │ Ready │ Age │
├────────────────────────────────┼─────────┼───────┼─────┤
│ srv-aiagent-7476c88484-4klx8   │ Running │ 2/2   │ 15s │
│ srv-apiserver-56bbbb559d-8cnxl │ Running │ 1/1   │ 15s │
│ srv-database-fd4f8f85-dsxcj    │ Running │ 1/1   │ 24s │
└────────────────────────────────┴─────────┴───────┴─────┘
CronJobs                                                            
┌──────────────────┬─────────┬─────────────┬─────────────────┬─────┐
│ Name             │ Status  │ Expression  │ Explanation     │ Age │
├──────────────────┼─────────┼─────────────┼─────────────────┼─────┤
│ srv-aiembeddings │ Running │ */5 * * * * │ Every 5 minutes │ 6s  │
│ srv-aimetadata   │ Running │ */5 * * * * │ Every 5 minutes │ 6s  │
└──────────────────┴─────────┴─────────────┴─────────────────┴─────┘
Jobs                                             
┌────────────────┬──────────┬─────────────┬─────┐
│ Name           │ Status   │ Completions │ Age │
├────────────────┼──────────┼─────────────┼─────┤
│ ini-inspector  │ Complete │ 1/1         │ 16s │
│ ini-venvloader │ Complete │ 1/1         │ 17s │
└────────────────┴──────────┴─────────────┴─────┘
tip

tdkserver commands usually require an --instance flag that specifies the specific instance you want to interact with. If no --instance flag is passed, Tabsdata defaults the instance name to tabsdata

Log in​

tdk login --server localhost --user admin --password tabsdata

Or access the UI at http://localhost:2457/login

Initialize a Server​

tdkserver init produces an editable config folder for a Tabsdata instance within ~/.tabsdata, pre-filled with default values.

Initialize an instance​

tdkserver init --instance myinstance --provider kminus
Output
About to initialize tabsdata instance:
- instance.....: myinstance
- provider.....: kminus
- log level....: debug (default)
Proceed with the initialization? [y/yes/n/no]: y
▶ Creating tabsdata instance folder                                                                                            
✔ Created tabsdata instance folder at ~/.tabsdata/instances/myinstance (0s)                               
▶ Initializing tabsdata templates                                                                                            
✔ Initialized tabsdata templates in ~/.tabsdata/instances/myinstance/init/input (0s)                      
▶ Writing tabsdata instance settings                                                                                           
✔ Wrote tabsdata instance settings (0s)                                                                                       
Initialized tabsdata instance 'myinstance'.
- state........: initialized
- version......: 2.0.0
- log level....: debug
- provider.....: kminus
- instance name: myinstance
- kubeconfig...: ~/.tabsdata/instances/myinstance/cluster/config/kubeconfig.yaml
- namespace....: default

╭─────────────────────────────────────────────────────────────────────╮
│ Inspect and edit the config in the instance's init folder, then run │
│ 'tdkserver create --instance myinstance' to create the instance.    │
╰─────────────────────────────────────────────────────────────────────╯

The config folder is written to ~/.tabsdata/instances/myinstance/.

The default configuration is what is used by tdkserver quickstart which bundles initializing, creating, and starting a server

Edit the config files the command produced, if you need to change anything.

Create a Server​

After initializing a server, tdkserver create builds an instance from the config folder that tdkserver init produced.

Step 1Set the LLM API key

tdkserver create builds the aiagent pod, so the LLM key has to be in the environment before running it, not before tdkserver init:

export ANTHROPIC_KEY="sk-ant-..."
Step 2Create an instance
tdkserver create --instance myinstance

A server's name is unique and is used internally for identification. The name provided to --instance is used to find the config folder created during initialization.

Step 3Check the instance was created
tdkserver list
Output
Instances
┌──────────┬──────────────────────────────────────────────────┬──────────┬─────────┬─────────┬─────────┬─────────────────┬───────────────┬───────────────────────┐
│ Name     │ Folder                                           │ Provider │ Version │ State   │ Status  │ API Server Port │ Database Port │ API Server URL        │
├──────────┼──────────────────────────────────────────────────┼──────────┼─────────┼─────────┼─────────┼─────────────────┼───────────────┼───────────────────────┤
│ tabsdata │ ~/.tabsdata/instances/tabsdata │ kminus   │ 2.0.2   │ created │ Stopped │ 2457            │ 2460          │ http://localhost:2457 │
└──────────┴──────────────────────────────────────────────────┴──────────┴─────────┴─────────┴─────────┴─────────────────┴───────────────┴───────────────────────┘

The instance appears with its name and state. It is not running yet.

Ports​

Every service in the instance takes a port, assigned sequentially from a single base value. --port sets that base, defaulting to 2457:

tdkserver create --instance myinstance --port 3000

Two instances on one machine need base ports far enough apart that their ranges do not overlap.

The instance keeps its configuration across stops and starts, so creating it is a one-time step.

See tdkserver create for the full option list.

Start a Server​

tdkserver start brings up the services of an instance that tdkserver create already built. Until the instance is running, tdk has nothing to connect to.

Step 1Start an instance
tdkserver start --instance myinstance

Stop a Server​

tdkserver stop shuts down a running instance's services and leaves everything else in place. The instance stays registered, its configuration is untouched, and the tables and function code it holds survive, so a later start picks up where the stop left off.

Step 1Stop the instance
tdkserver stop --instance myinstance

The command prints the values it resolved and waits for confirmation. Pass --yes to skip the prompt.

Step 2Confirm it stopped
tdkserver status --instance myinstance

Running functions​

Stopping the server stops its workers with it, so a function run in flight does not finish. Nothing partial is committed: a run only commits when every function in its execution plan succeeds, so an interrupted run leaves the tables at the version they held beforehand. Check for active work before stopping:

tdk fnrun list --status running

Picking up a configuration change​

A configuration edit reaches a running instance through a restart rather than a stop:

tdkserver restart --instance myinstance

See tdkserver stop for the full option list.

Delete a Server​

To permanently remove the instance, follow Delete a Server.