Skip to content
inventivejon edited this page Jun 15, 2019 · 28 revisions

Welcome to the PuttyAI wiki!

Simply continue on the work step where the last person stopped. Feel free to edit whatever you think need to be changed.

The Dream

Intelligent shell that learns from you and others and shares the learned stuff to others. As a side effect it can create tutorials from the commands that were sent.

The name PuttyAI

Is simply a working name. For now I like the meaning of the word putty as something that is somehow sticking everything together.

More detailled Use Cases:

  • Install xyz
  • How much CPUs do I have?
  • #ls -la
  • Show me the folder with most activity
  • What can you do?
  • I need help

Architecture Thoughts:

  • Servers with the learned essence
  • Differentiating between personal content and public shareable content
  • NLP Agent to understand intent
  • In order to support low cpu clients the shell will have an option to act as satellite and leave intent and solution detection to server. This means the client sends all strings to the server and the server sends back solution strings.

NLP Agent for intent

Most NLP agents are written in Python. Therefore the C# Project needs to be able to execute Python code. I will use IronPython for this part. As a first approach I will use DeepPavlov and nlp-intent-toolkit for indent detection.

The Backend

The backend is an ASP.NET Core 2.2 api running on IIS or in docker. It is an interesting possibility to develop the backend based on different technology. For example a Node.JS backend in addition could be interesting.

Network topology of the backend

The final vision is a decentralized or event distributed backend system that exchanges wisdown/experiences based on most need and redundance in the network. But for now it simply will be one running backend you can connect the shell to. It will not connect to other backends or share wisdom. Of course if somebody else has time to develop on the p2p network stack and how to exchange wisdom he is happily invited.

The command structure

Every command is based on intent, subset of other commands and the verification step. Example: Intent: Update everything Subset of commands:

  1. Check linux version
  2. Command update of Register
  3. Command update of software
  4. Check for any questions
    1. Question if software can be updated or installed
    2. Question if bootloader change is ok (with file diff) Verification:
  5. Command update again and verify that no updates are left

The command can be represented as JSON string which would enable a simple RESTfull based API implementation.

Additionally the detection and error correction network is the important step there.

How to avoid abuse:

Szenario 1: An open solution server offers a strategy I need right now. I use the strategy offered but the description the computer thinks he is executing differs from the real code. Result: One could hide security sensitive code and can access my system.

Decisions for the terminal:

Actually this is not limited to terminals. Overtime a connection framework would be better. But as a starting point a simple ssh terminal will work.

Third Party Licenses:

Not used any more third party components: