synthos 0.2.0 → 0.3.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/README.md +50 -29
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,12 +1,28 @@
|
|
|
1
1
|
# SynthOS: An AI Powered Interactive Shell Experience
|
|
2
2
|
|
|
3
|
-
[SynthOS](https://github.com/Stevenic/synthos) is an interactive shell experience powered by generative AI, featuring a user interface that is entirely AI-generated. Similar to a wiki, it organizes everything into pages, but with a twist: these pages are self-modifying and can transform into anything. Each page includes a chat panel and a content viewer. Entering a command into the chat panel prompts the configured Large Language Model (LLM) to completely rewrite the current page. The page can morph into anything—from providing answers to questions to becoming a tool that assists you with complex tasks.
|
|
3
|
+
[SynthOS](https://github.com/Stevenic/synthos) is an interactive shell experience powered by generative AI, featuring a user interface that is entirely AI-generated. Similar to a wiki, it organizes everything into pages, but with a twist: these pages are self-modifying and can transform into anything. Each page includes a chat panel and a content viewer. Entering a command into the chat panel prompts the configured Large Language Model (LLM) to completely rewrite the current page. The page can morph into anything—from providing answers to questions to becoming a tool that assists you with complex tasks. It supports the latest language models like Claude-Opus-4.5 and GPT-5.2.
|
|
4
4
|
|
|
5
5
|
SynthOS has access to tools in the form of APIs and scripts. Built-in APIs enable SynthOS to read and write objects to local storage or make additional generative AI calls. Scripts are user-defined extensions that allow SynthOS to perform local actions on your machine. You can add scripts that let SynthOS start a build, make a Git commit, or run a cURL command.
|
|
6
6
|
|
|
7
|
+
You can create anything you want from animations:
|
|
8
|
+
|
|
9
|
+
<img width="1901" height="988" alt="image" src="https://github.com/user-attachments/assets/8da6dedd-e568-48d3-b2ac-106a8ab50117" />
|
|
10
|
+
|
|
11
|
+
To games:
|
|
12
|
+
|
|
13
|
+
<img width="1888" height="979" alt="image" src="https://github.com/user-attachments/assets/496b0be0-39f5-4bbf-9a40-2d6877f8a6cc" />
|
|
14
|
+
|
|
15
|
+
To developer tools:
|
|
16
|
+
|
|
17
|
+
<img width="1891" height="987" alt="image" src="https://github.com/user-attachments/assets/951053f0-f025-45d3-8799-7bcd33942b80" />
|
|
18
|
+
|
|
19
|
+
SynthOS is like a wiki for apps. You can save the apps you create to your pages directory;
|
|
20
|
+
|
|
21
|
+
<img width="1888" height="976" alt="image" src="https://github.com/user-attachments/assets/5c727cf5-30de-4d08-80ee-54eed7b64d20" />
|
|
22
|
+
|
|
7
23
|
## Installing SynthOS
|
|
8
24
|
|
|
9
|
-
To get started using SynthOS you'll need to first install a recent version of [Node.js](https://nodejs.org/en/download/package-manager/current). I use version `
|
|
25
|
+
To get started using SynthOS you'll need to first install a recent version of [Node.js](https://nodejs.org/en/download/package-manager/current). I use version `22.20.0` but any version >20 should work.
|
|
10
26
|
|
|
11
27
|
Open a terminal window and run the following commands:
|
|
12
28
|
|
|
@@ -17,55 +33,60 @@ synthos start
|
|
|
17
33
|
|
|
18
34
|
This will install the CLI and start the SynthOS server running. This terminal window needs to stay open to keep the server running. You should see a message saying `SynthOS's server is running on http://localhost:4242`. You can open your browser to that link and you should land on the `settings` page.
|
|
19
35
|
|
|
36
|
+
## Configuring Your Model
|
|
37
|
+
|
|
38
|
+
When the server first runs it's going to show you a settings dialog. You'll need to pick the model you;d like to use and configure it with a developer key.
|
|
39
|
+
|
|
40
|
+
<img width="1885" height="975" alt="image" src="https://github.com/user-attachments/assets/34c662c2-3ea5-421d-bad2-4c98d13c72f3" />
|
|
41
|
+
|
|
42
|
+
For Opus (recomended) you'll want to sign up for a developer account at [Anthropics Developer Platform](https://platform.claude.com/login) You can then generate an API key [here](https://platform.claude.com/settings/keys). For GPT-5.2 you can sign up for an [OpenAI Developer account](https://auth.openai.com/create-account) and then generate an API key [here](https://platform.openai.com/api-keys)
|
|
20
43
|
|
|
21
44
|
## Using SynthOS
|
|
22
45
|
|
|
23
|
-
|
|
46
|
+
Once you've configured your model you will be then sent to the home page. You can then specify any thing you want to create and it will be rendered to the display port.
|
|
47
|
+
|
|
48
|
+
<img width="1882" height="980" alt="image" src="https://github.com/user-attachments/assets/57cb01c7-f060-4dfc-8100-de85d850b104" />
|
|
49
|
+
|
|
50
|
+
You can make as many changes as you want to the app and you have controlls above the chat box that let you save the app to the pages gallery, reset the view port, or navigate to the pages gallery:
|
|
51
|
+
|
|
52
|
+
<img width="542" height="155" alt="image" src="https://github.com/user-attachments/assets/34acf4a0-4dde-4a0f-b766-e5aec46a6496" />
|
|
24
53
|
|
|
25
|
-
|
|
54
|
+
Each saved page is as stand alone HTML page that can be found in a `.synthos` folder in the directory where you started the server, There are system pages which can't be deleted but you can save changes to them and SynthOS will use those over the defaults. If you wish to delete a page/app just delete it from your `.synthos` folder:
|
|
26
55
|
|
|
27
|
-
|
|
56
|
+
<img width="825" height="589" alt="image" src="https://github.com/user-attachments/assets/2e7c8432-24d2-4f49-a608-3207bf1c1cda" />
|
|
28
57
|
|
|
29
|
-
|
|
58
|
+
## Application Templates
|
|
30
59
|
|
|
31
|
-
|
|
60
|
+
There are a set of pre-built application templates that give you a good starting point.
|
|
32
61
|
|
|
33
|
-
|
|
62
|
+
The `[application]` template is great for creating tools:
|
|
34
63
|
|
|
64
|
+
<img width="1891" height="984" alt="image" src="https://github.com/user-attachments/assets/6216c1fc-e1f8-4db8-86d3-d6041cbbf841" />
|
|
35
65
|
|
|
36
|
-
|
|
66
|
+
The `[markdown]` template has a rich built-in markdown viewer:
|
|
37
67
|
|
|
38
|
-
|
|
68
|
+
<img width="1887" height="979" alt="image" src="https://github.com/user-attachments/assets/99828cac-bb95-4de5-85c6-d164b37c8505" />
|
|
39
69
|
|
|
40
|
-
|
|
70
|
+
The `[sidebar]` template allows for rich content that's not markdown based:
|
|
41
71
|
|
|
42
|
-
|
|
43
|
-
- **Pages** - Navigates you to the `pages` page where you can see a listing of all the current pages. You can navigate to a different page from either the `pages` page or by setting the `/{page_name}` directly in your browsers address bar.
|
|
44
|
-
- **Reset** - Restores the current page back to its last save point. The modifications to a page are cached in the servers memory until their either saved using **Save** or the server is restarted. Clicking **Reset** lets you manually roll back changes and, trust me, you will be clicking this a lot.
|
|
72
|
+
<img width="1876" height="976" alt="image" src="https://github.com/user-attachments/assets/0a9ae38b-354f-4709-b92a-b466458aa3ba" />
|
|
45
73
|
|
|
46
|
-
|
|
74
|
+
The `[split-application]` template has two panes with a movable splitter:
|
|
47
75
|
|
|
48
|
-
|
|
76
|
+
<img width="1882" height="975" alt="image" src="https://github.com/user-attachments/assets/770b17c5-e9c3-44d4-8015-5cf401efba26" />
|
|
49
77
|
|
|
50
|
-
|
|
78
|
+
## API Explorer
|
|
51
79
|
|
|
80
|
+
One of the more powerful capabilities of SynthOS is that it has built in APIs for things like storage that you're apps can use to persist data. You can use the API Explorer to test the API's out:
|
|
52
81
|
|
|
53
|
-
|
|
82
|
+
<img width="1882" height="973" alt="image" src="https://github.com/user-attachments/assets/6a1e2823-7313-429c-9b28-79c5687fdef7" />
|
|
54
83
|
|
|
55
|
-
|
|
84
|
+
## Script Editor
|
|
56
85
|
|
|
57
|
-
|
|
58
|
-
Sometimes the LLM will decide to make a change that breaks the entire page. This is when it's useful to know how to manually reset the page to its last save point. From the address bar append a `/reset` to the current address. So `https://localhost:4242/home/reset` will restore the home page back to its starting state.
|
|
86
|
+
You can also create custom scripts that your apps can invoke vi a scripts API:
|
|
59
87
|
|
|
88
|
+
<img width="1889" height="982" alt="image" src="https://github.com/user-attachments/assets/8047d3c3-e5d3-4be8-b403-88169610b3b2" />
|
|
60
89
|
|
|
61
|
-
**Save Often**\
|
|
62
|
-
This goes along with the reset tip. Most things you create are going to take a bit of iteration. You're going to ask the LLM to make a change and it's not going to do exactly what you want or worse break the whole page. Anytime you get something you like save it. Saving is cheap and you can have as many drafts as you want. Just use a naming scheme like `my_app_v2`.
|
|
63
90
|
|
|
64
|
-
**Walk the LLM to a Design Step-by-Step**\
|
|
65
|
-
We're asking the LLM to re-generate an entire page on every request. That's asking a lot. You'll get your best results if you have the model focus on one change at a time (start with layout) and then step your way to a final design, saving anytime you get a result you like.
|
|
66
91
|
|
|
67
|
-
**Leverage the [templates]**\
|
|
68
|
-
Use the provided templates as a starting point for structure or better yet, build your own templates! I'm still figuring this out but it seems like you want to start with defining the pages layout first because the LLM will naturally want to make any changes within the confines of the current layout. Once you get your layout the way you want add in visual elements like input boxes and such. Then once you get everything visually the way you want you can add in behavior like calling API's or saving to storage.
|
|
69
92
|
|
|
70
|
-
**Give the LLM Libraries to Use**\
|
|
71
|
-
If you have a specific JavaScript library you want to use, find the link on a CDN or the web and then tell the LLM to use that specific version and it will.
|