zubo 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.github/workflows/ci.yml +35 -0
- package/README.md +149 -0
- package/bun.lock +216 -0
- package/desktop/README.md +57 -0
- package/desktop/package.json +12 -0
- package/desktop/src-tauri/Cargo.toml +25 -0
- package/desktop/src-tauri/build.rs +3 -0
- package/desktop/src-tauri/icons/README.md +17 -0
- package/desktop/src-tauri/icons/icon.png +0 -0
- package/desktop/src-tauri/src/main.rs +189 -0
- package/desktop/src-tauri/tauri.conf.json +68 -0
- package/docs/ROADMAP.md +490 -0
- package/migrations/001_init.sql +9 -0
- package/migrations/002_memory.sql +33 -0
- package/migrations/003_cron.sql +24 -0
- package/migrations/004_usage.sql +12 -0
- package/migrations/005_secrets.sql +8 -0
- package/migrations/006_agents.sql +1 -0
- package/migrations/007_workflows.sql +22 -0
- package/migrations/008_proactive.sql +24 -0
- package/migrations/009_uploads.sql +9 -0
- package/migrations/010_observability.sql +22 -0
- package/migrations/011_api_keys.sql +7 -0
- package/migrations/012_indexes.sql +5 -0
- package/migrations/013_budget.sql +11 -0
- package/migrations/014_usage_session_idx.sql +2 -0
- package/package.json +39 -0
- package/site/404.html +156 -0
- package/site/CNAME +1 -0
- package/site/docs/agents.html +294 -0
- package/site/docs/api.html +446 -0
- package/site/docs/channels.html +345 -0
- package/site/docs/cli.html +238 -0
- package/site/docs/config.html +1034 -0
- package/site/docs/index.html +433 -0
- package/site/docs/integrations.html +381 -0
- package/site/docs/memory.html +254 -0
- package/site/docs/security.html +375 -0
- package/site/docs/skills.html +322 -0
- package/site/docs.css +412 -0
- package/site/index.html +638 -0
- package/site/install.sh +98 -0
- package/site/logo.svg +1 -0
- package/site/og-image.png +0 -0
- package/site/robots.txt +4 -0
- package/site/script.js +361 -0
- package/site/sitemap.xml +63 -0
- package/site/skills.html +532 -0
- package/site/style.css +1686 -0
- package/src/agent/agents.ts +159 -0
- package/src/agent/compaction.ts +53 -0
- package/src/agent/context.ts +18 -0
- package/src/agent/delegate.ts +118 -0
- package/src/agent/loop.ts +318 -0
- package/src/agent/prompts.ts +111 -0
- package/src/agent/session.ts +87 -0
- package/src/agent/teams.ts +116 -0
- package/src/agent/workflow-executor.ts +192 -0
- package/src/agent/workflow.ts +175 -0
- package/src/channels/adapter.ts +21 -0
- package/src/channels/dashboard.html.ts +2969 -0
- package/src/channels/discord.ts +137 -0
- package/src/channels/optional-deps.d.ts +17 -0
- package/src/channels/router.ts +199 -0
- package/src/channels/signal.ts +133 -0
- package/src/channels/slack.ts +101 -0
- package/src/channels/telegram.ts +102 -0
- package/src/channels/utils.ts +18 -0
- package/src/channels/webchat.ts +1797 -0
- package/src/channels/whatsapp.ts +119 -0
- package/src/config/loader.ts +22 -0
- package/src/config/paths.ts +43 -0
- package/src/config/schema.ts +121 -0
- package/src/db/connection.ts +20 -0
- package/src/db/export.ts +148 -0
- package/src/db/migrations.ts +42 -0
- package/src/index.ts +261 -0
- package/src/llm/claude.ts +193 -0
- package/src/llm/factory.ts +115 -0
- package/src/llm/failover.ts +101 -0
- package/src/llm/openai-compat.ts +409 -0
- package/src/llm/provider.ts +83 -0
- package/src/llm/smart-router.ts +241 -0
- package/src/logs.ts +53 -0
- package/src/memory/chunker.ts +58 -0
- package/src/memory/document-parser.ts +115 -0
- package/src/memory/embedder.ts +235 -0
- package/src/memory/engine.ts +170 -0
- package/src/memory/fts-index.ts +55 -0
- package/src/memory/hybrid-search.ts +72 -0
- package/src/memory/store.ts +56 -0
- package/src/memory/vector-index.ts +72 -0
- package/src/model.ts +118 -0
- package/src/registry/cli.ts +43 -0
- package/src/registry/client.ts +54 -0
- package/src/registry/installer.ts +67 -0
- package/src/scheduler/briefing.ts +71 -0
- package/src/scheduler/cron.ts +258 -0
- package/src/scheduler/heartbeat.ts +58 -0
- package/src/scheduler/memory-triggers.ts +100 -0
- package/src/scheduler/natural-cron.ts +163 -0
- package/src/scheduler/proactive.ts +25 -0
- package/src/scheduler/recipes.ts +110 -0
- package/src/secrets/store.ts +64 -0
- package/src/setup.ts +413 -0
- package/src/skills.ts +293 -0
- package/src/start.ts +373 -0
- package/src/status.ts +165 -0
- package/src/tools/builtin/connect-service.ts +205 -0
- package/src/tools/builtin/cron.ts +126 -0
- package/src/tools/builtin/datetime.ts +36 -0
- package/src/tools/builtin/delegate-task.ts +81 -0
- package/src/tools/builtin/delegate.ts +42 -0
- package/src/tools/builtin/diagnose.ts +41 -0
- package/src/tools/builtin/google-oauth.ts +379 -0
- package/src/tools/builtin/manage-agents.ts +149 -0
- package/src/tools/builtin/manage-skills.ts +294 -0
- package/src/tools/builtin/manage-teams.ts +89 -0
- package/src/tools/builtin/manage-triggers.ts +94 -0
- package/src/tools/builtin/manage-workflows.ts +119 -0
- package/src/tools/builtin/memory-search.ts +38 -0
- package/src/tools/builtin/memory-write.ts +30 -0
- package/src/tools/builtin/run-workflow.ts +36 -0
- package/src/tools/builtin/secrets.ts +122 -0
- package/src/tools/builtin/skill-registry.ts +75 -0
- package/src/tools/builtin-integrations/api-helpers.ts +26 -0
- package/src/tools/builtin-integrations/github/github_issues/SKILL.md +56 -0
- package/src/tools/builtin-integrations/github/github_issues/handler.ts +108 -0
- package/src/tools/builtin-integrations/github/github_prs/SKILL.md +57 -0
- package/src/tools/builtin-integrations/github/github_prs/handler.ts +113 -0
- package/src/tools/builtin-integrations/github/github_repos/SKILL.md +37 -0
- package/src/tools/builtin-integrations/github/github_repos/handler.ts +88 -0
- package/src/tools/builtin-integrations/google/gmail/SKILL.md +51 -0
- package/src/tools/builtin-integrations/google/gmail/handler.ts +125 -0
- package/src/tools/builtin-integrations/google/google_calendar/SKILL.md +35 -0
- package/src/tools/builtin-integrations/google/google_calendar/handler.ts +105 -0
- package/src/tools/builtin-integrations/google/google_docs/SKILL.md +35 -0
- package/src/tools/builtin-integrations/google/google_docs/handler.ts +108 -0
- package/src/tools/builtin-integrations/google/google_drive/SKILL.md +39 -0
- package/src/tools/builtin-integrations/google/google_drive/handler.ts +106 -0
- package/src/tools/builtin-integrations/google/google_sheets/SKILL.md +36 -0
- package/src/tools/builtin-integrations/google/google_sheets/handler.ts +116 -0
- package/src/tools/builtin-integrations/jira/jira_boards/SKILL.md +21 -0
- package/src/tools/builtin-integrations/jira/jira_boards/handler.ts +74 -0
- package/src/tools/builtin-integrations/jira/jira_issues/SKILL.md +28 -0
- package/src/tools/builtin-integrations/jira/jira_issues/handler.ts +140 -0
- package/src/tools/builtin-integrations/linear/linear_issues/SKILL.md +30 -0
- package/src/tools/builtin-integrations/linear/linear_issues/handler.ts +75 -0
- package/src/tools/builtin-integrations/linear/linear_projects/SKILL.md +21 -0
- package/src/tools/builtin-integrations/linear/linear_projects/handler.ts +43 -0
- package/src/tools/builtin-integrations/notion/notion_databases/SKILL.md +39 -0
- package/src/tools/builtin-integrations/notion/notion_databases/handler.ts +83 -0
- package/src/tools/builtin-integrations/notion/notion_pages/SKILL.md +43 -0
- package/src/tools/builtin-integrations/notion/notion_pages/handler.ts +130 -0
- package/src/tools/builtin-integrations/notion/notion_search/SKILL.md +27 -0
- package/src/tools/builtin-integrations/notion/notion_search/handler.ts +69 -0
- package/src/tools/builtin-integrations/slack/slack_messages/SKILL.md +42 -0
- package/src/tools/builtin-integrations/slack/slack_messages/handler.ts +72 -0
- package/src/tools/builtin-integrations/twitter/twitter_posts/SKILL.md +24 -0
- package/src/tools/builtin-integrations/twitter/twitter_posts/handler.ts +133 -0
- package/src/tools/builtin-skills/file-read/SKILL.md +26 -0
- package/src/tools/builtin-skills/file-read/handler.ts +66 -0
- package/src/tools/builtin-skills/file-write/SKILL.md +30 -0
- package/src/tools/builtin-skills/file-write/handler.ts +64 -0
- package/src/tools/builtin-skills/http-request/SKILL.md +34 -0
- package/src/tools/builtin-skills/http-request/handler.ts +87 -0
- package/src/tools/builtin-skills/shell/SKILL.md +26 -0
- package/src/tools/builtin-skills/shell/handler.ts +96 -0
- package/src/tools/builtin-skills/url-fetch/SKILL.md +26 -0
- package/src/tools/builtin-skills/url-fetch/handler.ts +37 -0
- package/src/tools/builtin-skills/web-search/SKILL.md +26 -0
- package/src/tools/builtin-skills/web-search/handler.ts +50 -0
- package/src/tools/executor.ts +205 -0
- package/src/tools/integration-installer.ts +106 -0
- package/src/tools/permissions.ts +45 -0
- package/src/tools/registry.ts +39 -0
- package/src/tools/sandbox-runner.ts +56 -0
- package/src/tools/sandbox.ts +82 -0
- package/src/tools/skill-installer.ts +52 -0
- package/src/tools/skill-loader.ts +259 -0
- package/src/types/optional-deps.d.ts +23 -0
- package/src/util/auth.ts +121 -0
- package/src/util/costs.ts +59 -0
- package/src/util/error-buffer.ts +32 -0
- package/src/util/google-tokens.ts +180 -0
- package/src/util/logger.ts +73 -0
- package/src/util/perf-collector.ts +35 -0
- package/src/util/rate-limiter.ts +70 -0
- package/src/util/tokens.ts +17 -0
- package/src/voice/stt.ts +57 -0
- package/src/voice/tts.ts +103 -0
- package/tests/agent/session.test.ts +109 -0
- package/tests/agent-loop.test.ts +54 -0
- package/tests/auth.test.ts +89 -0
- package/tests/channels.test.ts +67 -0
- package/tests/compaction.test.ts +44 -0
- package/tests/config.test.ts +51 -0
- package/tests/costs.test.ts +19 -0
- package/tests/cron.test.ts +55 -0
- package/tests/db/export.test.ts +219 -0
- package/tests/executor.test.ts +144 -0
- package/tests/export.test.ts +137 -0
- package/tests/helpers/mock-llm.ts +34 -0
- package/tests/helpers/test-db.ts +74 -0
- package/tests/integration/chat-flow.test.ts +48 -0
- package/tests/integrations.test.ts +97 -0
- package/tests/memory/engine.test.ts +114 -0
- package/tests/memory-engine.test.ts +57 -0
- package/tests/permissions.test.ts +21 -0
- package/tests/rate-limiter.test.ts +70 -0
- package/tests/registry.test.ts +67 -0
- package/tests/router.test.ts +36 -0
- package/tests/session.test.ts +58 -0
- package/tests/skill-loader.test.ts +44 -0
- package/tests/tokens.test.ts +30 -0
- package/tests/tools/executor.test.ts +130 -0
- package/tests/util/auth.test.ts +75 -0
- package/tests/util/rate-limiter.test.ts +73 -0
- package/tests/voice.test.ts +60 -0
- package/tests/webchat.test.ts +88 -0
- package/tests/workflow.test.ts +38 -0
- package/tsconfig.json +16 -0
package/site/index.html
ADDED
|
@@ -0,0 +1,638 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="UTF-8">
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
6
|
+
<title>Zubo — The AI Agent That Never Forgets</title>
|
|
7
|
+
<meta name="description" content="Zubo is a self-hosted AI agent with persistent memory, multi-channel presence, smart tools, and sub-agent delegation. Open source. Runs locally. No cloud required.">
|
|
8
|
+
<meta name="theme-color" content="#060608">
|
|
9
|
+
<link rel="canonical" href="https://zubo.bot/">
|
|
10
|
+
<meta property="og:title" content="Zubo — The AI Agent That Never Forgets">
|
|
11
|
+
<meta property="og:description" content="Self-hosted AI agent with persistent memory, multi-channel presence, and 20+ smart tools. Open source, runs locally.">
|
|
12
|
+
<meta property="og:type" content="website">
|
|
13
|
+
<meta property="og:url" content="https://zubo.bot/">
|
|
14
|
+
<meta property="og:image" content="https://zubo.bot/og-image.png">
|
|
15
|
+
<meta property="og:site_name" content="Zubo">
|
|
16
|
+
<meta name="twitter:card" content="summary_large_image">
|
|
17
|
+
<meta name="twitter:title" content="Zubo — The AI Agent That Never Forgets">
|
|
18
|
+
<meta name="twitter:description" content="Self-hosted AI agent with persistent memory, multi-channel presence, and 20+ smart tools. Open source, runs locally.">
|
|
19
|
+
<meta name="twitter:image" content="https://zubo.bot/og-image.png">
|
|
20
|
+
<meta name="twitter:creator" content="@thomaskanze">
|
|
21
|
+
<link rel="preconnect" href="https://fonts.googleapis.com">
|
|
22
|
+
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
|
23
|
+
<link href="https://fonts.googleapis.com/css2?family=Bricolage+Grotesque:opsz,wght@12..96,600;12..96,700;12..96,800&family=DM+Sans:ital,opsz,wght@0,9..40,400;0,9..40,500;0,9..40,600;0,9..40,700;1,9..40,400&family=JetBrains+Mono:wght@400;500;600&display=swap" rel="stylesheet">
|
|
24
|
+
<link rel="stylesheet" href="style.css">
|
|
25
|
+
<link rel="icon" href="data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 100'><rect width='100' height='100' rx='20' fill='%237c3aed'/><path d='M50 15C52 37 63 48 85 50C63 52 52 63 50 85C48 63 37 52 15 50C37 48 48 37 50 15Z' fill='white'/></svg>">
|
|
26
|
+
</head>
|
|
27
|
+
<body>
|
|
28
|
+
|
|
29
|
+
<!-- Scroll progress -->
|
|
30
|
+
<div class="scroll-progress" id="scroll-progress"></div>
|
|
31
|
+
|
|
32
|
+
<!-- Subtle noise overlay -->
|
|
33
|
+
<div class="noise" aria-hidden="true"></div>
|
|
34
|
+
|
|
35
|
+
<!-- ========== NAVIGATION ========== -->
|
|
36
|
+
<header class="nav" id="nav">
|
|
37
|
+
<div class="nav-inner">
|
|
38
|
+
<a href="#" class="nav-logo">
|
|
39
|
+
<span class="logo-wordmark">zubo</span>
|
|
40
|
+
</a>
|
|
41
|
+
<nav class="nav-links" id="nav-links">
|
|
42
|
+
<a href="#features">Features</a>
|
|
43
|
+
<a href="docs/index.html">Docs</a>
|
|
44
|
+
<a href="skills.html">Skills</a>
|
|
45
|
+
<a href="#get-started">Get Started</a>
|
|
46
|
+
</nav>
|
|
47
|
+
<div class="nav-right">
|
|
48
|
+
<a href="https://github.com/apwn/zubo" class="nav-github" aria-label="GitHub">
|
|
49
|
+
<svg width="20" height="20" viewBox="0 0 24 24" fill="currentColor"><path d="M12 0c-6.626 0-12 5.373-12 12 0 5.302 3.438 9.8 8.207 11.387.599.111.793-.261.793-.577v-2.234c-3.338.726-4.033-1.416-4.033-1.416-.546-1.387-1.333-1.756-1.333-1.756-1.089-.745.083-.729.083-.729 1.205.084 1.839 1.237 1.839 1.237 1.07 1.834 2.807 1.304 3.492.997.107-.775.418-1.305.762-1.604-2.665-.305-5.467-1.334-5.467-5.931 0-1.311.469-2.381 1.236-3.221-.124-.303-.535-1.524.117-3.176 0 0 1.008-.322 3.301 1.23.957-.266 1.983-.399 3.003-.404 1.02.005 2.047.138 3.006.404 2.291-1.552 3.297-1.23 3.297-1.23.653 1.653.242 2.874.118 3.176.77.84 1.235 1.911 1.235 3.221 0 4.609-2.807 5.624-5.479 5.921.43.372.823 1.102.823 2.222v3.293c0 .319.192.694.801.576 4.765-1.589 8.199-6.086 8.199-11.386 0-6.627-5.373-12-12-12z"/></svg>
|
|
50
|
+
</a>
|
|
51
|
+
<a href="#get-started" class="btn btn-primary btn-nav">Get Started</a>
|
|
52
|
+
<button class="nav-toggle" id="nav-toggle" aria-label="Toggle menu">
|
|
53
|
+
<span></span><span></span><span></span>
|
|
54
|
+
</button>
|
|
55
|
+
</div>
|
|
56
|
+
</div>
|
|
57
|
+
</header>
|
|
58
|
+
|
|
59
|
+
<!-- ========== HERO ========== -->
|
|
60
|
+
<section class="hero">
|
|
61
|
+
<div class="hero-glow" aria-hidden="true">
|
|
62
|
+
<div class="orb orb-1"></div>
|
|
63
|
+
<div class="orb orb-2"></div>
|
|
64
|
+
<div class="orb orb-3"></div>
|
|
65
|
+
</div>
|
|
66
|
+
<div class="hero-grid-bg" aria-hidden="true"></div>
|
|
67
|
+
|
|
68
|
+
<div class="container">
|
|
69
|
+
<div class="hero-content reveal">
|
|
70
|
+
<div class="hero-badge">
|
|
71
|
+
<span class="badge-pulse"></span>
|
|
72
|
+
Open Source · Self-Hosted · Private
|
|
73
|
+
</div>
|
|
74
|
+
|
|
75
|
+
<h1 class="hero-title">
|
|
76
|
+
<span class="hero-line">Your AI Agent.</span>
|
|
77
|
+
<span class="hero-line"><span class="gradient-text">Infinite Memory.</span></span>
|
|
78
|
+
</h1>
|
|
79
|
+
|
|
80
|
+
<p class="hero-subtitle">
|
|
81
|
+
Zubo runs on your machine with persistent semantic memory, multi-channel presence,
|
|
82
|
+
20+ smart tools, and sub-agent delegation. No cloud. No compromise. No forgetting.
|
|
83
|
+
</p>
|
|
84
|
+
|
|
85
|
+
<div class="hero-actions">
|
|
86
|
+
<a href="#get-started" class="btn btn-primary btn-lg">
|
|
87
|
+
<svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M13 2L3 14h9l-1 8 10-12h-9l1-8z"/></svg>
|
|
88
|
+
Get Started
|
|
89
|
+
</a>
|
|
90
|
+
<a href="https://github.com/apwn/zubo" class="btn btn-ghost btn-lg">
|
|
91
|
+
<svg width="18" height="18" viewBox="0 0 24 24" fill="currentColor"><path d="M12 0c-6.626 0-12 5.373-12 12 0 5.302 3.438 9.8 8.207 11.387.599.111.793-.261.793-.577v-2.234c-3.338.726-4.033-1.416-4.033-1.416-.546-1.387-1.333-1.756-1.333-1.756-1.089-.745.083-.729.083-.729 1.205.084 1.839 1.237 1.839 1.237 1.07 1.834 2.807 1.304 3.492.997.107-.775.418-1.305.762-1.604-2.665-.305-5.467-1.334-5.467-5.931 0-1.311.469-2.381 1.236-3.221-.124-.303-.535-1.524.117-3.176 0 0 1.008-.322 3.301 1.23.957-.266 1.983-.399 3.003-.404 1.02.005 2.047.138 3.006.404 2.291-1.552 3.297-1.23 3.297-1.23.653 1.653.242 2.874.118 3.176.77.84 1.235 1.911 1.235 3.221 0 4.609-2.807 5.624-5.479 5.921.43.372.823 1.102.823 2.222v3.293c0 .319.192.694.801.576 4.765-1.589 8.199-6.086 8.199-11.386 0-6.627-5.373-12-12-12z"/></svg>
|
|
92
|
+
Star on GitHub
|
|
93
|
+
</a>
|
|
94
|
+
</div>
|
|
95
|
+
|
|
96
|
+
<div class="hero-stats">
|
|
97
|
+
<div class="hero-stat">
|
|
98
|
+
<span class="hero-stat-number" data-target="6">0</span>
|
|
99
|
+
<span class="hero-stat-label">Channels</span>
|
|
100
|
+
</div>
|
|
101
|
+
<div class="hero-stat-divider"></div>
|
|
102
|
+
<div class="hero-stat">
|
|
103
|
+
<span class="hero-stat-number" data-target="20">0</span>
|
|
104
|
+
<span class="hero-stat-label">Built-in Tools</span>
|
|
105
|
+
</div>
|
|
106
|
+
<div class="hero-stat-divider"></div>
|
|
107
|
+
<div class="hero-stat">
|
|
108
|
+
<span class="hero-stat-number" data-target="7">0</span>
|
|
109
|
+
<span class="hero-stat-label">Integrations</span>
|
|
110
|
+
</div>
|
|
111
|
+
<div class="hero-stat-divider"></div>
|
|
112
|
+
<div class="hero-stat">
|
|
113
|
+
<span class="hero-stat-number" data-target="100">0</span>
|
|
114
|
+
<span class="hero-stat-label">% Local</span>
|
|
115
|
+
</div>
|
|
116
|
+
</div>
|
|
117
|
+
</div>
|
|
118
|
+
|
|
119
|
+
<!-- Terminal Demo -->
|
|
120
|
+
<div class="hero-terminal reveal reveal-delay-1">
|
|
121
|
+
<div class="terminal glow-border">
|
|
122
|
+
<div class="terminal-chrome">
|
|
123
|
+
<div class="terminal-dots">
|
|
124
|
+
<span class="td td-r"></span>
|
|
125
|
+
<span class="td td-y"></span>
|
|
126
|
+
<span class="td td-g"></span>
|
|
127
|
+
</div>
|
|
128
|
+
<div class="terminal-title">zubo — conversation</div>
|
|
129
|
+
</div>
|
|
130
|
+
<div class="terminal-body" id="terminal-body">
|
|
131
|
+
<div class="terminal-line terminal-prompt">
|
|
132
|
+
<span class="t-user">you</span>
|
|
133
|
+
<span class="t-msg" id="typed-1" data-text="Hey Zubo, remind me — what was that restaurant Sarah recommended last week?"></span>
|
|
134
|
+
</div>
|
|
135
|
+
<div class="terminal-line terminal-response" id="response-1" style="display:none">
|
|
136
|
+
<span class="t-agent">zubo</span>
|
|
137
|
+
<span class="t-msg">Sarah recommended <strong>Osteria Mozza</strong> on Highland Ave — she said the burrata was incredible. Want me to make a reservation?</span>
|
|
138
|
+
</div>
|
|
139
|
+
<div class="terminal-line terminal-prompt" id="prompt-2" style="display:none">
|
|
140
|
+
<span class="t-user">you</span>
|
|
141
|
+
<span class="t-msg" id="typed-2" data-text="Yes! Friday at 7pm for two. Also check my calendar for conflicts."></span>
|
|
142
|
+
</div>
|
|
143
|
+
<div class="terminal-line terminal-response" id="response-2" style="display:none">
|
|
144
|
+
<span class="t-agent">zubo</span>
|
|
145
|
+
<span class="t-msg">
|
|
146
|
+
<span class="t-tool">⚙ google_calendar</span> Friday 7pm is clear.
|
|
147
|
+
<span class="t-tool">⚙ web_search</span> Found Osteria Mozza on OpenTable.
|
|
148
|
+
<br>Reservation confirmed: <strong>Friday, 7:00 PM, party of 2</strong>. I've added it to your calendar.
|
|
149
|
+
</span>
|
|
150
|
+
</div>
|
|
151
|
+
<div class="terminal-line terminal-prompt" id="prompt-3" style="display:none">
|
|
152
|
+
<span class="t-user">you</span>
|
|
153
|
+
<span class="t-msg" id="typed-3" data-text="Perfect. Send Sarah a message on Telegram to let her know."></span>
|
|
154
|
+
</div>
|
|
155
|
+
<div class="terminal-line terminal-response" id="response-3" style="display:none">
|
|
156
|
+
<span class="t-agent">zubo</span>
|
|
157
|
+
<span class="t-msg">
|
|
158
|
+
<span class="t-tool">⚙ telegram</span> Done! Sent Sarah: “We’re going to Osteria Mozza Friday at 7! Thanks for the rec ”
|
|
159
|
+
</span>
|
|
160
|
+
</div>
|
|
161
|
+
<div class="terminal-cursor" id="terminal-cursor">█</div>
|
|
162
|
+
</div>
|
|
163
|
+
</div>
|
|
164
|
+
</div>
|
|
165
|
+
</div>
|
|
166
|
+
</section>
|
|
167
|
+
|
|
168
|
+
<!-- ========== TECH STACK (marquee) ========== -->
|
|
169
|
+
<section class="stack">
|
|
170
|
+
<div class="stack-fade stack-fade-l" aria-hidden="true"></div>
|
|
171
|
+
<div class="stack-fade stack-fade-r" aria-hidden="true"></div>
|
|
172
|
+
<div class="stack-track">
|
|
173
|
+
<div class="stack-items">
|
|
174
|
+
<div class="stack-item">
|
|
175
|
+
<svg width="22" height="22" viewBox="0 0 24 24" fill="none"><circle cx="12" cy="12" r="10" stroke="currentColor" stroke-width="2"/><path d="M8 12h8M12 8v8" stroke="currentColor" stroke-width="2" stroke-linecap="round"/></svg>
|
|
176
|
+
<span>Bun</span>
|
|
177
|
+
</div>
|
|
178
|
+
<div class="stack-item">
|
|
179
|
+
<svg width="22" height="22" viewBox="0 0 24 24" fill="currentColor"><path d="M1.125 0C.502 0 0 .502 0 1.125v21.75C0 23.498.502 24 1.125 24h21.75c.623 0 1.125-.502 1.125-1.125V1.125C24 .502 23.498 0 22.875 0H1.125zm17.363 9.75c.612 0 1.154.037 1.677.111a6.38 6.38 0 0 1 1.386.352v3.04c-.42-.258-.858-.45-1.314-.582a5.24 5.24 0 0 0-1.421-.2c-.474 0-.832.066-1.072.198-.24.132-.36.318-.36.558 0 .24.12.42.36.54.24.12.636.24 1.188.36.648.144 1.188.324 1.62.54.432.216.756.492.972.828.216.336.324.762.324 1.278 0 .876-.342 1.542-1.026 2.004-.684.456-1.62.684-2.808.684a9.7 9.7 0 0 1-1.836-.162 6.29 6.29 0 0 1-1.476-.486v-3.198c.516.348 1.05.606 1.602.774a5.6 5.6 0 0 0 1.614.252c.474 0 .822-.06 1.044-.18.222-.12.336-.3.336-.54 0-.252-.12-.438-.36-.558-.24-.12-.648-.24-1.224-.36-.636-.144-1.17-.33-1.602-.558a2.28 2.28 0 0 1-.936-.858c-.216-.372-.324-.834-.324-1.386 0-.84.336-1.494 1.008-1.962.672-.468 1.578-.702 2.718-.702zM8.4 4.8h3.12v6.588c0 1.044-.15 1.884-.45 2.52-.3.636-.774 1.098-1.422 1.386-.648.288-1.5.432-2.556.432-.6 0-1.17-.042-1.71-.126a7.18 7.18 0 0 1-1.422-.36v-3.24c.384.24.792.42 1.224.54.432.12.846.18 1.242.18.552 0 .948-.12 1.188-.36.24-.24.36-.648.36-1.224V4.8z"/></svg>
|
|
180
|
+
<span>TypeScript</span>
|
|
181
|
+
</div>
|
|
182
|
+
<div class="stack-item">
|
|
183
|
+
<svg width="22" height="22" viewBox="0 0 24 24" fill="currentColor"><path d="M12 1.5L1.5 7.5v9L12 22.5l10.5-6v-9L12 1.5zM12 4l7.5 4.5L12 13 4.5 8.5 12 4z"/></svg>
|
|
184
|
+
<span>SQLite</span>
|
|
185
|
+
</div>
|
|
186
|
+
<div class="stack-item">
|
|
187
|
+
<svg width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M12 2L2 7l10 5 10-5-10-5z"/><path d="M2 17l10 5 10-5"/><path d="M2 12l10 5 10-5"/></svg>
|
|
188
|
+
<span>Vector Search</span>
|
|
189
|
+
</div>
|
|
190
|
+
<div class="stack-item">
|
|
191
|
+
<svg width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="2" y="3" width="20" height="14" rx="2"/><path d="M8 21h8M12 17v4"/></svg>
|
|
192
|
+
<span>Local-First</span>
|
|
193
|
+
</div>
|
|
194
|
+
<div class="stack-item">
|
|
195
|
+
<svg width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z"/></svg>
|
|
196
|
+
<span>MIT Licensed</span>
|
|
197
|
+
</div>
|
|
198
|
+
</div>
|
|
199
|
+
<!-- Duplicate for seamless loop -->
|
|
200
|
+
<div class="stack-items" aria-hidden="true">
|
|
201
|
+
<div class="stack-item">
|
|
202
|
+
<svg width="22" height="22" viewBox="0 0 24 24" fill="none"><circle cx="12" cy="12" r="10" stroke="currentColor" stroke-width="2"/><path d="M8 12h8M12 8v8" stroke="currentColor" stroke-width="2" stroke-linecap="round"/></svg>
|
|
203
|
+
<span>Bun</span>
|
|
204
|
+
</div>
|
|
205
|
+
<div class="stack-item">
|
|
206
|
+
<svg width="22" height="22" viewBox="0 0 24 24" fill="currentColor"><path d="M1.125 0C.502 0 0 .502 0 1.125v21.75C0 23.498.502 24 1.125 24h21.75c.623 0 1.125-.502 1.125-1.125V1.125C24 .502 23.498 0 22.875 0H1.125zm17.363 9.75c.612 0 1.154.037 1.677.111a6.38 6.38 0 0 1 1.386.352v3.04c-.42-.258-.858-.45-1.314-.582a5.24 5.24 0 0 0-1.421-.2c-.474 0-.832.066-1.072.198-.24.132-.36.318-.36.558 0 .24.12.42.36.54.24.12.636.24 1.188.36.648.144 1.188.324 1.62.54.432.216.756.492.972.828.216.336.324.762.324 1.278 0 .876-.342 1.542-1.026 2.004-.684.456-1.62.684-2.808.684a9.7 9.7 0 0 1-1.836-.162 6.29 6.29 0 0 1-1.476-.486v-3.198c.516.348 1.05.606 1.602.774a5.6 5.6 0 0 0 1.614.252c.474 0 .822-.06 1.044-.18.222-.12.336-.3.336-.54 0-.252-.12-.438-.36-.558-.24-.12-.648-.24-1.224-.36-.636-.144-1.17-.33-1.602-.558a2.28 2.28 0 0 1-.936-.858c-.216-.372-.324-.834-.324-1.386 0-.84.336-1.494 1.008-1.962.672-.468 1.578-.702 2.718-.702zM8.4 4.8h3.12v6.588c0 1.044-.15 1.884-.45 2.52-.3.636-.774 1.098-1.422 1.386-.648.288-1.5.432-2.556.432-.6 0-1.17-.042-1.71-.126a7.18 7.18 0 0 1-1.422-.36v-3.24c.384.24.792.42 1.224.54.432.12.846.18 1.242.18.552 0 .948-.12 1.188-.36.24-.24.36-.648.36-1.224V4.8z"/></svg>
|
|
207
|
+
<span>TypeScript</span>
|
|
208
|
+
</div>
|
|
209
|
+
<div class="stack-item">
|
|
210
|
+
<svg width="22" height="22" viewBox="0 0 24 24" fill="currentColor"><path d="M12 1.5L1.5 7.5v9L12 22.5l10.5-6v-9L12 1.5zM12 4l7.5 4.5L12 13 4.5 8.5 12 4z"/></svg>
|
|
211
|
+
<span>SQLite</span>
|
|
212
|
+
</div>
|
|
213
|
+
<div class="stack-item">
|
|
214
|
+
<svg width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M12 2L2 7l10 5 10-5-10-5z"/><path d="M2 17l10 5 10-5"/><path d="M2 12l10 5 10-5"/></svg>
|
|
215
|
+
<span>Vector Search</span>
|
|
216
|
+
</div>
|
|
217
|
+
<div class="stack-item">
|
|
218
|
+
<svg width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="2" y="3" width="20" height="14" rx="2"/><path d="M8 21h8M12 17v4"/></svg>
|
|
219
|
+
<span>Local-First</span>
|
|
220
|
+
</div>
|
|
221
|
+
<div class="stack-item">
|
|
222
|
+
<svg width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z"/></svg>
|
|
223
|
+
<span>MIT Licensed</span>
|
|
224
|
+
</div>
|
|
225
|
+
</div>
|
|
226
|
+
</div>
|
|
227
|
+
</section>
|
|
228
|
+
|
|
229
|
+
<!-- ========== FEATURES ========== -->
|
|
230
|
+
<section class="features" id="features">
|
|
231
|
+
<div class="container">
|
|
232
|
+
<div class="section-header reveal">
|
|
233
|
+
<span class="section-badge">Capabilities</span>
|
|
234
|
+
<h2 class="section-title">Everything you need.<br><span class="gradient-text">Nothing you don't.</span></h2>
|
|
235
|
+
<p class="section-subtitle">Zubo ships with powerful features out of the box — memory, tools, scheduling, multi-channel support, and more. No plugins needed to get started.</p>
|
|
236
|
+
</div>
|
|
237
|
+
|
|
238
|
+
<div class="bento reveal-stagger">
|
|
239
|
+
<!-- Row 1 -->
|
|
240
|
+
<div class="bento-card bento-lg tilt-card" data-feature="memory">
|
|
241
|
+
<div class="bento-icon">
|
|
242
|
+
<svg width="28" height="28" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M12 2a5 5 0 0 1 5 5v3a5 5 0 0 1-10 0V7a5 5 0 0 1 5-5z"/><path d="M9 22h6"/><path d="M12 17v5"/><circle cx="12" cy="9" r="1"/><path d="M7 7h.01"/><path d="M17 7h.01"/><path d="M7 13h10"/></svg>
|
|
243
|
+
</div>
|
|
244
|
+
<h3>Total Recall</h3>
|
|
245
|
+
<p>Persistent semantic memory powered by vector search. Zubo remembers every conversation, preference, and fact — across sessions, across channels, forever.</p>
|
|
246
|
+
<div class="bento-visual">
|
|
247
|
+
<div class="memory-dots">
|
|
248
|
+
<span class="m-dot" style="--delay:0s; --x:20%; --y:30%"></span>
|
|
249
|
+
<span class="m-dot" style="--delay:0.5s; --x:60%; --y:20%"></span>
|
|
250
|
+
<span class="m-dot" style="--delay:1s; --x:40%; --y:60%"></span>
|
|
251
|
+
<span class="m-dot" style="--delay:1.5s; --x:80%; --y:40%"></span>
|
|
252
|
+
<span class="m-dot" style="--delay:2s; --x:30%; --y:80%"></span>
|
|
253
|
+
<span class="m-dot" style="--delay:0.3s; --x:70%; --y:70%"></span>
|
|
254
|
+
<span class="m-line" style="--x1:20%; --y1:30%; --x2:60%; --y2:20%"></span>
|
|
255
|
+
<span class="m-line" style="--x1:60%; --y1:20%; --x2:40%; --y2:60%"></span>
|
|
256
|
+
<span class="m-line" style="--x1:40%; --y1:60%; --x2:80%; --y2:40%"></span>
|
|
257
|
+
<span class="m-line" style="--x1:80%; --y1:40%; --x2:30%; --y2:80%"></span>
|
|
258
|
+
</div>
|
|
259
|
+
</div>
|
|
260
|
+
</div>
|
|
261
|
+
|
|
262
|
+
<div class="bento-card tilt-card" data-feature="tools">
|
|
263
|
+
<div class="bento-icon">
|
|
264
|
+
<svg width="28" height="28" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.77-3.77a6 6 0 0 1-7.94 7.94l-6.91 6.91a2.12 2.12 0 0 1-3-3l6.91-6.91a6 6 0 0 1 7.94-7.94l-3.76 3.76z"/></svg>
|
|
265
|
+
</div>
|
|
266
|
+
<h3>20+ Smart Tools</h3>
|
|
267
|
+
<p>Web search, file operations, code execution, APIs, and more. Sub-agent delegation for complex tasks. Automatic failover between LLM providers for zero-downtime reliability.</p>
|
|
268
|
+
</div>
|
|
269
|
+
|
|
270
|
+
<div class="bento-card tilt-card" data-feature="privacy">
|
|
271
|
+
<div class="bento-icon">
|
|
272
|
+
<svg width="28" height="28" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="11" width="18" height="11" rx="2" ry="2"/><path d="M7 11V7a5 5 0 0 1 10 0v4"/><circle cx="12" cy="16" r="1"/></svg>
|
|
273
|
+
</div>
|
|
274
|
+
<h3>100% Private</h3>
|
|
275
|
+
<p>Runs entirely on your machine. SQLite database, local vector store. Your conversations never leave your hardware. Set spending limits and track costs per model — full transparency, zero surprises.</p>
|
|
276
|
+
</div>
|
|
277
|
+
|
|
278
|
+
<!-- Row 2 -->
|
|
279
|
+
<div class="bento-card tilt-card" data-feature="proactive">
|
|
280
|
+
<div class="bento-icon">
|
|
281
|
+
<svg width="28" height="28" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"/><polyline points="12 6 12 12 16 14"/></svg>
|
|
282
|
+
</div>
|
|
283
|
+
<h3>Always Watching</h3>
|
|
284
|
+
<p>Schedule tasks in plain English — 'every weekday at 9am' just works. Cron jobs, proactive triggers, and automated workflows. Zubo monitors, alerts, and acts on your behalf — even when you're away.</p>
|
|
285
|
+
</div>
|
|
286
|
+
|
|
287
|
+
<div class="bento-card tilt-card" data-feature="extensible">
|
|
288
|
+
<div class="bento-icon">
|
|
289
|
+
<svg width="28" height="28" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M12 2v4M12 18v4M4.93 4.93l2.83 2.83M16.24 16.24l2.83 2.83M2 12h4M18 12h4M4.93 19.07l2.83-2.83M16.24 7.76l2.83-2.83"/></svg>
|
|
290
|
+
</div>
|
|
291
|
+
<h3>Infinitely Extensible</h3>
|
|
292
|
+
<p>Build custom skills in TypeScript. Share them on the skill registry. Install community skills with one command.</p>
|
|
293
|
+
</div>
|
|
294
|
+
|
|
295
|
+
<div class="bento-card bento-lg tilt-card" data-feature="llm">
|
|
296
|
+
<div class="bento-icon">
|
|
297
|
+
<svg width="28" height="28" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16z"/><polyline points="7.5 4.21 12 6.81 16.5 4.21"/><polyline points="7.5 19.79 7.5 14.6 3 12"/><polyline points="21 12 16.5 14.6 16.5 19.79"/><polyline points="3.27 6.96 12 12.01 20.73 6.96"/><line x1="12" y1="22.08" x2="12" y2="12"/></svg>
|
|
298
|
+
</div>
|
|
299
|
+
<h3>Any LLM, Your Choice</h3>
|
|
300
|
+
<p>Works with Anthropic, OpenAI, Google Gemini, Ollama, Groq, Together, OpenRouter, DeepSeek, xAI, Fireworks, LM Studio, and any OpenAI-compatible provider. Smart routing automatically sends simple queries to fast, cheap models — saving you money without sacrificing quality.</p>
|
|
301
|
+
<div class="bento-models">
|
|
302
|
+
<span class="model-tag">Claude</span>
|
|
303
|
+
<span class="model-tag">GPT-4o</span>
|
|
304
|
+
<span class="model-tag">Gemini</span>
|
|
305
|
+
<span class="model-tag">DeepSeek</span>
|
|
306
|
+
<span class="model-tag">Llama</span>
|
|
307
|
+
<span class="model-tag">Mistral</span>
|
|
308
|
+
<span class="model-tag">Grok</span>
|
|
309
|
+
<span class="model-tag">Ollama</span>
|
|
310
|
+
<span class="model-tag">Groq</span>
|
|
311
|
+
</div>
|
|
312
|
+
</div>
|
|
313
|
+
</div>
|
|
314
|
+
</div>
|
|
315
|
+
</section>
|
|
316
|
+
|
|
317
|
+
<!-- ========== INTEGRATIONS ========== -->
|
|
318
|
+
<section class="integrations" id="integrations">
|
|
319
|
+
<div class="container">
|
|
320
|
+
<div class="section-header reveal">
|
|
321
|
+
<span class="section-badge">Integrations</span>
|
|
322
|
+
<h2 class="section-title">Connects to your <span class="gradient-text">entire stack</span>.</h2>
|
|
323
|
+
<p class="section-subtitle">Zubo plugs into the tools your team already uses. Manage issues, read docs, post updates, and automate workflows — all through natural conversation.</p>
|
|
324
|
+
</div>
|
|
325
|
+
|
|
326
|
+
<div class="integrations-grid reveal-stagger">
|
|
327
|
+
<div class="integration-card tilt-card">
|
|
328
|
+
<div class="integration-icon">
|
|
329
|
+
<svg width="32" height="32" viewBox="0 0 24 24" fill="currentColor"><path d="M12 0c-6.626 0-12 5.373-12 12 0 5.302 3.438 9.8 8.207 11.387.599.111.793-.261.793-.577v-2.234c-3.338.726-4.033-1.416-4.033-1.416-.546-1.387-1.333-1.756-1.333-1.756-1.089-.745.083-.729.083-.729 1.205.084 1.839 1.237 1.839 1.237 1.07 1.834 2.807 1.304 3.492.997.107-.775.418-1.305.762-1.604-2.665-.305-5.467-1.334-5.467-5.931 0-1.311.469-2.381 1.236-3.221-.124-.303-.535-1.524.117-3.176 0 0 1.008-.322 3.301 1.23.957-.266 1.983-.399 3.003-.404 1.02.005 2.047.138 3.006.404 2.291-1.552 3.297-1.23 3.297-1.23.653 1.653.242 2.874.118 3.176.77.84 1.235 1.911 1.235 3.221 0 4.609-2.807 5.624-5.479 5.921.43.372.823 1.102.823 2.222v3.293c0 .319.192.694.801.576 4.765-1.589 8.199-6.086 8.199-11.386 0-6.627-5.373-12-12-12z"/></svg>
|
|
330
|
+
</div>
|
|
331
|
+
<h4>GitHub</h4>
|
|
332
|
+
<p>Issues, PRs, repos, commits. Full GitHub management through conversation.</p>
|
|
333
|
+
</div>
|
|
334
|
+
|
|
335
|
+
<div class="integration-card tilt-card">
|
|
336
|
+
<div class="integration-icon">
|
|
337
|
+
<svg width="32" height="32" viewBox="0 0 24 24" fill="currentColor"><path d="M22.56 12.25c0-.78-.07-1.53-.2-2.25H12v4.26h5.92a5.06 5.06 0 0 1-2.2 3.32v2.77h3.57c2.08-1.92 3.28-4.74 3.28-8.09z"/><path d="M12 23c2.97 0 5.46-.98 7.28-2.66l-3.57-2.77c-.98.66-2.23 1.06-3.71 1.06-2.86 0-5.29-1.93-6.16-4.53H2.18v2.84C3.99 20.53 7.7 23 12 23z"/><path d="M5.84 14.09c-.22-.66-.35-1.36-.35-2.09s.13-1.43.35-2.09V7.07H2.18C1.43 8.55 1 10.22 1 12s.43 3.45 1.18 4.93l2.85-2.22.81-.62z"/><path d="M12 5.38c1.62 0 3.06.56 4.21 1.64l3.15-3.15C17.45 2.09 14.97 1 12 1 7.7 1 3.99 3.47 2.18 7.07l3.66 2.84c.87-2.6 3.3-4.53 6.16-4.53z"/></svg>
|
|
338
|
+
</div>
|
|
339
|
+
<h4>Google</h4>
|
|
340
|
+
<p>Calendar, Gmail, Drive. Schedule meetings, send emails, manage files.</p>
|
|
341
|
+
</div>
|
|
342
|
+
|
|
343
|
+
<div class="integration-card tilt-card">
|
|
344
|
+
<div class="integration-icon">
|
|
345
|
+
<svg width="32" height="32" viewBox="0 0 24 24" fill="currentColor"><path d="M4 4h16v16H4V4zm2.5 2.5v11h11v-11h-11zm3 3h5v5h-5v-5z"/></svg>
|
|
346
|
+
</div>
|
|
347
|
+
<h4>Notion</h4>
|
|
348
|
+
<p>Read pages, create entries, search databases. Your knowledge base, connected.</p>
|
|
349
|
+
</div>
|
|
350
|
+
|
|
351
|
+
<div class="integration-card tilt-card">
|
|
352
|
+
<div class="integration-icon">
|
|
353
|
+
<svg width="32" height="32" viewBox="0 0 24 24" fill="currentColor"><path d="M3 3h7.5v7.5H3V3zm10.5 0H21v7.5h-7.5V3zM3 13.5h7.5V21H3v-7.5zm10.5 0H21V21h-7.5v-7.5z"/></svg>
|
|
354
|
+
</div>
|
|
355
|
+
<h4>Linear</h4>
|
|
356
|
+
<p>Create issues, track projects, manage sprints. Project management via chat.</p>
|
|
357
|
+
</div>
|
|
358
|
+
|
|
359
|
+
<div class="integration-card tilt-card">
|
|
360
|
+
<div class="integration-icon">
|
|
361
|
+
<svg width="32" height="32" viewBox="0 0 24 24" fill="currentColor"><path d="M11.571 11.513H0a5.218 5.218 0 0 0 5.232 5.215h2.13v2.057A5.215 5.215 0 0 0 12.577 24V12.518a1.005 1.005 0 0 0-1.006-1.005zM5.232 9.97h11.554a1.005 1.005 0 0 0 1.006-1.005V0A5.218 5.218 0 0 0 12.578 5.213H10.45V7.27A5.215 5.215 0 0 1 5.232 12.48V9.97z"/></svg>
|
|
362
|
+
</div>
|
|
363
|
+
<h4>Jira</h4>
|
|
364
|
+
<p>Tickets, sprints, boards. Manage your Jira projects without leaving chat.</p>
|
|
365
|
+
</div>
|
|
366
|
+
|
|
367
|
+
<div class="integration-card tilt-card">
|
|
368
|
+
<div class="integration-icon">
|
|
369
|
+
<svg width="32" height="32" viewBox="0 0 24 24" fill="currentColor"><path d="M18.244 2.25h3.308l-7.227 8.26 8.502 11.24H16.17l-5.214-6.817L4.99 21.75H1.68l7.73-8.835L1.254 2.25H8.08l4.713 6.231zm-1.161 17.52h1.833L7.084 4.126H5.117z"/></svg>
|
|
370
|
+
</div>
|
|
371
|
+
<h4>X / Twitter</h4>
|
|
372
|
+
<p>Post tweets, read timelines, track mentions. Social media on autopilot.</p>
|
|
373
|
+
</div>
|
|
374
|
+
</div>
|
|
375
|
+
</div>
|
|
376
|
+
</section>
|
|
377
|
+
|
|
378
|
+
<!-- ========== CHANNELS ========== -->
|
|
379
|
+
<section class="channels" id="channels">
|
|
380
|
+
<div class="container">
|
|
381
|
+
<div class="section-header reveal">
|
|
382
|
+
<span class="section-badge">Channels</span>
|
|
383
|
+
<h2 class="section-title">Lives where <span class="gradient-text">you live</span>.</h2>
|
|
384
|
+
<p class="section-subtitle">Talk to Zubo wherever you already are. Same memory, same personality, same capabilities — across every platform.</p>
|
|
385
|
+
</div>
|
|
386
|
+
|
|
387
|
+
<div class="channels-grid reveal-stagger">
|
|
388
|
+
<div class="channel-card tilt-card">
|
|
389
|
+
<div class="channel-icon channel-telegram">
|
|
390
|
+
<svg width="28" height="28" viewBox="0 0 24 24" fill="currentColor"><path d="M11.944 0A12 12 0 0 0 0 12a12 12 0 0 0 12 12 12 12 0 0 0 12-12A12 12 0 0 0 12 0a12 12 0 0 0-.056 0zm4.962 7.224c.1-.002.321.023.465.14a.506.506 0 0 1 .171.325c.016.093.036.306.02.472-.18 1.898-.962 6.502-1.36 8.627-.168.9-.499 1.201-.82 1.23-.696.065-1.225-.46-1.9-.902-1.056-.693-1.653-1.124-2.678-1.8-1.185-.78-.417-1.21.258-1.91.177-.184 3.247-2.977 3.307-3.23.007-.032.014-.15-.056-.212s-.174-.041-.249-.024c-.106.024-1.793 1.14-5.061 3.345-.479.33-.913.49-1.302.48-.428-.008-1.252-.241-1.865-.44-.752-.245-1.349-.374-1.297-.789.027-.216.325-.437.893-.663 3.498-1.524 5.83-2.529 6.998-3.014 3.332-1.386 4.025-1.627 4.476-1.635z"/></svg>
|
|
391
|
+
</div>
|
|
392
|
+
<span>Telegram</span>
|
|
393
|
+
</div>
|
|
394
|
+
|
|
395
|
+
<div class="channel-card tilt-card">
|
|
396
|
+
<div class="channel-icon channel-discord">
|
|
397
|
+
<svg width="28" height="28" viewBox="0 0 24 24" fill="currentColor"><path d="M20.317 4.3698a19.7913 19.7913 0 00-4.8851-1.5152.0741.0741 0 00-.0785.0371c-.211.3753-.4447.8648-.6083 1.2495-1.8447-.2762-3.68-.2762-5.4868 0-.1636-.3933-.4058-.8742-.6177-1.2495a.077.077 0 00-.0785-.037 19.7363 19.7363 0 00-4.8852 1.515.0699.0699 0 00-.0321.0277C.5334 9.0458-.319 13.5799.0992 18.0578a.0824.0824 0 00.0312.0561c2.0528 1.5076 4.0413 2.4228 5.9929 3.0294a.0777.0777 0 00.0842-.0276c.4616-.6304.8731-1.2952 1.226-1.9942a.076.076 0 00-.0416-.1057c-.6528-.2476-1.2743-.5495-1.8722-.8923a.077.077 0 01-.0076-.1277c.1258-.0943.2517-.1923.3718-.2914a.0743.0743 0 01.0776-.0105c3.9278 1.7933 8.18 1.7933 12.0614 0a.0739.0739 0 01.0785.0095c.1202.099.246.1981.3728.2924a.077.077 0 01-.0066.1276 12.2986 12.2986 0 01-1.873.8914.0766.0766 0 00-.0407.1067c.3604.698.7719 1.3628 1.225 1.9932a.076.076 0 00.0842.0286c1.961-.6067 3.9495-1.5219 6.0023-3.0294a.077.077 0 00.0313-.0552c.5004-5.177-.8382-9.6739-3.5485-13.6604a.061.061 0 00-.0312-.0286zM8.02 15.3312c-1.1825 0-2.1569-1.0857-2.1569-2.419 0-1.3332.9555-2.4189 2.157-2.4189 1.2108 0 2.1757 1.0952 2.1568 2.419 0 1.3332-.9555 2.4189-2.1569 2.4189zm7.9748 0c-1.1825 0-2.1569-1.0857-2.1569-2.419 0-1.3332.9554-2.4189 2.1569-2.4189 1.2108 0 2.1757 1.0952 2.1568 2.419 0 1.3332-.946 2.4189-2.1568 2.4189z"/></svg>
|
|
398
|
+
</div>
|
|
399
|
+
<span>Discord</span>
|
|
400
|
+
</div>
|
|
401
|
+
|
|
402
|
+
<div class="channel-card tilt-card">
|
|
403
|
+
<div class="channel-icon channel-slack">
|
|
404
|
+
<svg width="28" height="28" viewBox="0 0 24 24" fill="currentColor"><path d="M5.042 15.165a2.528 2.528 0 0 1-2.52 2.523A2.528 2.528 0 0 1 0 15.165a2.527 2.527 0 0 1 2.522-2.52h2.52v2.52zM6.313 15.165a2.527 2.527 0 0 1 2.521-2.52 2.527 2.527 0 0 1 2.521 2.52v6.313A2.528 2.528 0 0 1 8.834 24a2.528 2.528 0 0 1-2.521-2.522v-6.313zM8.834 5.042a2.528 2.528 0 0 1-2.521-2.52A2.528 2.528 0 0 1 8.834 0a2.528 2.528 0 0 1 2.521 2.522v2.52H8.834zM8.834 6.313a2.528 2.528 0 0 1 2.521 2.521 2.528 2.528 0 0 1-2.521 2.521H2.522A2.528 2.528 0 0 1 0 8.834a2.528 2.528 0 0 1 2.522-2.521h6.312zM18.956 8.834a2.528 2.528 0 0 1 2.522-2.521A2.528 2.528 0 0 1 24 8.834a2.528 2.528 0 0 1-2.522 2.521h-2.522V8.834zM17.688 8.834a2.528 2.528 0 0 1-2.523 2.521 2.527 2.527 0 0 1-2.52-2.521V2.522A2.527 2.527 0 0 1 15.165 0a2.528 2.528 0 0 1 2.523 2.522v6.312zM15.165 18.956a2.528 2.528 0 0 1 2.523 2.522A2.528 2.528 0 0 1 15.165 24a2.527 2.527 0 0 1-2.52-2.522v-2.522h2.52zM15.165 17.688a2.527 2.527 0 0 1-2.52-2.523 2.526 2.526 0 0 1 2.52-2.52h6.313A2.527 2.527 0 0 1 24 15.165a2.528 2.528 0 0 1-2.522 2.523h-6.313z"/></svg>
|
|
405
|
+
</div>
|
|
406
|
+
<span>Slack</span>
|
|
407
|
+
</div>
|
|
408
|
+
|
|
409
|
+
<div class="channel-card tilt-card">
|
|
410
|
+
<div class="channel-icon channel-whatsapp">
|
|
411
|
+
<svg width="28" height="28" viewBox="0 0 24 24" fill="currentColor"><path d="M17.472 14.382c-.297-.149-1.758-.867-2.03-.967-.273-.099-.471-.148-.67.15-.197.297-.767.966-.94 1.164-.173.199-.347.223-.644.075-.297-.15-1.255-.463-2.39-1.475-.883-.788-1.48-1.761-1.653-2.059-.173-.297-.018-.458.13-.606.134-.133.298-.347.446-.52.149-.174.198-.298.298-.497.099-.198.05-.371-.025-.52-.075-.149-.669-1.612-.916-2.207-.242-.579-.487-.5-.669-.51-.173-.008-.371-.01-.57-.01-.198 0-.52.074-.792.372-.272.297-1.04 1.016-1.04 2.479 0 1.462 1.065 2.875 1.213 3.074.149.198 2.096 3.2 5.077 4.487.709.306 1.262.489 1.694.625.712.227 1.36.195 1.871.118.571-.085 1.758-.719 2.006-1.413.248-.694.248-1.289.173-1.413-.074-.124-.272-.198-.57-.347m-5.421 7.403h-.004a9.87 9.87 0 01-5.031-1.378l-.361-.214-3.741.982.998-3.648-.235-.374a9.86 9.86 0 01-1.51-5.26c.001-5.45 4.436-9.884 9.888-9.884 2.64 0 5.122 1.03 6.988 2.898a9.825 9.825 0 012.893 6.994c-.003 5.45-4.437 9.884-9.885 9.884m8.413-18.297A11.815 11.815 0 0012.05 0C5.495 0 .16 5.335.157 11.892c0 2.096.547 4.142 1.588 5.945L.057 24l6.305-1.654a11.882 11.882 0 005.683 1.448h.005c6.554 0 11.89-5.335 11.893-11.893a11.821 11.821 0 00-3.48-8.413z"/></svg>
|
|
412
|
+
</div>
|
|
413
|
+
<span>WhatsApp</span>
|
|
414
|
+
</div>
|
|
415
|
+
|
|
416
|
+
<div class="channel-card tilt-card">
|
|
417
|
+
<div class="channel-icon channel-signal">
|
|
418
|
+
<svg width="28" height="28" viewBox="0 0 24 24" fill="currentColor"><path d="M12 0C5.373 0 0 5.373 0 12c0 2.917 1.04 5.591 2.772 7.671l-1.544 4.1 4.267-1.452A11.94 11.94 0 0012 24c6.627 0 12-5.373 12-12S18.627 0 12 0zm0 3.6a8.4 8.4 0 110 16.8 8.4 8.4 0 010-16.8z"/></svg>
|
|
419
|
+
</div>
|
|
420
|
+
<span>Signal</span>
|
|
421
|
+
</div>
|
|
422
|
+
|
|
423
|
+
<div class="channel-card tilt-card">
|
|
424
|
+
<div class="channel-icon channel-web">
|
|
425
|
+
<svg width="28" height="28" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"/><line x1="2" y1="12" x2="22" y2="12"/><path d="M12 2a15.3 15.3 0 0 1 4 10 15.3 15.3 0 0 1-4 10 15.3 15.3 0 0 1-4-10 15.3 15.3 0 0 1 4-10z"/></svg>
|
|
426
|
+
</div>
|
|
427
|
+
<span>Web Chat</span>
|
|
428
|
+
</div>
|
|
429
|
+
</div>
|
|
430
|
+
|
|
431
|
+
<p class="channels-note reveal">Same agent, same memory, same personality — everywhere.</p>
|
|
432
|
+
</div>
|
|
433
|
+
</section>
|
|
434
|
+
|
|
435
|
+
<!-- ========== GETTING STARTED ========== -->
|
|
436
|
+
<section class="getting-started" id="get-started">
|
|
437
|
+
<div class="container">
|
|
438
|
+
<div class="section-header reveal">
|
|
439
|
+
<span class="section-badge">Quick Start</span>
|
|
440
|
+
<h2 class="section-title">Running in <span class="gradient-text">60 seconds</span>.</h2>
|
|
441
|
+
</div>
|
|
442
|
+
|
|
443
|
+
<div class="qs-terminal glow-border reveal">
|
|
444
|
+
<div class="qs-chrome">
|
|
445
|
+
<div class="terminal-dots">
|
|
446
|
+
<span class="td td-r"></span>
|
|
447
|
+
<span class="td td-y"></span>
|
|
448
|
+
<span class="td td-g"></span>
|
|
449
|
+
</div>
|
|
450
|
+
<div class="qs-tabs">
|
|
451
|
+
<button class="qs-tab active" data-tab="one-liner">One-liner</button>
|
|
452
|
+
<button class="qs-tab" data-tab="bun">bun</button>
|
|
453
|
+
<button class="qs-tab" data-tab="npm">npm</button>
|
|
454
|
+
</div>
|
|
455
|
+
<div class="qs-chrome-spacer"></div>
|
|
456
|
+
</div>
|
|
457
|
+
<div class="qs-body">
|
|
458
|
+
<!-- one-liner tab -->
|
|
459
|
+
<div class="qs-pane active" id="qs-one-liner">
|
|
460
|
+
<div class="qs-line">
|
|
461
|
+
<span class="qs-comment"># Install and launch in one shot</span>
|
|
462
|
+
</div>
|
|
463
|
+
<div class="qs-line qs-cmd">
|
|
464
|
+
<span class="qs-prompt">$</span>
|
|
465
|
+
<span class="qs-text">curl -fsSL https://zubo.bot/install.sh | bash</span>
|
|
466
|
+
<button class="copy-btn" data-copy="curl -fsSL https://zubo.bot/install.sh | bash" aria-label="Copy command">
|
|
467
|
+
<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="9" y="9" width="13" height="13" rx="2" ry="2"/><path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"/></svg>
|
|
468
|
+
</button>
|
|
469
|
+
</div>
|
|
470
|
+
</div>
|
|
471
|
+
<!-- bun tab -->
|
|
472
|
+
<div class="qs-pane" id="qs-bun">
|
|
473
|
+
<div class="qs-line">
|
|
474
|
+
<span class="qs-comment"># Install Zubo</span>
|
|
475
|
+
</div>
|
|
476
|
+
<div class="qs-line qs-cmd">
|
|
477
|
+
<span class="qs-prompt">$</span>
|
|
478
|
+
<span class="qs-text">bun add -g zubo</span>
|
|
479
|
+
<button class="copy-btn" data-copy="bun add -g zubo" aria-label="Copy command">
|
|
480
|
+
<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="9" y="9" width="13" height="13" rx="2" ry="2"/><path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"/></svg>
|
|
481
|
+
</button>
|
|
482
|
+
</div>
|
|
483
|
+
<div class="qs-line qs-spacer"></div>
|
|
484
|
+
<div class="qs-line">
|
|
485
|
+
<span class="qs-comment"># Meet your new agent</span>
|
|
486
|
+
</div>
|
|
487
|
+
<div class="qs-line qs-cmd">
|
|
488
|
+
<span class="qs-prompt">$</span>
|
|
489
|
+
<span class="qs-text">zubo setup</span>
|
|
490
|
+
<button class="copy-btn" data-copy="zubo setup" aria-label="Copy command">
|
|
491
|
+
<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="9" y="9" width="13" height="13" rx="2" ry="2"/><path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"/></svg>
|
|
492
|
+
</button>
|
|
493
|
+
</div>
|
|
494
|
+
</div>
|
|
495
|
+
<!-- npm tab -->
|
|
496
|
+
<div class="qs-pane" id="qs-npm">
|
|
497
|
+
<div class="qs-line">
|
|
498
|
+
<span class="qs-comment"># Install Zubo</span>
|
|
499
|
+
</div>
|
|
500
|
+
<div class="qs-line qs-cmd">
|
|
501
|
+
<span class="qs-prompt">$</span>
|
|
502
|
+
<span class="qs-text">npm i -g zubo</span>
|
|
503
|
+
<button class="copy-btn" data-copy="npm i -g zubo" aria-label="Copy command">
|
|
504
|
+
<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="9" y="9" width="13" height="13" rx="2" ry="2"/><path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"/></svg>
|
|
505
|
+
</button>
|
|
506
|
+
</div>
|
|
507
|
+
<div class="qs-line qs-spacer"></div>
|
|
508
|
+
<div class="qs-line">
|
|
509
|
+
<span class="qs-comment"># Meet your new agent</span>
|
|
510
|
+
</div>
|
|
511
|
+
<div class="qs-line qs-cmd">
|
|
512
|
+
<span class="qs-prompt">$</span>
|
|
513
|
+
<span class="qs-text">zubo setup</span>
|
|
514
|
+
<button class="copy-btn" data-copy="zubo setup" aria-label="Copy command">
|
|
515
|
+
<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="9" y="9" width="13" height="13" rx="2" ry="2"/><path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"/></svg>
|
|
516
|
+
</button>
|
|
517
|
+
</div>
|
|
518
|
+
</div>
|
|
519
|
+
</div>
|
|
520
|
+
</div>
|
|
521
|
+
|
|
522
|
+
<p class="qs-note reveal">Works on macOS & Linux. The installer sets up Bun and everything else for you.</p>
|
|
523
|
+
</div>
|
|
524
|
+
</section>
|
|
525
|
+
|
|
526
|
+
<!-- ========== OPEN SOURCE ========== -->
|
|
527
|
+
<section class="oss">
|
|
528
|
+
<div class="container">
|
|
529
|
+
<div class="oss-card reveal">
|
|
530
|
+
<div class="oss-badge">
|
|
531
|
+
<svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z"/></svg>
|
|
532
|
+
Open Source
|
|
533
|
+
</div>
|
|
534
|
+
<h2>Built in the open.<br>Owned by <span class="gradient-text">you</span>.</h2>
|
|
535
|
+
<p>Zubo is MIT-licensed and fully open source. No vendor lock-in. No surprise pricing. No data harvesting. Fork it, extend it, make it yours.</p>
|
|
536
|
+
<div class="oss-actions">
|
|
537
|
+
<a href="https://github.com/apwn/zubo" class="btn btn-primary btn-lg">
|
|
538
|
+
<svg width="18" height="18" viewBox="0 0 24 24" fill="currentColor"><path d="M12 0c-6.626 0-12 5.373-12 12 0 5.302 3.438 9.8 8.207 11.387.599.111.793-.261.793-.577v-2.234c-3.338.726-4.033-1.416-4.033-1.416-.546-1.387-1.333-1.756-1.333-1.756-1.089-.745.083-.729.083-.729 1.205.084 1.839 1.237 1.839 1.237 1.07 1.834 2.807 1.304 3.492.997.107-.775.418-1.305.762-1.604-2.665-.305-5.467-1.334-5.467-5.931 0-1.311.469-2.381 1.236-3.221-.124-.303-.535-1.524.117-3.176 0 0 1.008-.322 3.301 1.23.957-.266 1.983-.399 3.003-.404 1.02.005 2.047.138 3.006.404 2.291-1.552 3.297-1.23 3.297-1.23.653 1.653.242 2.874.118 3.176.77.84 1.235 1.911 1.235 3.221 0 4.609-2.807 5.624-5.479 5.921.43.372.823 1.102.823 2.222v3.293c0 .319.192.694.801.576 4.765-1.589 8.199-6.086 8.199-11.386 0-6.627-5.373-12-12-12z"/></svg>
|
|
539
|
+
View on GitHub
|
|
540
|
+
</a>
|
|
541
|
+
<a href="https://github.com/apwn/zubo/issues" class="btn btn-ghost btn-lg">Report an Issue</a>
|
|
542
|
+
</div>
|
|
543
|
+
</div>
|
|
544
|
+
</div>
|
|
545
|
+
</section>
|
|
546
|
+
|
|
547
|
+
<!-- ========== FINAL CTA ========== -->
|
|
548
|
+
<section class="final-cta">
|
|
549
|
+
<div class="final-cta-glow" aria-hidden="true">
|
|
550
|
+
<div class="orb orb-cta-1"></div>
|
|
551
|
+
<div class="orb orb-cta-2"></div>
|
|
552
|
+
</div>
|
|
553
|
+
<div class="container">
|
|
554
|
+
<div class="cta-content reveal">
|
|
555
|
+
<h2>Ready to build your <span class="gradient-text">perfect AI agent</span>?</h2>
|
|
556
|
+
<p>Get started in seconds. Free forever. No credit card needed.</p>
|
|
557
|
+
<div class="cta-actions">
|
|
558
|
+
<a href="#get-started" class="btn btn-primary btn-xl">
|
|
559
|
+
<svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M13 2L3 14h9l-1 8 10-12h-9l1-8z"/></svg>
|
|
560
|
+
Get Started Now
|
|
561
|
+
</a>
|
|
562
|
+
</div>
|
|
563
|
+
<p class="cta-subtext">
|
|
564
|
+
<svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polyline points="20 6 9 17 4 12"/></svg>
|
|
565
|
+
Free & open source
|
|
566
|
+
<svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polyline points="20 6 9 17 4 12"/></svg>
|
|
567
|
+
No cloud required
|
|
568
|
+
<svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polyline points="20 6 9 17 4 12"/></svg>
|
|
569
|
+
Works with any LLM
|
|
570
|
+
</p>
|
|
571
|
+
</div>
|
|
572
|
+
</div>
|
|
573
|
+
</section>
|
|
574
|
+
|
|
575
|
+
<!-- ========== FOOTER ========== -->
|
|
576
|
+
<footer class="footer">
|
|
577
|
+
<div class="container">
|
|
578
|
+
<div class="footer-inner">
|
|
579
|
+
<div class="footer-brand">
|
|
580
|
+
<a href="#" class="nav-logo">
|
|
581
|
+
<span class="logo-wordmark">zubo</span>
|
|
582
|
+
</a>
|
|
583
|
+
<p>Your AI agent that never forgets.</p>
|
|
584
|
+
</div>
|
|
585
|
+
<div class="footer-links">
|
|
586
|
+
<div class="footer-col">
|
|
587
|
+
<h5>Product</h5>
|
|
588
|
+
<a href="#features">Features</a>
|
|
589
|
+
<a href="#integrations">Integrations</a>
|
|
590
|
+
<a href="#channels">Channels</a>
|
|
591
|
+
<a href="#get-started">Get Started</a>
|
|
592
|
+
</div>
|
|
593
|
+
<div class="footer-col">
|
|
594
|
+
<h5>Resources</h5>
|
|
595
|
+
<a href="docs/index.html">Documentation</a>
|
|
596
|
+
<a href="skills.html">Community Skills</a>
|
|
597
|
+
<a href="https://github.com/apwn/zubo">GitHub</a>
|
|
598
|
+
<a href="https://github.com/apwn/zubo/issues">Issues</a>
|
|
599
|
+
</div>
|
|
600
|
+
<div class="footer-col">
|
|
601
|
+
<h5>Community</h5>
|
|
602
|
+
<a href="https://github.com/apwn/zubo/discussions">Discussions</a>
|
|
603
|
+
<a href="https://github.com/apwn/zubo/blob/main/CONTRIBUTING.md">Contributing</a>
|
|
604
|
+
</div>
|
|
605
|
+
</div>
|
|
606
|
+
</div>
|
|
607
|
+
<div class="footer-bottom">
|
|
608
|
+
<p>© 2026 Zubo. MIT License. Created in the jungle by <a href="https://x.com/thomaskanze" target="_blank" rel="noopener">@thomaskanze</a>.</p>
|
|
609
|
+
</div>
|
|
610
|
+
</div>
|
|
611
|
+
</footer>
|
|
612
|
+
|
|
613
|
+
<script src="script.js"></script>
|
|
614
|
+
<script type="application/ld+json">
|
|
615
|
+
{
|
|
616
|
+
"@context": "https://schema.org",
|
|
617
|
+
"@type": "SoftwareApplication",
|
|
618
|
+
"name": "Zubo",
|
|
619
|
+
"description": "A self-hosted AI agent with persistent semantic memory, multi-channel presence, 35+ smart tools, sub-agent delegation, and workflow automation. Open source, runs locally.",
|
|
620
|
+
"url": "https://zubo.bot",
|
|
621
|
+
"applicationCategory": "DeveloperApplication",
|
|
622
|
+
"operatingSystem": "macOS, Linux, Windows",
|
|
623
|
+
"license": "https://opensource.org/licenses/MIT",
|
|
624
|
+
"isAccessibleForFree": true,
|
|
625
|
+
"offers": {
|
|
626
|
+
"@type": "Offer",
|
|
627
|
+
"price": "0",
|
|
628
|
+
"priceCurrency": "USD"
|
|
629
|
+
},
|
|
630
|
+
"author": {
|
|
631
|
+
"@type": "Person",
|
|
632
|
+
"name": "Thomas Kanze",
|
|
633
|
+
"url": "https://x.com/thomaskanze"
|
|
634
|
+
}
|
|
635
|
+
}
|
|
636
|
+
</script>
|
|
637
|
+
</body>
|
|
638
|
+
</html>
|