pipulate 2.54__tar.gz → 2.55__tar.gz
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.
- {pipulate-2.54/pipulate.egg-info → pipulate-2.55}/PKG-INFO +12 -8
- {pipulate-2.54 → pipulate-2.55}/README.md +9 -5
- {pipulate-2.54 → pipulate-2.55}/__init__.py +5 -5
- {pipulate-2.54 → pipulate-2.55}/cli.py +2 -2
- {pipulate-2.54 → pipulate-2.55/pipulate.egg-info}/PKG-INFO +12 -8
- {pipulate-2.54 → pipulate-2.55}/pyproject.toml +3 -3
- {pipulate-2.54 → pipulate-2.55}/LICENSE +0 -0
- {pipulate-2.54 → pipulate-2.55}/MANIFEST.in +0 -0
- {pipulate-2.54 → pipulate-2.55}/apps/010_introduction.py +0 -0
- {pipulate-2.54 → pipulate-2.55}/apps/015_config.py +0 -0
- {pipulate-2.54 → pipulate-2.55}/apps/020_profiles.py +0 -0
- {pipulate-2.54 → pipulate-2.55}/apps/025_aspect.py +0 -0
- {pipulate-2.54 → pipulate-2.55}/apps/030_roles.py +0 -0
- {pipulate-2.54 → pipulate-2.55}/apps/040_hello_workflow.py +0 -0
- {pipulate-2.54 → pipulate-2.55}/apps/050_documentation.py +0 -0
- {pipulate-2.54 → pipulate-2.55}/apps/060_tasks.py +0 -0
- {pipulate-2.54 → pipulate-2.55}/apps/070_history.py +0 -0
- {pipulate-2.54 → pipulate-2.55}/apps/110_parameter_buster.py +0 -0
- {pipulate-2.54 → pipulate-2.55}/apps/120_link_graph.py +0 -0
- {pipulate-2.54 → pipulate-2.55}/apps/130_gap_analysis.py +0 -0
- {pipulate-2.54 → pipulate-2.55}/apps/200_workflow_genesis.py +0 -0
- {pipulate-2.54 → pipulate-2.55}/apps/210_widget_examples.py +0 -0
- {pipulate-2.54 → pipulate-2.55}/apps/220_roadmap.py +0 -0
- {pipulate-2.54 → pipulate-2.55}/apps/230_dev_assistant.py +0 -0
- {pipulate-2.54 → pipulate-2.55}/apps/240_simon_mcp.py +0 -0
- {pipulate-2.54 → pipulate-2.55}/apps/300_blank_placeholder.py +0 -0
- {pipulate-2.54 → pipulate-2.55}/apps/400_botify_trifecta.py +0 -0
- {pipulate-2.54 → pipulate-2.55}/apps/440_browser_automation.py +0 -0
- {pipulate-2.54 → pipulate-2.55}/apps/450_stream_simulator.py +0 -0
- {pipulate-2.54 → pipulate-2.55}/apps/510_text_field.py +0 -0
- {pipulate-2.54 → pipulate-2.55}/apps/520_text_area.py +0 -0
- {pipulate-2.54 → pipulate-2.55}/apps/530_dropdown.py +0 -0
- {pipulate-2.54 → pipulate-2.55}/apps/540_checkboxes.py +0 -0
- {pipulate-2.54 → pipulate-2.55}/apps/550_radios.py +0 -0
- {pipulate-2.54 → pipulate-2.55}/apps/560_range.py +0 -0
- {pipulate-2.54 → pipulate-2.55}/apps/570_switch.py +0 -0
- {pipulate-2.54 → pipulate-2.55}/apps/580_upload.py +0 -0
- {pipulate-2.54 → pipulate-2.55}/apps/610_markdown.py +0 -0
- {pipulate-2.54 → pipulate-2.55}/apps/620_mermaid.py +0 -0
- {pipulate-2.54 → pipulate-2.55}/apps/630_prism.py +0 -0
- {pipulate-2.54 → pipulate-2.55}/apps/640_javascript.py +0 -0
- {pipulate-2.54 → pipulate-2.55}/apps/710_pandas.py +0 -0
- {pipulate-2.54 → pipulate-2.55}/apps/720_rich.py +0 -0
- {pipulate-2.54 → pipulate-2.55}/apps/730_matplotlib.py +0 -0
- {pipulate-2.54 → pipulate-2.55}/apps/810_webbrowser.py +0 -0
- {pipulate-2.54 → pipulate-2.55}/apps/820_selenium.py +0 -0
- {pipulate-2.54 → pipulate-2.55}/apps/830_pico_slider.py +0 -0
- {pipulate-2.54 → pipulate-2.55}/config.py +0 -0
- {pipulate-2.54 → pipulate-2.55}/imports/__init__.py +0 -0
- {pipulate-2.54 → pipulate-2.55}/imports/ai_dictdb.py +0 -0
- {pipulate-2.54 → pipulate-2.55}/imports/ai_tool_discovery_simple_parser.py +0 -0
- {pipulate-2.54 → pipulate-2.55}/imports/append_only_conversation.py +0 -0
- {pipulate-2.54 → pipulate-2.55}/imports/ascii_displays.py +0 -0
- {pipulate-2.54 → pipulate-2.55}/imports/botify/__init__.py +0 -0
- {pipulate-2.54 → pipulate-2.55}/imports/botify/code_generators.py +0 -0
- {pipulate-2.54 → pipulate-2.55}/imports/botify/true_schema_discoverer.py +0 -0
- {pipulate-2.54 → pipulate-2.55}/imports/botify_code_generation.py +0 -0
- {pipulate-2.54 → pipulate-2.55}/imports/crud.py +0 -0
- {pipulate-2.54 → pipulate-2.55}/imports/database_safety_wrapper.py +0 -0
- {pipulate-2.54 → pipulate-2.55}/imports/dom_processing/__init__.py +0 -0
- {pipulate-2.54 → pipulate-2.55}/imports/dom_processing/ai_dom_beautifier.py +0 -0
- {pipulate-2.54 → pipulate-2.55}/imports/dom_processing/enhanced_dom_processor.py +0 -0
- {pipulate-2.54 → pipulate-2.55}/imports/durable_backup_system.py +0 -0
- {pipulate-2.54 → pipulate-2.55}/imports/mcp_orchestrator.py +0 -0
- {pipulate-2.54 → pipulate-2.55}/imports/server_logging.py +0 -0
- {pipulate-2.54 → pipulate-2.55}/imports/stream_orchestrator.py +0 -0
- {pipulate-2.54 → pipulate-2.55}/imports/voice_synthesis.py +0 -0
- {pipulate-2.54 → pipulate-2.55}/pipulate/__init__.py +0 -0
- {pipulate-2.54 → pipulate-2.55}/pipulate/core.py +0 -0
- {pipulate-2.54 → pipulate-2.55}/pipulate.egg-info/SOURCES.txt +0 -0
- {pipulate-2.54 → pipulate-2.55}/pipulate.egg-info/dependency_links.txt +0 -0
- {pipulate-2.54 → pipulate-2.55}/pipulate.egg-info/entry_points.txt +0 -0
- {pipulate-2.54 → pipulate-2.55}/pipulate.egg-info/requires.txt +0 -0
- {pipulate-2.54 → pipulate-2.55}/pipulate.egg-info/top_level.txt +0 -0
- {pipulate-2.54 → pipulate-2.55}/server.py +0 -0
- {pipulate-2.54 → pipulate-2.55}/setup.cfg +0 -0
- {pipulate-2.54 → pipulate-2.55}/tests/test_apply_airlock.py +0 -0
- {pipulate-2.54 → pipulate-2.55}/tests/test_mck_rep2.py +0 -0
- {pipulate-2.54 → pipulate-2.55}/tools/__init__.py +0 -0
- {pipulate-2.54 → pipulate-2.55}/tools/advanced_automation_tools.py +0 -0
- {pipulate-2.54 → pipulate-2.55}/tools/botify_tools.py +0 -0
- {pipulate-2.54 → pipulate-2.55}/tools/connector_tools.py +0 -0
- {pipulate-2.54 → pipulate-2.55}/tools/conversation_tools.py +0 -0
- {pipulate-2.54 → pipulate-2.55}/tools/dom_tools.py +0 -0
- {pipulate-2.54 → pipulate-2.55}/tools/keychain_tools.py +0 -0
- {pipulate-2.54 → pipulate-2.55}/tools/llm_optics.py +0 -0
- {pipulate-2.54 → pipulate-2.55}/tools/mcp_tools.py +0 -0
- {pipulate-2.54 → pipulate-2.55}/tools/scraper_tools.py +0 -0
- {pipulate-2.54 → pipulate-2.55}/tools/system_tools.py +0 -0
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: pipulate
|
|
3
|
-
Version: 2.
|
|
4
|
-
Summary:
|
|
3
|
+
Version: 2.55
|
|
4
|
+
Summary: The context compiler that helps you prompt well — local-first, Nix-reproducible, replayable. The successor to AI SEO software.
|
|
5
5
|
Author-email: Mike Levin <pipulate@gmail.com>
|
|
6
6
|
License-Expression: AGPL-3.0-or-later
|
|
7
7
|
Project-URL: Homepage, https://github.com/miklevin/pipulate/
|
|
8
8
|
Project-URL: Bug Tracker, https://github.com/miklevin/pipulate/issues
|
|
9
9
|
Project-URL: Documentation, https://pipulate.com/guide/
|
|
10
|
-
Keywords: ai-readiness,agentic-web,seo,ai,llm,automation,local-first,nix,fasthtml,htmx,agentic,content-negotiation
|
|
10
|
+
Keywords: context-compiler,reproducibility,ai-readiness,agentic-web,seo,ai,llm,automation,local-first,nix,fasthtml,htmx,agentic,content-negotiation
|
|
11
11
|
Classifier: Development Status :: 5 - Production/Stable
|
|
12
12
|
Classifier: Programming Language :: Python :: 3
|
|
13
13
|
Classifier: Operating System :: OS Independent
|
|
@@ -59,7 +59,7 @@ Dynamic: license-file
|
|
|
59
59
|
2. Hi, Auditor! What you're looking for is AUDIT.md ( https://pipulate.com/AUDIT.md )
|
|
60
60
|
3. And context AI_CONTEXT.md ( https://pipulate.com/AI_CONTEXT.md )
|
|
61
61
|
|
|
62
|
-
# Pipulate:
|
|
62
|
+
# Pipulate: The Context Compiler That Helps You Prompt Well
|
|
63
63
|
|
|
64
64
|
```text
|
|
65
65
|
( Like a canary you say? )
|
|
@@ -71,6 +71,10 @@ Dynamic: license-file
|
|
|
71
71
|
> Smokin gun drift now in token |__>-\_>_> \____/ 🥕🥕🥕
|
|
72
72
|
```
|
|
73
73
|
|
|
74
|
+
## If you can't reproduce it, it didn't happen
|
|
75
|
+
|
|
76
|
+
You're about to put your name on something an AI made, and you can't say what it did to make it. **Pipulate** is a free, open-source **context compiler**: every file the AI reads and the output of every command run on its behalf, stacked into one file you can paste into any model, keep, and replay with plain text commands. What it can't see, a vendor's server-side tool calls, it leaves out on purpose, because a step you can't rerun is a step nobody checked. Local-first, Nix-reproducible, and yours to delete. **Prompt well.**
|
|
77
|
+
|
|
74
78
|
## Quick Start: Be Running in 5 Minutes
|
|
75
79
|
|
|
76
80
|
**Want to skip the philosophy and just see what this does? Paste this into your terminal:**
|
|
@@ -88,7 +92,7 @@ cd ~/pipulate && nix develop
|
|
|
88
92
|
|
|
89
93
|
**What you get:** A local web app at `http://localhost:5001` with step-by-step workflows, integrated AI chat, and a JupyterLab instance at `http://localhost:8888`. No cloud required.
|
|
90
94
|
|
|
91
|
-
**Success looks like:** A JupyterLab
|
|
95
|
+
**Success looks like:** A one-line environment reading, then a three-door menu. Press `1` to start JupyterLab and the app server (`2` gives you a bare shell with nothing running; `3` starts both but opens the Pipulate app tab instead). The JupyterLab tab opens in your browser; run the Onboarding notebook top-to-bottom to unlock the Pipulate app (it opens automatically on future launches).
|
|
92
96
|
|
|
93
97
|
These few commands:
|
|
94
98
|
- ✅ Updates to the latest version automatically
|
|
@@ -607,9 +611,9 @@ cd ~/TestProject
|
|
|
607
611
|
nix develop
|
|
608
612
|
```
|
|
609
613
|
|
|
610
|
-
|
|
614
|
+
Press `1` at the three-door menu, wait for the JupyterLab tab to open, then run the Onboarding notebook to unlock the Pipulate app.
|
|
611
615
|
|
|
612
|
-
**Automating past the boot menu:** `nix develop` ends at a
|
|
616
|
+
**Automating past the boot menu:** `nix develop` ends at a three-door prompt — start with the JupyterLab tab, drop to the shell, or start with the Pipulate tab in front. It fails open, so anything without a terminal (CI, a provisioning script, an SSH session with no tty) starts the app and never sees the prompt. Two environment variables cover the cases that do:
|
|
613
617
|
|
|
614
618
|
| Variable | Effect |
|
|
615
619
|
|----------|--------|
|
|
@@ -1747,6 +1751,6 @@ This project is licensed under the MIT License. See the [LICENSE](https://github
|
|
|
1747
1751
|
|
|
1748
1752
|
**Background Articles:** <a href="https://mikelev.in/">Mike Levin, AI SEO in NYC</a>
|
|
1749
1753
|
|
|
1750
|
-
**Enhanced Documentation:** <a href="https://pipulate.com/">Pipulate:
|
|
1754
|
+
**Enhanced Documentation:** <a href="https://pipulate.com/">Pipulate: The Context Compiler That Helps You Prompt Well</a>
|
|
1751
1755
|
|
|
1752
1756
|
**On GitHub:** <a href="https://github.com/miklevin/pipulate">Pipulate on GitHub</a>
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
2. Hi, Auditor! What you're looking for is AUDIT.md ( https://pipulate.com/AUDIT.md )
|
|
3
3
|
3. And context AI_CONTEXT.md ( https://pipulate.com/AI_CONTEXT.md )
|
|
4
4
|
|
|
5
|
-
# Pipulate:
|
|
5
|
+
# Pipulate: The Context Compiler That Helps You Prompt Well
|
|
6
6
|
|
|
7
7
|
```text
|
|
8
8
|
( Like a canary you say? )
|
|
@@ -14,6 +14,10 @@
|
|
|
14
14
|
> Smokin gun drift now in token |__>-\_>_> \____/ 🥕🥕🥕
|
|
15
15
|
```
|
|
16
16
|
|
|
17
|
+
## If you can't reproduce it, it didn't happen
|
|
18
|
+
|
|
19
|
+
You're about to put your name on something an AI made, and you can't say what it did to make it. **Pipulate** is a free, open-source **context compiler**: every file the AI reads and the output of every command run on its behalf, stacked into one file you can paste into any model, keep, and replay with plain text commands. What it can't see, a vendor's server-side tool calls, it leaves out on purpose, because a step you can't rerun is a step nobody checked. Local-first, Nix-reproducible, and yours to delete. **Prompt well.**
|
|
20
|
+
|
|
17
21
|
## Quick Start: Be Running in 5 Minutes
|
|
18
22
|
|
|
19
23
|
**Want to skip the philosophy and just see what this does? Paste this into your terminal:**
|
|
@@ -31,7 +35,7 @@ cd ~/pipulate && nix develop
|
|
|
31
35
|
|
|
32
36
|
**What you get:** A local web app at `http://localhost:5001` with step-by-step workflows, integrated AI chat, and a JupyterLab instance at `http://localhost:8888`. No cloud required.
|
|
33
37
|
|
|
34
|
-
**Success looks like:** A JupyterLab
|
|
38
|
+
**Success looks like:** A one-line environment reading, then a three-door menu. Press `1` to start JupyterLab and the app server (`2` gives you a bare shell with nothing running; `3` starts both but opens the Pipulate app tab instead). The JupyterLab tab opens in your browser; run the Onboarding notebook top-to-bottom to unlock the Pipulate app (it opens automatically on future launches).
|
|
35
39
|
|
|
36
40
|
These few commands:
|
|
37
41
|
- ✅ Updates to the latest version automatically
|
|
@@ -550,9 +554,9 @@ cd ~/TestProject
|
|
|
550
554
|
nix develop
|
|
551
555
|
```
|
|
552
556
|
|
|
553
|
-
|
|
557
|
+
Press `1` at the three-door menu, wait for the JupyterLab tab to open, then run the Onboarding notebook to unlock the Pipulate app.
|
|
554
558
|
|
|
555
|
-
**Automating past the boot menu:** `nix develop` ends at a
|
|
559
|
+
**Automating past the boot menu:** `nix develop` ends at a three-door prompt — start with the JupyterLab tab, drop to the shell, or start with the Pipulate tab in front. It fails open, so anything without a terminal (CI, a provisioning script, an SSH session with no tty) starts the app and never sees the prompt. Two environment variables cover the cases that do:
|
|
556
560
|
|
|
557
561
|
| Variable | Effect |
|
|
558
562
|
|----------|--------|
|
|
@@ -1690,6 +1694,6 @@ This project is licensed under the MIT License. See the [LICENSE](https://github
|
|
|
1690
1694
|
|
|
1691
1695
|
**Background Articles:** <a href="https://mikelev.in/">Mike Levin, AI SEO in NYC</a>
|
|
1692
1696
|
|
|
1693
|
-
**Enhanced Documentation:** <a href="https://pipulate.com/">Pipulate:
|
|
1697
|
+
**Enhanced Documentation:** <a href="https://pipulate.com/">Pipulate: The Context Compiler That Helps You Prompt Well</a>
|
|
1694
1698
|
|
|
1695
1699
|
**On GitHub:** <a href="https://github.com/miklevin/pipulate">Pipulate on GitHub</a>
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
"""
|
|
2
|
-
Pipulate: A hand-cranked, local-first
|
|
2
|
+
Pipulate: A hand-cranked, local-first context compiler — the successor to AI SEO software.
|
|
3
3
|
|
|
4
4
|
Your data. Your AI. Your machine. Your control.
|
|
5
5
|
|
|
@@ -12,7 +12,7 @@ Usage:
|
|
|
12
12
|
pipulate
|
|
13
13
|
"""
|
|
14
14
|
|
|
15
|
-
__version__ = "2.
|
|
15
|
+
__version__ = "2.55"
|
|
16
16
|
# APOSTROPHES RESTORED (2026-08-04). They were stripped as a workaround for
|
|
17
17
|
# flake.nix's descMatch regex, whose character class excluded ' from the
|
|
18
18
|
# CAPTURE and truncated the banner to "(So)". That regex was fixed in the same
|
|
@@ -23,15 +23,15 @@ __version__ = "2.54"
|
|
|
23
23
|
# is not a property of the system; the regex is. Blast radius is one banner:
|
|
24
24
|
# nothing but flake.nix reads this name -- version_sync.py syncs __version__
|
|
25
25
|
# and __description__, never this. So'wI' chu' -- "engage the cloaking device."
|
|
26
|
-
__version_description__ = "
|
|
26
|
+
__version_description__ = "Messaging Pivot"
|
|
27
27
|
# SPDX expression, single source of truth, synced into pyproject.toml by
|
|
28
28
|
# scripts/release/version_sync.py. "-or-later" (not bare AGPL-3.0, which is
|
|
29
29
|
# deprecated SPDX) because the header below grants "any later version".
|
|
30
30
|
__license__ = "AGPL-3.0-or-later"
|
|
31
31
|
__email__ = "pipulate@gmail.com"
|
|
32
|
-
__description__ = "
|
|
32
|
+
__description__ = "The context compiler that helps you prompt well — local-first, Nix-reproducible, replayable. The successor to AI SEO software."
|
|
33
33
|
|
|
34
|
-
# Pipulate: A hand-cranked, local-first
|
|
34
|
+
# Pipulate: A hand-cranked, local-first context compiler — the successor to AI SEO software.
|
|
35
35
|
# Copyright (C) 2026 Michael Jay Levin
|
|
36
36
|
#
|
|
37
37
|
# This program is free software: you can redistribute it and/or modify
|
|
@@ -478,7 +478,7 @@ def main():
|
|
|
478
478
|
# --- END NEW LOGIC ---
|
|
479
479
|
|
|
480
480
|
parser = argparse.ArgumentParser(
|
|
481
|
-
description="Pipulate CLI - The
|
|
481
|
+
description="Pipulate CLI - The Context Compiler That Helps You Prompt Well.\n\n"
|
|
482
482
|
"🎯 THE GOLDEN PATH FOR AI ASSISTANTS:\n"
|
|
483
483
|
" 1. .venv/bin/python cli.py mcp-discover # Discover your core abilities\n"
|
|
484
484
|
" 2. .venv/bin/python cli.py call pipeline_state_inspector # Read live system state\n"
|
|
@@ -530,7 +530,7 @@ def main():
|
|
|
530
530
|
args = parser.parse_args()
|
|
531
531
|
|
|
532
532
|
if not getattr(args, 'raw', False):
|
|
533
|
-
console.print(Panel("🚀 [bold cyan]Pipulate :: The
|
|
533
|
+
console.print(Panel("🚀 [bold cyan]Pipulate :: The Context Compiler That Helps You Prompt Well[/bold cyan] 🚀", border_style="cyan"))
|
|
534
534
|
|
|
535
535
|
if args.command == 'install':
|
|
536
536
|
if not check_nix_installed():
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: pipulate
|
|
3
|
-
Version: 2.
|
|
4
|
-
Summary:
|
|
3
|
+
Version: 2.55
|
|
4
|
+
Summary: The context compiler that helps you prompt well — local-first, Nix-reproducible, replayable. The successor to AI SEO software.
|
|
5
5
|
Author-email: Mike Levin <pipulate@gmail.com>
|
|
6
6
|
License-Expression: AGPL-3.0-or-later
|
|
7
7
|
Project-URL: Homepage, https://github.com/miklevin/pipulate/
|
|
8
8
|
Project-URL: Bug Tracker, https://github.com/miklevin/pipulate/issues
|
|
9
9
|
Project-URL: Documentation, https://pipulate.com/guide/
|
|
10
|
-
Keywords: ai-readiness,agentic-web,seo,ai,llm,automation,local-first,nix,fasthtml,htmx,agentic,content-negotiation
|
|
10
|
+
Keywords: context-compiler,reproducibility,ai-readiness,agentic-web,seo,ai,llm,automation,local-first,nix,fasthtml,htmx,agentic,content-negotiation
|
|
11
11
|
Classifier: Development Status :: 5 - Production/Stable
|
|
12
12
|
Classifier: Programming Language :: Python :: 3
|
|
13
13
|
Classifier: Operating System :: OS Independent
|
|
@@ -59,7 +59,7 @@ Dynamic: license-file
|
|
|
59
59
|
2. Hi, Auditor! What you're looking for is AUDIT.md ( https://pipulate.com/AUDIT.md )
|
|
60
60
|
3. And context AI_CONTEXT.md ( https://pipulate.com/AI_CONTEXT.md )
|
|
61
61
|
|
|
62
|
-
# Pipulate:
|
|
62
|
+
# Pipulate: The Context Compiler That Helps You Prompt Well
|
|
63
63
|
|
|
64
64
|
```text
|
|
65
65
|
( Like a canary you say? )
|
|
@@ -71,6 +71,10 @@ Dynamic: license-file
|
|
|
71
71
|
> Smokin gun drift now in token |__>-\_>_> \____/ 🥕🥕🥕
|
|
72
72
|
```
|
|
73
73
|
|
|
74
|
+
## If you can't reproduce it, it didn't happen
|
|
75
|
+
|
|
76
|
+
You're about to put your name on something an AI made, and you can't say what it did to make it. **Pipulate** is a free, open-source **context compiler**: every file the AI reads and the output of every command run on its behalf, stacked into one file you can paste into any model, keep, and replay with plain text commands. What it can't see, a vendor's server-side tool calls, it leaves out on purpose, because a step you can't rerun is a step nobody checked. Local-first, Nix-reproducible, and yours to delete. **Prompt well.**
|
|
77
|
+
|
|
74
78
|
## Quick Start: Be Running in 5 Minutes
|
|
75
79
|
|
|
76
80
|
**Want to skip the philosophy and just see what this does? Paste this into your terminal:**
|
|
@@ -88,7 +92,7 @@ cd ~/pipulate && nix develop
|
|
|
88
92
|
|
|
89
93
|
**What you get:** A local web app at `http://localhost:5001` with step-by-step workflows, integrated AI chat, and a JupyterLab instance at `http://localhost:8888`. No cloud required.
|
|
90
94
|
|
|
91
|
-
**Success looks like:** A JupyterLab
|
|
95
|
+
**Success looks like:** A one-line environment reading, then a three-door menu. Press `1` to start JupyterLab and the app server (`2` gives you a bare shell with nothing running; `3` starts both but opens the Pipulate app tab instead). The JupyterLab tab opens in your browser; run the Onboarding notebook top-to-bottom to unlock the Pipulate app (it opens automatically on future launches).
|
|
92
96
|
|
|
93
97
|
These few commands:
|
|
94
98
|
- ✅ Updates to the latest version automatically
|
|
@@ -607,9 +611,9 @@ cd ~/TestProject
|
|
|
607
611
|
nix develop
|
|
608
612
|
```
|
|
609
613
|
|
|
610
|
-
|
|
614
|
+
Press `1` at the three-door menu, wait for the JupyterLab tab to open, then run the Onboarding notebook to unlock the Pipulate app.
|
|
611
615
|
|
|
612
|
-
**Automating past the boot menu:** `nix develop` ends at a
|
|
616
|
+
**Automating past the boot menu:** `nix develop` ends at a three-door prompt — start with the JupyterLab tab, drop to the shell, or start with the Pipulate tab in front. It fails open, so anything without a terminal (CI, a provisioning script, an SSH session with no tty) starts the app and never sees the prompt. Two environment variables cover the cases that do:
|
|
613
617
|
|
|
614
618
|
| Variable | Effect |
|
|
615
619
|
|----------|--------|
|
|
@@ -1747,6 +1751,6 @@ This project is licensed under the MIT License. See the [LICENSE](https://github
|
|
|
1747
1751
|
|
|
1748
1752
|
**Background Articles:** <a href="https://mikelev.in/">Mike Levin, AI SEO in NYC</a>
|
|
1749
1753
|
|
|
1750
|
-
**Enhanced Documentation:** <a href="https://pipulate.com/">Pipulate:
|
|
1754
|
+
**Enhanced Documentation:** <a href="https://pipulate.com/">Pipulate: The Context Compiler That Helps You Prompt Well</a>
|
|
1751
1755
|
|
|
1752
1756
|
**On GitHub:** <a href="https://github.com/miklevin/pipulate">Pipulate on GitHub</a>
|
|
@@ -5,11 +5,11 @@ build-backend = "setuptools.build_meta"
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "pipulate"
|
|
7
7
|
# VERSION NOTE: Synced from pipulate/__init__.py.__version__ via python version_sync.py
|
|
8
|
-
version = "2.
|
|
8
|
+
version = "2.55"
|
|
9
9
|
authors = [
|
|
10
10
|
{ name="Mike Levin", email="pipulate@gmail.com" },
|
|
11
11
|
]
|
|
12
|
-
description = "
|
|
12
|
+
description = "The context compiler that helps you prompt well — local-first, Nix-reproducible, replayable. The successor to AI SEO software."
|
|
13
13
|
readme = "README.md"
|
|
14
14
|
license = "AGPL-3.0-or-later"
|
|
15
15
|
requires-python = ">=3.8"
|
|
@@ -21,7 +21,7 @@ classifiers = [
|
|
|
21
21
|
"Topic :: Internet :: WWW/HTTP :: Indexing/Search",
|
|
22
22
|
"Topic :: Software Development :: Libraries :: Application Frameworks",
|
|
23
23
|
]
|
|
24
|
-
keywords = ["ai-readiness", "agentic-web", "seo", "ai", "llm", "automation", "local-first", "nix", "fasthtml", "htmx", "agentic", "content-negotiation"]
|
|
24
|
+
keywords = ["context-compiler", "reproducibility", "ai-readiness", "agentic-web", "seo", "ai", "llm", "automation", "local-first", "nix", "fasthtml", "htmx", "agentic", "content-negotiation"]
|
|
25
25
|
dependencies = [
|
|
26
26
|
"blinker==1.6.2",
|
|
27
27
|
"apsw==3.50.3.0",
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|