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.
Files changed (89) hide show
  1. {pipulate-2.54/pipulate.egg-info → pipulate-2.55}/PKG-INFO +12 -8
  2. {pipulate-2.54 → pipulate-2.55}/README.md +9 -5
  3. {pipulate-2.54 → pipulate-2.55}/__init__.py +5 -5
  4. {pipulate-2.54 → pipulate-2.55}/cli.py +2 -2
  5. {pipulate-2.54 → pipulate-2.55/pipulate.egg-info}/PKG-INFO +12 -8
  6. {pipulate-2.54 → pipulate-2.55}/pyproject.toml +3 -3
  7. {pipulate-2.54 → pipulate-2.55}/LICENSE +0 -0
  8. {pipulate-2.54 → pipulate-2.55}/MANIFEST.in +0 -0
  9. {pipulate-2.54 → pipulate-2.55}/apps/010_introduction.py +0 -0
  10. {pipulate-2.54 → pipulate-2.55}/apps/015_config.py +0 -0
  11. {pipulate-2.54 → pipulate-2.55}/apps/020_profiles.py +0 -0
  12. {pipulate-2.54 → pipulate-2.55}/apps/025_aspect.py +0 -0
  13. {pipulate-2.54 → pipulate-2.55}/apps/030_roles.py +0 -0
  14. {pipulate-2.54 → pipulate-2.55}/apps/040_hello_workflow.py +0 -0
  15. {pipulate-2.54 → pipulate-2.55}/apps/050_documentation.py +0 -0
  16. {pipulate-2.54 → pipulate-2.55}/apps/060_tasks.py +0 -0
  17. {pipulate-2.54 → pipulate-2.55}/apps/070_history.py +0 -0
  18. {pipulate-2.54 → pipulate-2.55}/apps/110_parameter_buster.py +0 -0
  19. {pipulate-2.54 → pipulate-2.55}/apps/120_link_graph.py +0 -0
  20. {pipulate-2.54 → pipulate-2.55}/apps/130_gap_analysis.py +0 -0
  21. {pipulate-2.54 → pipulate-2.55}/apps/200_workflow_genesis.py +0 -0
  22. {pipulate-2.54 → pipulate-2.55}/apps/210_widget_examples.py +0 -0
  23. {pipulate-2.54 → pipulate-2.55}/apps/220_roadmap.py +0 -0
  24. {pipulate-2.54 → pipulate-2.55}/apps/230_dev_assistant.py +0 -0
  25. {pipulate-2.54 → pipulate-2.55}/apps/240_simon_mcp.py +0 -0
  26. {pipulate-2.54 → pipulate-2.55}/apps/300_blank_placeholder.py +0 -0
  27. {pipulate-2.54 → pipulate-2.55}/apps/400_botify_trifecta.py +0 -0
  28. {pipulate-2.54 → pipulate-2.55}/apps/440_browser_automation.py +0 -0
  29. {pipulate-2.54 → pipulate-2.55}/apps/450_stream_simulator.py +0 -0
  30. {pipulate-2.54 → pipulate-2.55}/apps/510_text_field.py +0 -0
  31. {pipulate-2.54 → pipulate-2.55}/apps/520_text_area.py +0 -0
  32. {pipulate-2.54 → pipulate-2.55}/apps/530_dropdown.py +0 -0
  33. {pipulate-2.54 → pipulate-2.55}/apps/540_checkboxes.py +0 -0
  34. {pipulate-2.54 → pipulate-2.55}/apps/550_radios.py +0 -0
  35. {pipulate-2.54 → pipulate-2.55}/apps/560_range.py +0 -0
  36. {pipulate-2.54 → pipulate-2.55}/apps/570_switch.py +0 -0
  37. {pipulate-2.54 → pipulate-2.55}/apps/580_upload.py +0 -0
  38. {pipulate-2.54 → pipulate-2.55}/apps/610_markdown.py +0 -0
  39. {pipulate-2.54 → pipulate-2.55}/apps/620_mermaid.py +0 -0
  40. {pipulate-2.54 → pipulate-2.55}/apps/630_prism.py +0 -0
  41. {pipulate-2.54 → pipulate-2.55}/apps/640_javascript.py +0 -0
  42. {pipulate-2.54 → pipulate-2.55}/apps/710_pandas.py +0 -0
  43. {pipulate-2.54 → pipulate-2.55}/apps/720_rich.py +0 -0
  44. {pipulate-2.54 → pipulate-2.55}/apps/730_matplotlib.py +0 -0
  45. {pipulate-2.54 → pipulate-2.55}/apps/810_webbrowser.py +0 -0
  46. {pipulate-2.54 → pipulate-2.55}/apps/820_selenium.py +0 -0
  47. {pipulate-2.54 → pipulate-2.55}/apps/830_pico_slider.py +0 -0
  48. {pipulate-2.54 → pipulate-2.55}/config.py +0 -0
  49. {pipulate-2.54 → pipulate-2.55}/imports/__init__.py +0 -0
  50. {pipulate-2.54 → pipulate-2.55}/imports/ai_dictdb.py +0 -0
  51. {pipulate-2.54 → pipulate-2.55}/imports/ai_tool_discovery_simple_parser.py +0 -0
  52. {pipulate-2.54 → pipulate-2.55}/imports/append_only_conversation.py +0 -0
  53. {pipulate-2.54 → pipulate-2.55}/imports/ascii_displays.py +0 -0
  54. {pipulate-2.54 → pipulate-2.55}/imports/botify/__init__.py +0 -0
  55. {pipulate-2.54 → pipulate-2.55}/imports/botify/code_generators.py +0 -0
  56. {pipulate-2.54 → pipulate-2.55}/imports/botify/true_schema_discoverer.py +0 -0
  57. {pipulate-2.54 → pipulate-2.55}/imports/botify_code_generation.py +0 -0
  58. {pipulate-2.54 → pipulate-2.55}/imports/crud.py +0 -0
  59. {pipulate-2.54 → pipulate-2.55}/imports/database_safety_wrapper.py +0 -0
  60. {pipulate-2.54 → pipulate-2.55}/imports/dom_processing/__init__.py +0 -0
  61. {pipulate-2.54 → pipulate-2.55}/imports/dom_processing/ai_dom_beautifier.py +0 -0
  62. {pipulate-2.54 → pipulate-2.55}/imports/dom_processing/enhanced_dom_processor.py +0 -0
  63. {pipulate-2.54 → pipulate-2.55}/imports/durable_backup_system.py +0 -0
  64. {pipulate-2.54 → pipulate-2.55}/imports/mcp_orchestrator.py +0 -0
  65. {pipulate-2.54 → pipulate-2.55}/imports/server_logging.py +0 -0
  66. {pipulate-2.54 → pipulate-2.55}/imports/stream_orchestrator.py +0 -0
  67. {pipulate-2.54 → pipulate-2.55}/imports/voice_synthesis.py +0 -0
  68. {pipulate-2.54 → pipulate-2.55}/pipulate/__init__.py +0 -0
  69. {pipulate-2.54 → pipulate-2.55}/pipulate/core.py +0 -0
  70. {pipulate-2.54 → pipulate-2.55}/pipulate.egg-info/SOURCES.txt +0 -0
  71. {pipulate-2.54 → pipulate-2.55}/pipulate.egg-info/dependency_links.txt +0 -0
  72. {pipulate-2.54 → pipulate-2.55}/pipulate.egg-info/entry_points.txt +0 -0
  73. {pipulate-2.54 → pipulate-2.55}/pipulate.egg-info/requires.txt +0 -0
  74. {pipulate-2.54 → pipulate-2.55}/pipulate.egg-info/top_level.txt +0 -0
  75. {pipulate-2.54 → pipulate-2.55}/server.py +0 -0
  76. {pipulate-2.54 → pipulate-2.55}/setup.cfg +0 -0
  77. {pipulate-2.54 → pipulate-2.55}/tests/test_apply_airlock.py +0 -0
  78. {pipulate-2.54 → pipulate-2.55}/tests/test_mck_rep2.py +0 -0
  79. {pipulate-2.54 → pipulate-2.55}/tools/__init__.py +0 -0
  80. {pipulate-2.54 → pipulate-2.55}/tools/advanced_automation_tools.py +0 -0
  81. {pipulate-2.54 → pipulate-2.55}/tools/botify_tools.py +0 -0
  82. {pipulate-2.54 → pipulate-2.55}/tools/connector_tools.py +0 -0
  83. {pipulate-2.54 → pipulate-2.55}/tools/conversation_tools.py +0 -0
  84. {pipulate-2.54 → pipulate-2.55}/tools/dom_tools.py +0 -0
  85. {pipulate-2.54 → pipulate-2.55}/tools/keychain_tools.py +0 -0
  86. {pipulate-2.54 → pipulate-2.55}/tools/llm_optics.py +0 -0
  87. {pipulate-2.54 → pipulate-2.55}/tools/mcp_tools.py +0 -0
  88. {pipulate-2.54 → pipulate-2.55}/tools/scraper_tools.py +0 -0
  89. {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.54
4
- Summary: AI-readiness for the agentic web — local-first, Nix-reproducible workflows. The successor to AI SEO software.
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: Local First AI-Readiness for the Agentic Web
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 Notebook tab opens in your default browser and Onboards you to the FastHTML web app.
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
- Wait for the JupyterLab tab to auto-open, then run the Onboarding notebook to unlock the Pipulate app.
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 two-door prompt — start Pipulate, or drop to the shell. 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:
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: AI-Readiness for the Agentic Web</a>
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: Local First AI-Readiness for the Agentic Web
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 Notebook tab opens in your default browser and Onboards you to the FastHTML web app.
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
- Wait for the JupyterLab tab to auto-open, then run the Onboarding notebook to unlock the Pipulate app.
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 two-door prompt — start Pipulate, or drop to the shell. 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:
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: AI-Readiness for the Agentic Web</a>
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 AI-readiness software framework — the successor to AI SEO software.
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.54"
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__ = "Futureproof Options"
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__ = "AI-readiness for the agentic web — local-first, Nix-reproducible workflows. The successor to AI SEO software."
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 AI-readiness software framework — the successor to AI SEO software.
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 Local-First AI-Readiness & Automation Workshop.\n\n"
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 Local-First AI-Readiness & Automation Workshop[/bold cyan] 🚀", border_style="cyan"))
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.54
4
- Summary: AI-readiness for the agentic web — local-first, Nix-reproducible workflows. The successor to AI SEO software.
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: Local First AI-Readiness for the Agentic Web
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 Notebook tab opens in your default browser and Onboards you to the FastHTML web app.
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
- Wait for the JupyterLab tab to auto-open, then run the Onboarding notebook to unlock the Pipulate app.
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 two-door prompt — start Pipulate, or drop to the shell. 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:
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: AI-Readiness for the Agentic Web</a>
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.54"
8
+ version = "2.55"
9
9
  authors = [
10
10
  { name="Mike Levin", email="pipulate@gmail.com" },
11
11
  ]
12
- description = "AI-readiness for the agentic web — local-first, Nix-reproducible workflows. The successor to AI SEO software."
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