Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
58 changes: 41 additions & 17 deletions astro.config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -363,13 +363,20 @@ export default defineConfig({
],
},
{
label: "Tiger Cloud",
label: "Tiger Console",
collapsed: true,
items: [
{ label: "5-minute quickstart", link: "/get-started/quickstart/quickstart-5-minutes" },
{ label: "Create a Tiger Cloud service", link: "/get-started/quickstart/create-service" },
{ label: "Get started with the command line", link: "/get-started/quickstart/cli-rest-api" },
{ label: "Integrate Tiger Cloud with your AI assistant", link: "/get-started/quickstart/mcp-cli" },
],
},
{
label: "Tiger CLI and MCP",
collapsed: true,
items: [
{ label: "Get started with Tiger CLI", link: "/get-started/quickstart/tiger-cli" },
{ label: "Integrate Tiger Cloud with your AI agent", link: "/get-started/quickstart/mcp-cli" },
{ label: "Get started with the REST API", link: "/get-started/quickstart/rest-api" },
],
},
{
Expand Down Expand Up @@ -416,6 +423,13 @@ export default defineConfig({
{ label: "Tiger Cloud essentials", link: "/learn/tiger-cloud/tiger-cloud-essentials" },
],
},
{
label: "Tiger CLI and MCP",
collapsed: true,
items: [
{ label: "Tiger CLI and Tiger MCP", link: "/learn/tiger-cli-mcp" },
],
},
{
label: "Capabilities and comparison",
collapsed: true,
Expand Down Expand Up @@ -521,6 +535,15 @@ export default defineConfig({
link: "/build",
sidebar: [
{ label: "Overview", link: "/build" },
// --- Tiger CLI and MCP: manage Tiger Cloud and drive the DB with agents ---
{
label: "Build with Tiger CLI and MCP",
collapsed: true,
items: [
{ label: "Common tasks", link: "/build/tiger-cli-mcp/common-tasks" },
{ label: "Best practices for AI agents", link: "/build/tiger-cli-mcp/agent-best-practices" },
],
},
// --- Get hands on: merged Tutorials + How-to + Examples ---
{
label: "Get hands on",
Expand Down Expand Up @@ -1909,18 +1932,6 @@ export default defineConfig({
collapsed: true,
items: [
{ label: "Overview", link: "/reference/tiger-cloud" },
{
label: "Data tiering",
collapsed: true,
items: [
{ label: "Overview", link: "/reference/tiger-cloud/data-tiering" },
{ label: "add_tiering_policy()", link: "/reference/tiger-cloud/data-tiering/add_tiering_policy" },
{ label: "remove_tiering_policy()", link: "/reference/tiger-cloud/data-tiering/remove_tiering_policy" },
{ label: "tier_chunk()", link: "/reference/tiger-cloud/data-tiering/tier_chunk" },
{ label: "untier_chunk()", link: "/reference/tiger-cloud/data-tiering/untier_chunk" },
{ label: "disable_tiering()", link: "/reference/tiger-cloud/data-tiering/disable_tiering" },
],
},
{ label: "Tiger CLI", link: "/reference/tiger-cloud/tiger-cli" },
{ label: "Tiger MCP", link: "/reference/tiger-cloud/tiger-mcp" },
DOCS_LOCAL_WITHOUT_STAINLESS
Expand All @@ -1941,6 +1952,18 @@ export default defineConfig({
excludeResourceOverviewPages: true,
}),
},
{
label: "Data tiering",
collapsed: true,
items: [
{ label: "Overview", link: "/reference/tiger-cloud/data-tiering" },
{ label: "add_tiering_policy()", link: "/reference/tiger-cloud/data-tiering/add_tiering_policy" },
{ label: "remove_tiering_policy()", link: "/reference/tiger-cloud/data-tiering/remove_tiering_policy" },
{ label: "tier_chunk()", link: "/reference/tiger-cloud/data-tiering/tier_chunk" },
{ label: "untier_chunk()", link: "/reference/tiger-cloud/data-tiering/untier_chunk" },
{ label: "disable_tiering()", link: "/reference/tiger-cloud/data-tiering/disable_tiering" },
],
},
],
},
],
Expand Down Expand Up @@ -1978,8 +2001,9 @@ export default defineConfig({
"/get-started/install-timescaledb": "/get-started/choose-your-path/install-timescaledb",
"/get-started/supported-platforms": "/get-started/choose-your-path/supported-platforms",
"/get-started/timescaledb-editions": "/get-started/choose-your-path/timescaledb-editions",
"/get-started/cli-rest-api": "/get-started/quickstart/cli-rest-api",
"/get-started/tools/cli-rest-api": "/get-started/quickstart/cli-rest-api",
"/get-started/cli-rest-api": "/get-started/quickstart/tiger-cli",
"/get-started/tools/cli-rest-api": "/get-started/quickstart/tiger-cli",
"/get-started/quickstart/cli-rest-api": "/get-started/quickstart/tiger-cli",
"/get-started/mcp-cli": "/get-started/quickstart/mcp-cli",
"/get-started/tools/mcp-cli": "/get-started/quickstart/mcp-cli",
"/get-started/key-features-timescale": "/learn/tiger-cloud/tiger-cloud-essentials",
Expand Down
3 changes: 2 additions & 1 deletion src/components/ChangelogEntry.astro
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ interface Props {
date: string; // ISO format: YYYY-MM-DD
tags: Array<
| 'new-feature'
| 'improvement'
| 'improvement'
| 'performance'
| 'security'
| 'integration'
Expand All @@ -35,6 +35,7 @@ interface Props {
| 'breaking-change'
| 'beta'
| 'ga'
| 'cli-mcp'
>;
}

Expand Down
1 change: 1 addition & 0 deletions src/components/ChangelogFilter.astro
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ const tagOptions = [
{ value: 'breaking-change', label: 'Breaking', icon: '🚨' },
{ value: 'beta', label: 'Beta', icon: '🧪' },
{ value: 'ga', label: 'GA', icon: '🎉' },
{ value: 'cli-mcp', label: 'Tiger CLI/MCP', icon: '⌨️' },
];
---

Expand Down
20 changes: 17 additions & 3 deletions src/components/ChangelogTag.astro
Original file line number Diff line number Diff line change
Expand Up @@ -20,12 +20,13 @@
* - breaking-change: Changes requiring user action
* - beta: Beta/preview releases
* - ga: General availability releases
* - cli-mcp: Tiger CLI and MCP updates
*/

interface Props {
type:
type:
| 'new-feature'
| 'improvement'
| 'improvement'
| 'performance'
| 'security'
| 'integration'
Expand All @@ -34,7 +35,8 @@ interface Props {
| 'bug-fix'
| 'breaking-change'
| 'beta'
| 'ga';
| 'ga'
| 'cli-mcp';
}

const { type } = Astro.props;
Expand Down Expand Up @@ -95,6 +97,11 @@ const tagConfig: Record<string, { label: string; icon: string; className: string
icon: '🎉',
className: 'changelog-tag--ga',
},
'cli-mcp': {
label: 'Tiger CLI/MCP',
icon: '⌨️',
className: 'changelog-tag--cli-mcp',
},
};

const config = tagConfig[type] || tagConfig['new-feature'];
Expand Down Expand Up @@ -209,4 +216,11 @@ const config = tagConfig[type] || tagConfig['new-feature'];
color: light-dark(#65a30d, #bef264);
border: 1px solid light-dark(#d9f99d, #4d7c0f);
}

/* Tiger CLI/MCP - Fuchsia */
.changelog-tag--cli-mcp {
background-color: light-dark(#fae8ff, #4a044e);
color: light-dark(#c026d3, #f0abfc);
border: 1px solid light-dark(#f5d0fe, #701a75);
}
</style>
14 changes: 14 additions & 0 deletions src/components/DoWithAi.astro
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
---
/**
* DoWithAi: a reusable, generic callout promoting the Tiger MCP (AI agent)
* way of working. Same wording and links on every page; no per-page content.
*/
import Callout from "@components/Callout.astro";
import * as C from "@constants";

const base = import.meta.env.BASE_URL.replace(/\/$/, "");
---

<Callout variant="tip" title="Try this with your AI agent">
<p>Prefer to work in natural language? If you have <a href={`${base}/get-started/quickstart/mcp-cli`}>set up {C.MCP_LONG}</a>, ask your AI agent to do this for you instead of running the steps manually. See <a href={`${base}/build/tiger-cli-mcp/common-tasks`}>example prompts</a> to get started, and <a href={`${base}/build/tiger-cli-mcp/agent-best-practices`}>best practices for AI agents</a> to keep it safe.</p>
</Callout>
28 changes: 24 additions & 4 deletions src/components/NavTabsWithDropdown.astro
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,18 @@ const SECTION_DROPDOWN_HREF: Record<string, string> = {
"Migrate to Tiger Cloud": "/migrate/livesync-replication",
"Tiger Cloud on AWS": "/deploy/tiger-cloud/tiger-cloud-aws/configuration/about-configuration",
"Tiger Cloud on Azure": "/deploy/tiger-cloud/tiger-cloud-azure/configuration/about-configuration",
"Tiger Cloud REST API": "/reference/tiger-cloud-rest",
};

/**
* Dropdown-only: sidebar sections whose children are promoted to individual
* dropdown entries instead of a single section link. Used for the Reference
* "Tiger Cloud" group so the dropdown lists Tiger CLI, Tiger MCP, and the REST API
* as separate entries (not one "Tiger Cloud" overview link), without changing the
* left sidebar. The "Overview" and "Data tiering" children are dropped.
*/
const SECTION_DROPDOWN_EXPAND: Record<string, Set<string>> = {
Reference: new Set<string>(["Tiger Cloud"]),
};

const BASE_PREFIX = import.meta.env.BASE_URL.replace(/\/$/, "");
Expand Down Expand Up @@ -174,7 +186,7 @@ function sectionIndexHref(e: SidebarEntryLike): string | undefined {
* Only the tab sidebar’s **root** entries appear in the dropdown (same as top-level sidebar groups).
* Nested pages are omitted; use the section heading link (sectionIndexHref) or the left sidebar for drill-down.
*/
function buildNavTree(entries: unknown[] | undefined): NavTreeNode[] {
function buildNavTree(entries: unknown[] | undefined, tabLabel: string): NavTreeNode[] {
const out: NavTreeNode[] = [];
if (!Array.isArray(entries)) return out;

Expand All @@ -186,6 +198,14 @@ function buildNavTree(entries: unknown[] | undefined): NavTreeNode[] {
const items = Array.isArray(e.items) ? e.items : [];
const hasItems = items.length > 0;

if (hasItems && SECTION_DROPDOWN_EXPAND[tabLabel]?.has(e.label.trim())) {
const childNodes = buildNavTree(items, tabLabel).filter(
(n) => !/^(overview|data tiering)$/i.test(n.label.trim())
);
out.push(...childNodes);
continue;
}

if (hasItems) {
const href = sectionIndexHref(e);
out.push({
Expand Down Expand Up @@ -251,8 +271,8 @@ function prefixNavTreeHrefs(nodes: NavTreeNode[]): void {
}
}

function getNavTreeForSidebar(sidebar: unknown, tabLink: string): NavTreeNode[] {
const tree = buildNavTree(sidebar as unknown[]);
function getNavTreeForSidebar(sidebar: unknown, tabLink: string, tabLabel: string): NavTreeNode[] {
const tree = buildNavTree(sidebar as unknown[], tabLabel);
const filtered = filterOverviewDuplicate(tree, tabLink);
clearTreeDescriptions(filtered);
prefixNavTreeHrefs(filtered);
Expand All @@ -263,7 +283,7 @@ const dropdownTreeByTab = new Map<string, NavTreeNode[]>();
for (const item of navItems) {
const sidebar = item.sidebar;
if (Array.isArray(sidebar) && sidebar.length > 0) {
dropdownTreeByTab.set(item.label, getNavTreeForSidebar(sidebar, item.link));
dropdownTreeByTab.set(item.label, getNavTreeForSidebar(sidebar, item.link, item.label));
}
}
---
Expand Down
1 change: 1 addition & 0 deletions src/constants.ts
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,7 @@ export const REST_LONG = `${PRODUCT_PREFIX} REST API`;
export const REST_SHORT = 'REST API';
export const MCP_LONG = `${PRODUCT_PREFIX} MCP`;
export const MCP_SHORT = `${PRODUCT_PREFIX} MCP`;
export const CLI_REPO_URL = 'https://github.com/timescale/tiger-cli';
export const AGENTS_LONG = `${PRODUCT_PREFIX} Agents for Work`;
export const AGENTS_SHORT = `${PRODUCT_PREFIX} Agent`;
export const AGENTS_CLI = `${AGENTS_SHORT} CLI`;
Expand Down
3 changes: 3 additions & 0 deletions src/content/docs/build/columnar-storage/setup-hypercore.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ import { Prerequisites } from "@components/Prerequisites";
import HypercoreIntroShort from "../../../../partials/_hypercore-intro-short.mdx";
import HCConversionOverview from "../../../../partials/_hypercore-conversion-overview.mdx";
import HCPolicyWorkflow from "../../../../partials/_hypercore_policy_workflow.mdx";
import DoWithAi from "@components/DoWithAi.astro";

<HypercoreIntroShort />

Expand All @@ -27,6 +28,8 @@ your data.
<ConnectionDetails />
</Prerequisites>

<DoWithAi />
Comment thread
atovpeko marked this conversation as resolved.

## Convert your data to the {C.COLUMNSTORE}

The compression ratio and query performance of data in the {C.COLUMNSTORE} is dependent on the order and structure of your
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ keywords: [continuous aggregates, compression]
import * as C from "@constants";
import { NumberedList, NumberedItem } from "@components/NumberedList";
import SinceRelease from "@components/SinceRelease.astro";
import DoWithAi from "@components/DoWithAi.astro";

<SinceRelease version="2.20.0" product="tsdb" />

Expand All @@ -20,6 +21,8 @@ To save on storage costs, you use {C.HYPERCORE} to downsample historical data st
in the {C.CAGG}, and [ordered by](/reference/timescaledb/continuous-aggregates/alter_materialized_view#arguments) the time column. [{C.RTAGG_CAP}](/learn/continuous-aggregates/real-time-aggregates)
is disabled by default.

<DoWithAi />

## Configure {C.COLUMNSTORE} on {C.CAGG}s

For an [existing {C.CAGG}](/build/continuous-aggregates/create-a-continuous-aggregate):
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import * as C from "@constants";
import { Callout } from "@stainless-api/docs/components";
import { NumberedList, NumberedItem } from "@components/NumberedList";
import SinceRelease from "@components/SinceRelease.astro";
import DoWithAi from "@components/DoWithAi.astro";

A {C.CAGG} stores precomputed rollups so analytical queries avoid rescanning all raw rows. You create the materialized view first, then wire up refresh (policy or manual). You can build on a {C.HYPERTABLE} or stack another {C.CAGG}, and you can define more than one {C.CAGG} per source.

Expand All @@ -26,6 +27,8 @@ example, if the original {C.HYPERTABLE}'s {C.CHUNK} time interval is 7 days, the
{C.CAGG}s that are on top of it have a 70 day {C.CHUNK} time
interval.

<DoWithAi />

## Create a {C.CAGG}

In this example, we are using a {C.HYPERTABLE} called `conditions`, and creating a
Expand Down
3 changes: 3 additions & 0 deletions src/content/docs/build/continuous-aggregates/create-index.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,12 @@ products: [cloud, self_hosted]
keywords: [continuous aggregates, indexes]
---
import * as C from "@constants";
import DoWithAi from "@components/DoWithAi.astro";

{C.CAGG_CAP}s create helpful composite indexes by default, but you can turn that off or add your own for specific filters. This page covers the automatic indexes, how to disable them, and how to manage custom ones.

<DoWithAi />

## Automatically created indexes

When you create a {C.CAGG}, an index is automatically created for
Expand Down
3 changes: 3 additions & 0 deletions src/content/docs/build/continuous-aggregates/drop-data.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -7,11 +7,14 @@ keywords: [continuous aggregates, hypertables, delete]

import * as C from "@constants";
import { NumberedList, NumberedItem } from "@components/NumberedList";
import DoWithAi from "@components/DoWithAi.astro";

You can remove a {C.CAGG} view, trim raw rows from the source {C.HYPERTABLE}, or rely on [refresh](/build/continuous-aggregates/refresh-policies) plus retention policies to keep coarse long-term aggregates while dropping detailed history.

Watch for retention rules that delete raw {C.HYPERTABLE} rows your {C.CAGG} still needs to rebuild or refresh correctly.

<DoWithAi />

## Drop a {C.CAGG} view

You can drop a {C.CAGG} view using the `DROP MATERIALIZED VIEW`
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,13 +8,16 @@ keywords: [continuous aggregates, migrate]
import * as C from "@constants";
import { Callout } from "@stainless-api/docs/components";
import CaggMigratePermissions from "../../../../partials/_caggs-migrate-permissions.mdx";
import DoWithAi from "@components/DoWithAi.astro";

Starting in {C.TIMESCALE_DB} v2.7, {C.CAGG}s use a newer format that performs better and supports more SQL. {C.CAGG_CAP}s created before that release, or created with `timescaledb.finalized` set to `false`, still use the legacy layout until you migrate.

To migrate a {C.CAGG} from the old format to the new format, you can
use this procedure. It automatically copies over your data and policies. You can
continue to use the {C.CAGG} while the migration is happening.

<DoWithAi />

<Callout variant="note">
This procedure applies to {C.TIMESCALE_DB} v2.24 and earlier. In v2.25, the old format has been fully removed. See the [release notes](https://github.com/timescale/timescaledb/blob/main/CHANGELOG.md#2250-2026-01-29).
</Callout>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,13 +10,16 @@ import { Callout } from "@stainless-api/docs/components";
import { NumberedList, NumberedItem } from "@components/NumberedList";
import PrereqCloudSelf from "../../../../partials/_prereqs-cloud-and-self.mdx";
import { Prerequisites } from "@components/Prerequisites";
import DoWithAi from "@components/DoWithAi.astro";

Refresh policies control how and when a materialized {C.CAGG} catches up with its source {C.HYPERTABLE}. You can run refreshes on a schedule or trigger them manually when you need a one-off catch-up.

<Prerequisites context="procedure">
<PrereqCloudSelf />
</Prerequisites>

<DoWithAi />

## Change the refresh policy

{C.CAGG_CAP}s require a policy for automatic refreshing. You can adjust
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,13 +9,16 @@ import * as C from "@constants";
import { NumberedList, NumberedItem } from "@components/NumberedList";
import PrereqCloudOrSelf from "../../../../partials/_prereqs-cloud-or-self.mdx";
import { Prerequisites } from "@components/Prerequisites";
import DoWithAi from "@components/DoWithAi.astro";

{C.JOB_CAP}s are custom functions or procedures that {C.TIMESCALE_DB} runs on your schedule. The sections below show how to register one, test it, and change or remove it safely.

<Prerequisites context="procedure">
<PrereqCloudOrSelf />
</Prerequisites>

<DoWithAi />

## Create a {C.JOB}

To create a {C.JOB}, create a [{C.PG} function](https://www.postgresql.org/docs/current/xfunc.html) or [procedure](https://www.postgresql.org/docs/current/xproc.html) that you want your database to execute, then set it up to run on a schedule.
Expand Down
Loading
Loading