Skip to content

v0.1.1

Choose a tag to compare

@db-tycoon-stephen db-tycoon-stephen released this 16 Apr 23:59
· 116 commits to main since this release
95817a9

Tycoon v0.1.1

Released: 2026-04-16

Two themes in this release: command cleanup and a real onboarding
wizard
for tycoon init.

Headline

tycoon init now has a real wizard

Running tycoon init without --template walks you through the stack one
component at a time — ingestion, warehouse, dbt, Rill, orchestrator — and at
each step tells you exactly what tycoon will do for each option.

If you already have a dbt project at ./dbt_project/, ../myproject-dbt/,
or any of the other common locations, the wizard offers it as an explicit
"use this" option. If you have one in a GitHub repo somewhere, paste the
URL and tycoon will clone it into a sibling directory. If you don't want
dbt at all, "skip" is a first-class option and tycoon doctor will respect
that choice rather than warning about it forever.

Commands flattened

  • tycoon data db statstycoon data schema
  • tycoon data db querytycoon data query
  • tycoon data db cleantycoon data clean

Same functions, one level shallower. The data db namespace is gone.

tycoon data query knows about per-source databases

Two new flags solve the biggest reported v0.1.0 paper cut
(#1):

  • --source <name> — queries the right raw DuckDB for a named source,
    whether that's data/raw.duckdb (single-DB mode) or data/raw_<name>.duckdb.
  • --db <path> — queries any DuckDB file directly.

tycoon register — attach projects post-init

Changed your mind after tycoon init? Two new subcommands let you attach
an existing dbt or Rill project without re-running the wizard:

tycoon register dbt ../my-team-dbt/
tycoon register dbt https://github.com/acme/analytics-dbt
tycoon register rill ../dashboards/

GitHub URLs get cloned into a sibling dir. If you already had something
registered, tycoon prompts before overwriting.

Warehouse alignment

When you point tycoon at an external dbt project — either during
tycoon init or via tycoon register dbt — tycoon now reads the project's
profiles.yml and checks whether its DuckDB path matches tycoon's
warehouse. If they diverge, you get an explicit prompt:

Your dbt project targets /foo/theirs.duckdb, but tycoon.yml has
warehouse = data/warehouse.duckdb. Update warehouse to
/foo/theirs.duckdb? [Y/n]

No more silent "dbt wrote here, tycoon data query reads there" mystery
mismatches.

What changed

Added

  • Per-component init wizard with auto-detection, register-existing (path
    or GitHub URL), and explicit "skip" support for every component.
  • tycoon register dbt and tycoon register rill — attach existing
    projects to an existing tycoon.yml without re-running init.
  • Warehouse-alignment check when registering external dbt projects.
  • TransformationTool enum and new stack.transformation field in
    tycoon.yml — "skip dbt" is now recorded explicitly rather than inferred.
  • tycoon data query --source <name> and --db <path>.
  • tycoon data analyze --rill auto-scaffolds the Rill project dir
    instead of silently skipping when it's missing.
  • Template smoke tests for all four built-in templates
    (csv-import, github-analytics, nyc-transit, weather-station).
  • GET /health endpoint on the internal server.

Changed

  • tycoon data db <sub> commands flattened (see above).
  • tycoon doctor reports "skipped by choice" for components the user
    turned off during init.

Fixed

  • tycoon doctor no longer promises dbt will appear magically during
    tycoon data analyze — it won't. That's tycoon init's job.
  • tycoon data transform falls back to ~/.dbt/profiles.yml when a
    registered external dbt project has no co-located profiles file.
  • server/check-updates queries the right PyPI package
    (database-tycoon) via httpx.
  • tycoon data analyze and tycoon data sources run no longer crash with
    AttributeError when invoked without a source argument — the interactive
    "pick a source" prompt was using a non-existent typer.Choice reference.

Upgrade notes

pip install -U database-tycoon

Breaking for shell aliases: the old tycoon data db <sub> paths are
gone. Update aliases to the flattened form. No migration needed for
tycoon.yml; the new stack.transformation field defaults to dbt, so
existing configs keep working.

For anyone already using tycoon init: the wizard is different. You'll
see more prompts — five components, one at a time — and each has a visible
"skip" option. If you use --template, that path is unchanged.

Known limitations (carried forward)

  • Snowflake and BigQuery: dbt can transform against them, but
    tycoon data query is DuckDB-only for now.
  • External dlt pipelines can't be run via tycoon data sources run — only
    tycoon-managed dlt sources are. The wizard reflects this: you can't
    register an "external dlt" project because we have no way to run arbitrary
    dlt scripts yet.

What's next (v0.1.2 candidates)

  • Cloud-warehouse alignment: the same check we now do for DuckDB, but for
    MotherDuck/Snowflake/BigQuery connection strings.
  • tycoon register warehouse / tycoon register ingestion — extend the
    register family to cover the other stack components.
  • Network-gated end-to-end tests that run a full ingest → build → dashboard
    cycle per template in CI.