1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
|
# pantograph: a minimal coding agent
```
?+
`?]
]?~
[??
[??
,?]"
'. ??-
1111}}}}}}!'' ???
|(([[[[\[u]]f]]'` {??
1((?]][[)tz)[]?'
]Q?/|)?????v??-??_.
]Ur )))?]?????n??[)Y'_
?]|: `\t-??:
]]] ---
]]] ]?-^
]]]. -?-
']]+ ~]-`
[\] --?
[x] "]?`
{]]I ???
[]? '??l
)Y})}}[+ ?-?
\l//[]???-j]u??- .?-?
^ l\\--??]??]]??_. ???
i|\---?]]}t>.?~
)??]}]]]]f?C?],
I??? `f11]?]]}]n][?[
?fc ^)1]??]?]Y]}}
^??? '{{]
??Y
^]??
]]].
^]]]
]~x'
`]J\
[}[`
`[X[
}}[`
.}}[
/p]`
'1t}
```
A pantograph is a draftsman's instrument: a jointed parallelogram of four
rods, pinned at one end to a fixed pivot. The draftsman moves a stylus over
the original drawing; a pen at the far end of the linkage traces the same
path, scaled. Small movements at the stylus become larger movements at the
pen, in exact proportion, without the draftsman ever having to think about
the ratio. The geometry does the work.
What the tool offers is *controlled leverage*. The operator stays close to
the source — eyes on the original, hand on the stylus — and the mechanism
reproduces that intent at a different scale, faithfully, without slop. The
linkage doesn't make decisions; it amplifies the ones you make.
That is the goal for `pantograph`: a coding agent built as a precise
linkage between operator and model. Your attention stays on the work; the
tool turns small, deliberate movements into larger ones, in proportion, and
adds nothing of its own.
## The shape of it
- **Core in Zig.** One binary, small footprint, fast startup. The agent
loop and nothing else.
- **`libpanto`.** The same loop behind a C ABI, so other programs can
embed it instead of shelling out.
- **Two provider shapes.** Anthropic-shaped and OpenAI-shaped APIs at
arbitrary base URLs. Both work all the way through, or they aren't
shipped.
- **Server mode.** Run as a daemon that speaks those same two API shapes
itself, routing to its configured backends. A small, durable provider
router; the useful slice of something like `omniroute`, without the
memory cost or the fragile bits.
## What is not in the core
A coding agent accumulates features the way a train roof accumulates
ironwork. `pantograph` resists that. The following are deliberately *not*
built in:
- subagents
- MCP
- permission systems
- AGENTS.md automation
- skills
- customizable `/prompts`
- the basic tools — `read`, `write`, `edit`, `bash` — even these ship as
extensions and can be disabled individually
Each of these is a reasonable thing to want. None of them needs to live in
the core.
## Extensions
Extensions are how everything above gets back into the picture, on terms
that don't compromise the rest of the machine.
- **Lua first.** Cheap to embed, quick to iterate in, easy to sandbox.
- **Native next.** A C ABI for shared-object extensions, so anything that
can produce a `.so` — Zig, Rust, C, C++ — can plug in.
- **Crash isolation as a first-class concern.** A bad extension should
not take the host down with it. The standard tools will themselves be
ported to native extensions once that path is solid.
Extensions are how `pantograph` stays small without becoming useless.
## Status
Early. The thinking lives in `ideas.md`; the staged plan lives in
`docs/phase-1.md` through `docs/phase-4.md`. Source is under `src/` for
the CLI and `libpanto/` for the embeddable library.
|